获取Class对象的方式
Class.forName
public class ClassForName {public static void main(String[] args) throws ClassNotFoundException {Class clazz = Class.forName("java.lang.String");Class studentClass = Class.forName("cn.college.reflect",false,ClassLoader.getSystemClassLoader());//根据类的Module获取类Class stringClazz = Class.forName(String.class.getModule(),"java.lang.String");System.out.print(stringClazz);} }
.class
public class ClassDemo {public static void main(String[] args) {Class clazz = String.class;System.out.println(clazz);} }
getClass()方法
public class GetClassDemo {public static void main(String[] args) {String s = "hello world";Class clazz = s.getClass();System.out.println(clazz);} }
获取构造器
-
Connstructor getConstructor(Class<?>... parameterTypes):返回此Class对象对应类的指定public构造器。
-
Constructor<?>[]getConstructors():返回此Class对象对应类的所有public构造器。
public class getConstructor {public static void main(String[] args) throws NoSuchMethodException {Class clazz = Student.class;//没有Declared只能获取public修饰的构造方法Constructor[] constructors = clazz.getConstructors();//获取指定的public构造器Constructor c = clazz.getConstructor(String.class,int.class);System.out.println(c);} }
-
Constructor<T> getDeclaredConstructor(Class<?>...parameterTypes):返回此Class对象对应类的指定构造器,与构造器的访问权限无关。
-
Constructor<?>[]getDeclaredConstructors():返回此Class对象对应类的所有构造器,与构造器的访问权限无关。
public class getDeclaredConstructorsDemo {public static void main(String[] args) throws NoSuchMethodException { Class clazz = Student.class;Constructor[] constructors = clazz.getDeclaredConstructors();for (Constructor c:constructors) {System.out.println(c);}System.out.println("***********************************");Constructor constructor = clazz.getConstructor(String.class);constructor.setAccessible(false);System.out.println(constructor);} }