“类名.this” 与 “类名.class”

类名.this

“类名.this”的语法在Java语言中叫做“qualified this”。相关规定在这里:Chapter 15. Expressions - Qualified this这个语法的主要用途是:在内部类的方法中,要指定某个嵌套层次的外围类的“this”引用时,使用“外围类名.this”语法。例如说:

class Foo {
  class Bar {
    Foo getFoo() {
      return Foo.this;
    }
  }
}

在Foo.Bar类中的getFoo()方法中,如果直接写“this”的话所指的是这个Foo.Bar类的实例,而如果要指定外围的Foo类的this实例的话,这里就得写成Foo.this。特别的,如果在上例的getFoo()方法中写Bar.this的话,作用就跟直接写this一样,指定的是当前的Foo.Bar类实例。

类名.class

我们知道在java中,一个类在被加载的时候虚拟机就会自动的生成一个这个类的一个Class类型的“类对象”,每个类都对应着一个这样的类对象,通过这个Class类型的类对象,我们就能够使用“内省与反射”机制,访问一个类的信息,比如:对应类中的方法有哪些,成员域有哪些等等;获取一个类的“类对象”的方法之一就是通过使用 类名.class 这个方式返回一个Class类型的对象,其他的获取这个Class对象的方法如下:

  1. 利用对象调用getClass()方法获取该对象的Class实例
  2. 使用Class的静态方法forName(),用类的名字获取一个Class实例
  3. 运用.calss的方式获取Class实例,对基本数据类型的封装类,还可以采用.TYPE来获取对应的基本数据类型的Class实例。

自已的理解(不知道对不对):
就相当于如果需要实例化这个类时,所需要的信息都包括在里面,有函数啊,变量有几个啊,什么的。


猜你喜欢

转载自blog.csdn.net/qwq1503/article/details/88915624