JAVA反射笔记

Class Student{

public int sum(int a, int b, int c){

return a+b+c < 20 ? 20 : a+b+c;

}

public String sum(String a, String b, String c){

return a+b+c < 20 ? 20 + ""(a+b+c) + "";

}

}


1.获取类类型(获取class类对象)的方法

1)通过类名: Class c1 = Student.class;

2)通过对象: Class c2 = student.getclass()

3)通过类的全称: Class c3Class.forName("com.Student");

其中 c1 = c2 = c3

2.通过类类型获取该类的对象

Student student = (Student ) c1.newInstance();

3.class类的api

1)Method[] publicMethods = c1.getMehods(); 类的所有public方法

2)Method[] declaredMethods = c1.getDeclaredMehods(); 该类声明的所有方法

3)Field[] publicFields = c1.getFields(); 类的所有public field

4)Field[] declaredFields = c1.getDeclaredFields(); 该类声明的所有field

5)Constructor[] publicConstructors = c1.getConstructors(); 类的所有public Constructor

6)Constructor[] declaredConstructors = c1.getDeclaredConstructors(); 该类声明的所有Constructor

4.方法的反射

Method method = c1.getMethod("sum", new Class[]{int.class, int.class, int.class});

method.invoke(c1, new int[]{10, 20, 30});






总结

1.类是java.lang.Class的对象,有三种方法可以拿到类的类类型。经常使用的是Class.forName或者对象.getClass()。
2.new方法是编译期静态加载对象,需要保证编译时对象就存在且正确。使用类的类类型来加载对象是动态加载对象,运行时正确即可。
3.通过反射可以调用类的方法,哪怕是private的方法,从而修改一些默认的行为。






总结

1.类是java.lang.Class的对象,有三种方法可以拿到类的类类型。经常使用的是Class.forName或者对象.getClass()。
2.new方法是编译期静态加载对象,需要保证编译时对象就存在且正确。使用类的类类型来加载对象是动态加载对象,运行时正确即可。
3.通过反射可以调用类的方法,哪怕是private的方法,从而修改一些默认的行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值