java中Class<?>和*.class有什么不同?

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

还有一个,类名后面可以加后缀 .class 和 .this 请问 Aclass.this 这个表达式又是什么意思???
展开
 我来答
axblunt
2010-04-01 · TA获得超过466个赞
知道答主
回答量:93
采纳率:0%
帮助的人:152万
展开全部
第一个问题,可以这么理解:Class<Aclass> 是一个类型,Aclass.class是一个实例对象
因此:Class<Aclass> a = Aclass.class;
对比:String str = "this is a string";
可以看出Class<Aclass> 相当于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();
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式