java反射机制主要提供了哪些功能?有哪些优缺点?

java反射被视为动态语言的关键,它可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,那java反射机制主要提供了哪些功能?下面来我们就来给大家讲解一下。

1、在运行时判断任意一个对象所属的类;

2、在运行时构造任意一个类的对象;

3、在运行时判断任意一个类所具有的成员变量和方法;

4、在运行时调用任意一个对象的方法;

5、生成动态代理;

得到该对象所属的类:

Class ownerClass = owner.getClass()

在运行时构造一个类的对象:

Class newoneClass = Class.forName(className):第一步,得到要构造的实例的Class。

Constructor cons = newoneClass.getConstructor(argsClass):得到构造器。

cons.newInstance(args):新建实例。

在运行时判断一个类所具有的成员变量和方法:

Class ownerClass = owner.getClass():得到该对象的Class。

Field field = ownerClass.getField(fieldName):通过Class得到类声明的属性。

Object property = field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报IllegalAccessException。

在运行时调用一个对象的方法:

Method method = ownerClass.getMethod(methodName, argsClass):通过Method名和参数的Class数组得到要执行的Method。

method.invoke(owner, args):执行该Method,invoke方法的参数是执行这个方法的对象,和参数数组。

返回值是Object,也既是该方法的返回值。

有哪些优缺点?

1、优点:

在运行时获得类的各种内容,进行反编译,对于Java这种先编译再运行的语言,能够让我们很方便的创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代码的链接,更加容易实现面向对象。

2、缺点:

(1)反射会消耗一定的系统资源,因此,如果不需要动态地创建一个对象,那么就不需要用反射;

(2)反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题。

尽管反射机制有优点,在开发中带来极大的灵活性,不过反射机制也不能滥用,毕竟还是有一定的缺点的!最后大家如果想要了解更多java入门知识,敬请关注奇Q工具网。

推荐阅读:

mybatis怎么执行sql?mybatis执行sql的方法

json格式在电脑不显示怎么办?在JS中如何使用JSON?

java内存溢出怎么定位?如何解决java内存溢出?