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

比如我有一个类:名为Aclass。
请问,Class<Aclass> 和 Aclass.class 这两个表达式有什么不同?

还有一个,类名后面可以加后缀 .class 和 .this 请问 Aclass.this 这个表达式又是什么意思???

第1个回答  2010-04-01
第一个问题,可以这么理解: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();
}

}本回答被提问者采纳

java中Class<?>和*.class有什么不同?
第一个问题,可以这么理解: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其实就...

java中class<t>和class<?>还有class之间有什么区别?
Class的是类型上的存在量词 ∃,表示至少存在一种类型使条件成立。在Java中,由于存在子类型的概念,这个存在类型可以指定上界或下界。许多人常将其误认为是协变逆变,实际上这是两个不同的概念。Class这个术语源于Java泛型实现中的raw type,这是一种历史遗留问题,新代码应尽量避免使用。若想深入...

java中 class和class有什么区别吗
public class:是JAVA定义的,一般占到编程的角度来将就是包含main方法的,一个java文件中只有一个public class,而且public class的文件名要跟.java的文件名一致。class:在Java编程是描述对象的,也就是类。提示:Java编程就这么定义的,记住就行了,没什么特殊的含义。

java中class和class有什么区别
Class 是java JDK提供的一个类,完整路径为 java.lang.Class;区别是指两个或两个以上的事物间的不同,当两种相似的事物作比较时,它们的不同点便是区别。那么 class和Class的相似性就只有一个,那都是单词"class",就是一个为首字母大写,一个为小写.class和Class的作用:1. class只用于类声明;2. C...

java里首字母小写的class和大写的Class有什么区别 分别干嘛用的阿_百...
class 是定义一个类时的关键字,如 public class A {...} Class 是一个特殊的对象,其实就是java中非常重要的反射内容了,比如 A.class将会返回一个A的一个类反射对象,这个对象包含了A类中,一些属性和方法以及其他的信息,更详细的请搜索java反射。

Java泛型T,Class<T>,Class<?>区别
在Java中,T表示一个具体的类,例如String、List、Map等。这些类属于特定实例。Class则是一个类,它存储了上述特定类的信息。获取Class对象有三种方式:调用Object的getClass()方法、使用Class类的静态forName()方法或直接通过T.class获取。Class和Class的用法主要出现在反射场景。不使用泛型时,反射创建类...

JAVA中 使用 这个 Class<?> 什么意思
Class是一个java类,完整类名是java.lang.Class,<?>是一个泛型参数,?表示任意类型。

.class文件和Class类有什么关系
.class为java编译后的文件的 后缀名 在c#的源文件类的后缀简写为.cs Class为java c#等编程语言源文件中的 标头 是一种命名规范 意为类(类型)每一份源文件都是一个类

java中的 class<T>和 class<?>类型 有什么区别,可以互相转换来用吗?是...
Class<T>是泛型 Class<?>是不确定类型,一般来说没什么区别,还有一个就是Class类型,没有泛型。 但是有时候会有点点区别,比如定义这种类型变量,这里的Class首字母需要大写,因为java中class是关键字,希望注意。例如:Class a;Class<T> b; Class<?> c; 这三个变量,区别在于接受不同类型。

java中 Class.forName("XXXX")...;与XXXX.class...有什么区别?
Class.forName("XXXX");的作用是要求JVM查找并加载指定的类,如果在类中有静态初始化的话,JVM必然会执行该类的静态代码段,这时是不确定该类是否已经在JVM中加载。而XXXX.class是在JVM中加载已经加载过的类。

相似回答