【class a】java中Class和*.class有什么不同?比如我有一个类:名....

发布时间:2021-04-03 21:26:03

java中Class和*.class有什么不同?比如我有一个类:名为Aclass.请问,Class 和 Aclass.class 这两个表达式有什么不同?还有一个,类名后面可以加后缀 .class 和 .this 请问 Aclass.this

网友回答

【答案】 第一个问题,可以这么理Class 是一个类型,Aclass.class是一个实例对象
  因此:Class a = Aclass.class;
  对比:String str = this is a string;
  可以看出Class 相当于String,而 Aclass.class相当于具体的对象this is a string.
  第二个问题:Aclass.this其实就是this,不过语法更强,一般用不上,但在某些场合需要强指定this的语义的时候就非用不可.比如在类嵌套的时候.
  下面就是这样一个例子:Aclass 内部又有个嵌套类定义 Bclass,当在Bclass::funB方法中使用想使用Aclass的方法时,就需要强指定Aclass.this.所以 funB()中的this实际指向的是Bclass的实例,而Aclass.this实际指到了Aclass的实例.具体代码如下
  public class Aclass {
   class Bclass{
   public void test(){
   System.out.println(fun in b);
   }
   public void funB(){
   Aclass.this.test(); // 输出:fun in a
   this.test(); // 输出:fun in b
   }
  
   }
  
   public void funA(){
   Bclass b = new Bclass();
   b.funB();
  
   }
   public void test(){
   System.out.println(fun in a);
  
   }
  
   public static void main(String[] args) {
   Aclass a = new Aclass();
   a.funA();
   }
  
  }
以上问题属网友观点,不代表本站立场,仅供参考!