获取Class对象的方法?
getClass .class Class.forName(); ClassLoader
native:本地的源码就到头了,再往下走:就不是java代码
在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中:
Class类:代表一个类。
Field 类:代表类的成员变量(成员变量也称为类的属性)。
Method类:代表类的方法。
Modifier类:代表修饰符。
lConstructor 类:代表类的构造方法。
Array类:提供了动态创建数组,以及访问数组的元素的静态方法。
obj.getClass();
class属性
Class.forName();
ClassLoader
Demo1 获取类对象的四种方式
`package demo1; public class Demo1 { /** * @param args * @throws ClassNotFoundException */ public static void main(String[] args) throws ClassNotFoundException { //得到Class类对象的四种方法 //1. Object obj = new String(); Class clz1 = obj.getClass(); //2. Class clz2 = String.class; //3. Class clz3 = Class.forName("java.lang.String"); //4. ClassLoader cl = ClassLoader.getSystemClassLoader(); Class clz4 = cl.loadClass("java.util.ArrayList"); } }
在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中:
Class类:代表一个类。
Field 类:代表类的成员变量(成员变量也称为类的属性)。
Method类:代表类的方法。
Modifier类:代表修饰符。
Constructor 类:代表类的构造方法。
Array类:提供了动态创建数组,以及访问数组的元素的静态方法。
反射Student类的所有构造方法
package demo2; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; public class Demo2 { /** * @param args * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws InstantiationException * @throws IllegalArgumentException */ public static void main(String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException { // 反射String类的所有构造方法 Class clz = Student.class; System.out.println("所有构造方法"); // Constructor[] cons = clz.getConstructors(); Constructor[] cons = clz.getDeclaredConstructors(); for (Constructor con : cons) { // System.out.println("访问修饰权限:" + // Modifier.toString(con.getModifiers())); // System.out.println("方法名:" + con.getName()); // System.out.println("****************************"); System.out.println(Modifier.toString(con.getModifiers()) + " " + con.getName()); } //找无参的构造方法 Student s = new Student(); Constructor con = clz.getDeclaredConstructor(); Object obj = con.newInstance(); System.out.println(obj); //找带string,int类型参数的构造方法 Student s = new Student("zhangsan",12) con = clz.getDeclaredConstructor(String.class, int.class); obj = con.newInstance("zhangsan", 12); System.out.println(obj); con = clz.getDeclaredConstructor(String.class); } }
虽然以上都是从老邓的代码心得复制过来的,因为我实在不知道写什么了,学得一知半解,理解的也不全面,只能到处移植。
我本来是不打算学这个java的,其实也从来没想过学有关计算机这方面的,可无奈一波三折,误打误撞就到了这里。
没什么好说的,我这个人生无大志,不说碌碌无为也但求无过,既然来到了世上就好好走一趟。