泛型与反射

引入泛型的目的

通过泛型使得在编译阶段完成一些类型转换的工作,避免在运行时强制类型转换而出现ClassCastException,即类型转换异常。

优点

在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

1,类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

2,消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

3,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的 JVM 的优化带来可能。由于泛型的实现方式,支持泛型(几乎)不需要 JVM 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。

Java反射机制定义

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

1.通过完整包名和类名获取类的Class对象clazz;
2.通过Class对象clazz获取它的构造函数,属性和方法所对应的Constructor对象,Filed对象和Method对象。【getConstructors()、getMethods()、getFields()】
3.通过Class对象clazz生成类的实例对象obj。【newInstance()】
4.反射调用方法。【Method.invoke(Object obj, Object... args)】

Class clazz = Class.forName("com.yolo.Person");
Constructor constructor = clazz.getConstructor(null);

// 获得与该方法对应的Method对象
Method methodSetName = clazz.getDeclaredMethod("setName", String.class);
Method methodGetName = clazz.getDeclaredMethod("getName");
// 获得与该属性对应的Filed对象
Field field = clazz.getDeclaredField("name");
Field fieldAge = clazz.getDeclaredField("age");

// 实例化Person对象
Person p = (Person) clazz.newInstance();
Person p1 = (Person) constructor.newInstance();

// 调用指定的函数并传递参数
methodSetName.invoke(p, "tracelss");
methodGetName.invoke(p);

// 访问成员变量,如果是基础数据类型,则使用setXXX/getXXX形式的方法,否则直接使用set/get
field.set(p, "xin");
fieldAge.setInt(p, 18);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 场景:存在着两个不同的实体类(ParentEntity、ChildEntity),这两个实体类中都有头像这一个属性...
    junerver阅读 2,600评论 0 5
  • 浮生有缘,广系万里。 相遇在童话里,童心似你,纯真且无暇。 相识在舞台上;偶然邂逅,善心书善缘。 相知在丹麦行;形...
    我是黑板快看我阅读 1,553评论 0 1
  • 连续几天聊了经济学的基本原理,我们不妨做一次经济学家。我提出的问题是,你如何治理北京的堵车和如何看待高速公路节日免...
    叹谁逍遥阅读 1,360评论 0 0
  • 感恩妈妈做可口的饭菜 感恩老公陪我散步 感恩金钱让我买到喜欢的东西 感恩自己每天坚持锻炼 感恩妈妈对我的包容 感恩...
    猫儿猫儿阅读 1,427评论 0 0
  • 我急匆匆地赶在回家的路上。到明天的时候,这个世界马上就会消失了,这是几个月前,科学家宣布这个即将发生的事实时候,全...
    长歌百川阅读 2,454评论 0 4

友情链接更多精彩内容