继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【学习打卡】第3天 Java反射

两只角的蜗牛
关注TA
已关注
手记 25
粉丝 2
获赞 4

课程名称:课程名称:反射——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();
        }
    }
}


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP