反射0924

概念
在Java中,可以在运行期动态载入、探知和使用编译期完全未知的类。java在运行期去动态的地载入一个只知道类的全限定名的类,并且获取其完整的数据结构【运行时数据】,还可以参照这个完整的数据结构,我们拥有创建类的实例,以及访问类型的属性,访问类的方法的能力,我们把这种能力,也成为自省,自审,内省
核心
Class类,准动态的,java语言不是动态的,反射是动态性的体现
使用反射查看类信息
第一种方式:在编译期不知道类名,但是在运行期可以获得该类名的时候,使用Class类的forName()静态方法可以获得Class对象
第二种方式:如果在编译期知道类名的情况,可以调用该类的class属性来获得该类对象的Class对象 类.class
第三种方式:如果一个类的实例对象已经得到,则调用该对象的getClass()方法返回该对象所属类对应的Class对象。getClass()方法是java.lang.Object类的方法之一,所以所有对象都可以调用该方法
在Class类中,通过getFields()、getMethods()、GetConstructors()方法,可以获得Class所含的类的public属性、public方法和public构造器,而通过getDeclaredFields()、getDeclaredMethods()、GetDeclaredConstructors()方法,可以获得Class所包含的类的所有属性、方法和构造器信息
在java中,对象实际上代表现实生活中的数据。或者是数据的表示;类的对象也同理(Class对象,代表方法区中的“类的数据结合”)实际上,类的相关结构信息也被存储在Class对象中,只是Class对象不像其他类的对象,直接存储数据,但是他却不是,他更像类的镜子,可以通过他去间接的访问方法区的类数据
概念:JDK1.5后提供的一种和类,接口,数组等地位平等的一种新特性
注释可以应用在一下的元素中:包,类,属性,方法,形参列表…上
第一个跟common一样,对元素进行注释说明
主要作用
第一个跟common一样,对元素进行注释说明
跟其他的第三方,达成一定的共识,或者达成一定的约定,比如:@Override注释就是跟我们的编译器达成一个共识,由此注释注解的元素必须是一个重新实现的方法
常见注解
JDK的内置注解
@Override 表示当前方法覆盖了父类的方法
@Deprecation 表示方法已经过时,方法上有横线,使用时会有警告
@SuppviseWarnings 表示关闭一些警告信息(通知java编译器忽略特定的编译警告)

猜你喜欢

转载自blog.csdn.net/qq_43039100/article/details/82829220
今日推荐