1 /* 2 * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.jdi; 27 28 /** 29 * Provides information on the accessibility of a type or type component. 30 * Mirrors for program elements which allow an 31 * an access specifier (private, protected, public) provide information 32 * on that part of the declaration through this interface. 33 * 34 * @author Robert Field 35 * @author Gordon Hirsch 36 * @author James McIlree 37 * @since 1.3 38 */ 39 @jdk.Exported 40 public interface Accessible { 41 42 /** 43 * Returns the Java<sup><font size=-2>TM</font></sup> 44 * programming language modifiers, encoded in an integer. 45 * <p> 46 * The modifier encodings are defined in 47 * <cite>The Java™ Virtual Machine Specification</cite> 48 * in the <code>access_flag</code> tables for classes(section 4.1), fields(section 4.5), and methods(section 4.6). 49 */ 50 public int modifiers(); 51 52 /** 53 * Determines if this object mirrors a private item. 54 * For {@link ArrayType}, the return value depends on the 55 * array component type. For primitive arrays the return value 56 * is always false. For object arrays, the return value is the 57 * same as would be returned for the component type. 58 * For primitive classes, such as {@link java.lang.Integer#TYPE}, 59 * the return value is always false. 60 * 61 * @return <code>true</code> for items with private access; 62 * <code>false</code> otherwise. 63 */ 64 boolean isPrivate(); 65 66 /** 67 * Determines if this object mirrors a package private item. 68 * A package private item is declared with no access specifier. 69 * For {@link ArrayType}, the return value depends on the 70 * array component type. For primitive arrays the return value 71 * is always false. For object arrays, the return value is the 72 * same as would be returned for the component type. 73 * For primitive classes, such as {@link java.lang.Integer#TYPE}, 74 * the return value is always false. 75 * 76 * @return <code>true</code> for items with package private access; 77 * <code>false</code> otherwise. 78 */ 79 boolean isPackagePrivate(); 80 81 /** 82 * Determines if this object mirrors a protected item. 83 * For {@link ArrayType}, the return value depends on the 84 * array component type. For primitive arrays the return value 85 * is always false. For object arrays, the return value is the 86 * same as would be returned for the component type. 87 * For primitive classes, such as {@link java.lang.Integer#TYPE}, 88 * the return value is always false. 89 * 90 * @return <code>true</code> for items with private access; 91 * <code>false</code> otherwise. 92 */ 93 boolean isProtected(); 94 95 /** 96 * Determines if this object mirrors a public item. 97 * For {@link ArrayType}, the return value depends on the 98 * array component type. For primitive arrays the return value 99 * is always true. For object arrays, the return value is the 100 * same as would be returned for the component type. 101 * For primitive classes, such as {@link java.lang.Integer#TYPE}, 102 * the return value is always true. 103 * 104 * @return <code>true</code> for items with public access; 105 * <code>false</code> otherwise. 106 */ 107 boolean isPublic(); 108 }