课程名称:课程名称:反射——Java高级开发必须懂的
课程章节:Class类的使用
主讲老师:Cedar
课程内容:方法的反射, java中的去泛型功能
- 确定方法的方式。
- 通过 Method 类中的 invoke() 方法调用对象类中的方法。
- 了解编译去泛型化功能。
课程收获
- 确定一个方法,是通过方法签名确定的,即方法名称和参数不同能够确定一个方法。
方法的反射实现
//保存失败,浪费了我两个小时,明天补上
去泛型化的实现
public class Test2 {
public static void main(String[] args) {
ArrayList list1 = new ArrayList();
ArrayList<String> list2 = new ArrayList<>();
System.out.println(list1 == list2); //false
System.out.println(list1.equals(list2));//true
Class<? extends ArrayList> aClass1= list1.getClass();
Class<? extends ArrayList> aClass2 = list2.getClass();
//通过反射获取的Class类型的对象是相等的
System.out.println(aClass1 == aClass2); //true
System.out.println(aClass1.equals(aClass2)); //true
//list1.add("字符串");
//list1.add(100);
list2.add("字符串");
//list2.add(100);//编译报错,无法添加其他类型
//通过反射绕过编译,添加其他类型的内容。
try {
/* aClass1和aClass2获取的方法是一样的。
* 能够添加成功,表明在编译过后会去泛型化
*/
//Method method2 = aClass1.getMethod("add", Object.class);
Method method2 = aClass2.getMethod("add", Object.class);
method2.invoke(list2, 100);
System.out.println(list2); //[字符串, 100, 100]
} catch (Exception e) {
e.printStackTrace();
}
}
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦