java中Class和*.class有什么不同?比如我有一个类:名为Aclass.请问,Class 和 Aclass.class 这两个表达式有什么不同?还有一个,类名后面可以加后缀 .class 和 .this 请问 Aclass.this
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/28 15:00:00
![java中Class和*.class有什么不同?比如我有一个类:名为Aclass.请问,Class 和 Aclass.class 这两个表达式有什么不同?还有一个,类名后面可以加后缀 .class 和 .this 请问 Aclass.this](/uploads/image/z/10580252-68-2.jpg?t=java%E4%B8%ADClass%E5%92%8C%2A.class%E6%9C%89%E4%BB%80%E4%B9%88%E4%B8%8D%E5%90%8C%3F%E6%AF%94%E5%A6%82%E6%88%91%E6%9C%89%E4%B8%80%E4%B8%AA%E7%B1%BB%EF%BC%9A%E5%90%8D%E4%B8%BAAclass.%E8%AF%B7%E9%97%AE%2CClass+%E5%92%8C+Aclass.class+%E8%BF%99%E4%B8%A4%E4%B8%AA%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%9C%89%E4%BB%80%E4%B9%88%E4%B8%8D%E5%90%8C%3F%E8%BF%98%E6%9C%89%E4%B8%80%E4%B8%AA%2C%E7%B1%BB%E5%90%8D%E5%90%8E%E9%9D%A2%E5%8F%AF%E4%BB%A5%E5%8A%A0%E5%90%8E%E7%BC%80+.class+%E5%92%8C+.this+%E8%AF%B7%E9%97%AE+Aclass.this)
java中Class和*.class有什么不同?比如我有一个类:名为Aclass.请问,Class 和 Aclass.class 这两个表达式有什么不同?还有一个,类名后面可以加后缀 .class 和 .this 请问 Aclass.this
java中Class和*.class有什么不同?
比如我有一个类:名为Aclass.
请问,Class 和 Aclass.class 这两个表达式有什么不同?
还有一个,类名后面可以加后缀 .class 和 .this 请问 Aclass.this
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();
}
}