首页 > 试题广场 >

请你说一下Java的反射,你目前主要用他做什么,以及Java

[问答题]

请你说一下Java的反射,你目前主要用他做什么,以及Java的泛型,他的主要作用是什么

Java的反射机制主要是用来分析类能力,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。在程序中一般的对象类型在编译期就确认下来了,Java的反射机制可以在运行期动态创建对象,并调用其属性。所以反射的核心是在运行期才动态加载类或调用方法访问属性,它不需要在事先知道运行对象是谁。
反射可以用来:

  • 运行期构造任意一个类的对象
  • 运行期判断任意一个对象的所属类/是否是某个类的实例
  • 运行期获得任意一个类具有的属性和方法,包括继承的公有方法
  • 运行期调用任意一个对象的方法

泛型是一种参数化类型,就像调用一个有参方法时,输入的参数一样,泛型是将类作为参数,这种参数可以用在类、接口和方法中,分别被称为泛型类泛型接口泛型方法。泛型最经典的使用就是在集合类比如ArrayList、HashMap的使用。
泛型的好处:

  • 类型安全
    通过使用泛型,在开发时,会对这个类型进行校验,比如new ArrayList<Integer>(),这样就会对放入List的数据进行校验,其他类型的数据无法插入,保证了类型的安全
  • 消除强制类型转换
    如果没有泛型,传入集合的数据按照一个个Object存储,那么它可以被强制转换成其他类型,直到真正使用时才发现。
  • 简化代码
    如果没有泛型,集合类里面的编写可能需要为每一个数据类型创建一个属性值,明显是不可取的。

泛型的规则:

  • 泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
  • 同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
  • 泛型的类型参数可以有多个,比如HashMap<Key, Value>。
  • 泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。
  • 泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(Java.lang.String);
发表于 2019-03-27 14:08:36 回复(0)