Reflections中的getDeclared**与get**的区别
来源:互联网 发布:mac照片图库文件夹 编辑:程序博客网 时间:2024/05/17 22:56
Java.lang.Class中有关getDeclared**和get**的方法以getDeclaredMethods和getMethods为例说明:
getDeclaredMethod(s):返回自身类的所有公用(public)方法包括私有(private)方法,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何方法,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。
类初始化方法 <Constructor> 不包含在返回数组中。如果该类声明带有相同参数类型的多个公共成员方法,则它们都包含在返回的数组中。
getMethod(s):返回某个类的所有公用(public)方法包括其继承类的公用方法,当然也包括它所实现接口的方法。这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。
数组类返回从 Object 类继承的所有(公共)member 方法。
返回数组中的元素没有排序,也没有任何特定的顺序。如果此 Class 对象表示没有公共成员方法的类或接口,或者表示一个基本类型或 void,则此方法返回长度为 0 的数组。
总之:getDeclaredMethods的关键词是:自身,所有方法,不继承而getMethods的关键词是public 继承
getDeclaredField(s)和getField(s)同上。
getDeclaredAnnotation(s):返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。
getAnnotation(s):返回此元素上存在的所有注释。(如果此元素没有注释,则返回长度为零的数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。
getDeclaredAnnotations得到的是当前成员所有的注释,不包括继承的。而getAnnotations得到的是包括继承的所有注释。
关键在于继承的问题上,getDeclaredAnnotations和getAnnotations是否相同,就在于父类的注解是否可继承,这可以用sun.reflect.annotation.AnnotationType antype3=AnnotationType.getInstance(Class.forName(annotationtype_class(example:"javax.ejb.Stateful")).isInherited())来判定,如果为true,说明可以被继承则存在与getAnnotations之中而不在getDeclaredAnnotations之中,否则,也不存在与getannnotations中,因为不能被继承。
- Reflections中的getDeclared**与get**的区别
- Reflections中的getDeclared**与get**的区别
- Class类中的getEnclosing*、getDeclared*与getDeclaringClass的区别
- Class类中的getEnclosing*、getDeclared*与getDeclaringClass的区别
- getDeclared××× 方法和 get××× 方法的区别
- Java getDeclared××× 方法和 get××× 方法的区别
- JSP中的POST与GET的区别.
- HIbernate中的load与get的区别
- hibernate 中的get与load的区别
- post与get在ashx中的取值的区别
- Express中的app.use与app.get的区别
- Reflections
- Reflections
- load 与get 在hibernate中的区别
- Ajax中的get与post方式区别
- HTTP中的Get与Post区别
- Get与Post的区别
- get与post的区别()
- IBInspectable和IBDesignable
- 最长串问题
- Bootstrap网页基础学习
- 【算法】String To Integer
- JAVA_最大公约数与最小公倍数
- Reflections中的getDeclared**与get**的区别
- Fighting_小银考呀考不过四级 递推
- Dubbo-入门指南+实例
- B-2
- 【知识整理】Hibernate-HQL查询之分页查询、投影查询、报表查询
- Retrofit解析网页Json数据简单实例
- JAVA_哥德巴赫猜想的证明
- Java I/O学习之三:打印流和序列流
- JAVA_ 求三个整数的最大值(split()用法)