为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

课程名称:课程名称:反射——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 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消