Spec-Zone .ru
спецификации, руководства, описания, API
|
Точка входа для всех отражательных операций java.lang.Class
. За исключением java.lang.reflect.ReflectPermission
java.lang.reflect
Class
Class
Class
Если экземпляр объекта доступен, то самый простой способ получить Class
Object.getClass()
Object
Class c = "foo".getClass();
Class c = System.console().getClass();
Есть уникальная консоль, связанная с виртуальной машиной, которая возвращается static
метод System.console()
getClass()
Class
java.io.Console
enum E { A, B } Class c = A.getClass();
A
экземпляр перечисления E
; таким образом getClass()
Class
E
.
byte[] bytes = new byte[1024]; Class c = bytes.getClass();
Так как массивы Objects
getClass()
Class
byte
.
import java.util.HashSet; import java.util.Set; Set<String> s = new HashSet<String>(); Class c = s.getClass();
В этом случае, java.util.Set
java.util.HashSet
getClass()
java.util.HashSet
Если тип доступен, но нет никакого экземпляра тогда, возможно получить a Class
".class"
к имени типа. Это - также самый легкий способ получить Class
boolean b; Class c = b.getClass(); // compile-time error Class c = boolean.class; // correct
Отметьте что оператор boolean.getClass()
произвел бы ошибку времени компиляции потому что a boolean
тип примитива и не может быть разыменован. .class
синтаксис возвращается Class
boolean
.
Class c = java.io.PrintStream.class;
Переменная c
будет Class
java.io.PrintStream
Class c = int[][][].class;
.class
синтаксис может использоваться, чтобы получить a Class
Если полностью определенное имя class доступно, возможно получить соответствие Class
Class.forName()
Class.getName()
Class c = Class.forName("com.duke.MyLocaleServiceProvider");
Этот оператор создаст class из данного полностью определенного имени.
Class cDoubleArray = Class.forName("[D"); Class cStringArray = Class.forName("[[Ljava.lang.String;");
Переменная cDoubleArray
будет содержать Class
double
(то есть то же самое как double[].class
). cStringArray
переменная будет содержать Class
String
String[][].class
).
.class
синтаксис является более удобным и привилегированным способом получить Class
Class
void
имеет обертку class в java.lang
TYPE
который равен Class
Class c = Double.TYPE;
Есть class java.lang.Double
double
всякий раз, когда Object
Double.TYPE
double.class
.
Class c = Void.TYPE;
Void.TYPE
void.class
.
Есть несколько API Reflection, которые возвращают классы, но к ним можно только получить доступ если a Class
Class.getSuperclass()
Class c = javax.swing.JButton.class.getSuperclass();
javax.swing.JButton
javax.swing.AbstractButton
Class.getClasses()
Class<?>[] c = Character.class.getClasses();
Character
Character.Subset
Character.UnicodeBlock
Class.getDeclaredClasses()
Class<?>[] c = Character.class.getDeclaredClasses();
Character
Character.Subset
Character.UnicodeBlock
Character.CharacterCache
.Class.getDeclaringClass()
java.lang.reflect.Field.getDeclaringClass()
java.lang.reflect.Method.getDeclaringClass()
java.lang.reflect.Constructor.getDeclaringClass()
Class
import java.lang.reflect.Field; Field f = System.class.getField("out"); Class c = f.getDeclaringClass();
out
System
public class MyClass { static Object o = new Object() { public void m() {} }; static Class<c> = o.getClass().getEnclosingClass(); }
o
null
.Class.getEnclosingClass()
Class c = Thread.State.class().getEnclosingClass();
Thread.State
Thread
public class MyClass { static Object o = new Object() { public void m() {} }; static Class<c> = o.getClass().getEnclosingClass(); }
o
включают MyClass
.