Class类中的getEnclosing*、getDeclared*与getDeclaringClass的区别

一、getEnclosing*  当前类在……中闭合

 Class<?> getEnclosingClass()
          返回底层类的立即封闭类。
 Constructor<?> getEnclosingConstructor()

如果该 Class 对象表示构造方法中的一个本地或匿名类,则返回 Constructor
对象,它表示底层类的立即封闭构造方法。

 Method getEnclosingMethod()

如果此 Class 对象表示某一方法中的一个本地或匿名类,则返回 Method
对象,它表示底层类的立即封闭方法。

1、getEnclosingClass(): 返回一个类,当前类在中这个类中定义,不一定是成员内部类

比如:直接定义的内部类或匿名内部类

2、getEnclosingConstructor():返回构造方法,当前类是在这个构造函数中定义

比如:构造方法中定义的匿名内部类

3、getEnclosingMethod():返回方法,当前类是在这个方法中定义

比如:方法中定义的匿名内部类

二、getDeclaringClass  当前类声明在某类中

getDeclaringClass() :返回一个类,当前类定义在这个类作为成员

三、getDeclared*  当前类声明了……

 Annotation[] getDeclaredAnnotations()
          返回直接存在于此元素上的所有注释。
 Class<?>[] getDeclaredClasses()

返回 Class 对象的一个数组,这些对象反映声明为此 Class
对象所表示的类的成员的所有类和接口。

 Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

返回一个 Constructor 对象,该对象反映此 Class
对象所表示的类或接口的指定构造方法。

 Constructor<?>[] getDeclaredConstructors()

返回 Constructor 对象的一个数组,这些对象反映此 Class
对象表示的类声明的所有构造方法。

 Field getDeclaredField(String name)

返回一个 Field 对象,该对象反映此 Class
对象所表示的类或接口的指定已声明字段。

 Field[] getDeclaredFields()

返回 Field 对象的一个数组,这些对象反映此 Class
对象所表示的类或接口所声明的所有字段。

 Method getDeclaredMethod(String name, Class<?>... parameterTypes)

返回一个 Method 对象,该对象反映此 Class
对象所表示的类或接口的指定已声明方法。

 Method[] getDeclaredMethods()

返回 Method 对象的一个数组,这些对象反映此 Class
对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。

返回当前类中的成员。

比如:当前类中定义的成员内部类或接口、构造函数、成员变量、方法、注解。

时间: 2024-08-28 08:20:47

Class类中的getEnclosing*、getDeclared*与getDeclaringClass的区别的相关文章

C++类中静态变量和普通变量的区别

静态变量: 1.静态变量会被编到程序的exe里面,从程序启动到结束,它一直存在: 2.静态变量的初始化值为0: 3.全局变量默认是静态变量: 4.在类中的函数变量前面加了static的也是静态变量,只不过被语言限定在只能在函数内部使用: 5.在有MFC对话框的程序了,如果一个变量和对话框绑定,那么该变量就不能声明为静态变量,函数也是一样的,因为声明为静态变量后不能随时接受对话框内的值,    主要是因为静态变量的值设置后是不能被修改的: 6.可以使用类名+静态成员名访问此静态成员,因为静态成员存

php类中静态变量与常亮的区别

在效率上:常量编译过程比静态变量快的多. 代码: <?php error_reporting(E_ALL); class A { const c = 9; public static $b = 5; public function setst ($ca) { self::$b = $ca; } } $obj = new A; echo $obj->c;//出错,是类的属性,不是对象的属性 echo $obj->$b;//出错,是类的属性,不是对象的属性 echo $obj::c;//ok

类语法规则与类中的函数

类语法 1.关键字class 2.class 类名 类名中不要写括号 3.类名规范:字母.数字.下划线组成,不能以数字开头:驼峰命名法,每个单词首字母大写 4.类属性:放在类中的变量值 调用属性:实例.属性名 5.类方法:类中的函数 调用方法:实例.方法名()---针对实例方法 类属性和类方法都不是类中必须的结构,但是一般都会有,这是类存在的意义 6.类里面的方法分3种: 1)实例方法:这个方法只能实例来调用 必须带有self参数; 括号里的self指的是实例本身,调用该函数时会自动传入实例;

跟王老师学反射(四):Class类:从Class类中获取信息

跟王老师学反射(四)Class类:从Class类中获取信息 主讲教师:王少华   QQ群号:483773664 学习内容 获得class类中的信息 根据我们以前学过的一个Java类有以下几部组成,如下代码所示 一.访问Class对应的类所包含的构造方法 (一)public Constructor<T> getConstructor(Class<?>... parameterTypes) 返回此Class对象所表示的类的指定public构造方法. parameterTypes参数是按

静态修饰符static,类中的常量定义修饰符

static可以用来区分成员变量.方法是属于类本身还是属于类实例化后的对象.有static修饰的成员属于类本身,没有static修饰的成员属于类的实例. 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失static是一个修饰符,用于修饰成员(成员变量和成员函数)静态成员随着类的加载而加载.静态成员优先于对象存在.静态成员被所有对象所共享静态成员多了一个中调用方式,可以被类名直接调用.静态的优缺点优点: 静态成员多了一种调用方式.可以直接被类名调用 格式 :类名.静态成员.也

检测某个方法是否属于某个类中--解析php函数method_exists()与is_callable()的区别

php函数method_exists() 与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有 method_exists()和is_callable() 相比之下,is_callable()函数要高级一些,它接受字符串变量形式的方法名作为 第一个参数,如果类方法存在并且可以调用,则返回true.如果要检测类中的方法是否能被调用,可以给函数传递一个数组而不是类的方法名作为参数.数组必须包含对象或类名,以将其作

servlet类中ServletConfig及ServletContext

在一个继承了servlet接口的类中: ServletConfig: 代表:代表了以了一个servlet标签 <servlet> <servlet-name>AServlet</servlet-name> <servlet-class>com.neuedu.path.AServlet</servlet-class> </servlet> 获取:在init方法的参数中. 作用: 获取servlet的名字(web.xml 中的对应的ser

Static在类中的作用

static 在类内用于定义静态成员.静态成员与具体的类无关,它的值及作用范围适用于所有的类,当它的值发生改变时,在所有的类中的值都会发生变化.并且,类内的Static成员,应在类外重新定义一次. 类的静态成员一般不应该在类内初始化.如初始化,必须使用constexpr进行修饰,成为一个常量. constexpr的作用是修饰一个常量,并在编译期检查一个表达式是否是常量表达式.

增强一个Java类中的某个方法的几种方式

      * 一种方式:继承的方式.  * 能够控制这个类的构造的时候,才可以使用继承. Connection是一个接口,实现类不确定(由各厂商提供),无法使用此方法     * 二种方式:装饰者模式方式.         * 包装对象和被包装的对象都要实现相同的接口.         * 包装的对象中需要获得到被包装对象的引用.         ***** 缺点:如果接口的方法比较多,增强其中的某个方法.其他的功能的方法需要原有调用.     * 三种方式:动态代理的方式.