【class a】java中Class和*.class有什么不同?比如我有一个类:名....
答案:2 悬赏:60 手机版
解决时间 2021-02-22 11:52
- 提问者网友:王者佥
- 2021-02-21 11:27
【class a】java中Class和*.class有什么不同?比如我有一个类:名....
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-02-21 13:01
【答案】 第一个问题,可以这么理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();
}
}
因此: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();
}
}
全部回答
- 1楼网友:持酒劝斜阳
- 2021-02-21 14:11
我也是这个答案
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯