我看过类似的Java代码:
SomeClass.this.someMethod(someArg);
Blah(AnotherClass.class);
Blah(YAClass.this);
“this”和“class”在这里意味着什么?我习惯将它们作为关键字来引用当前对象并定义一个类,但这是不同的。我的Java书和在线搜索没有得到任何解释。
答案 0 :(得分:7)
SomeClass.this
/ YAClass.this
- 封闭this
/ SomeClass
课程的内部课程的YAClass
引用。
class SomeClass {
private InnerClass {
public void foo() {
SomeClass outerThis = SomeClass.this;
[...]
}
}
}
(在处理可应用于任何this
引用的操作时,您需要非常小心Object
。一个常见的情况是内部this
上的同步class,当代码应该在外部实例上同步时(在这种情况下更好的方法是使用显式锁对象)。)
AnotherClass.class
- java.lang.Class
类的AnotherClass
对象。在Java 1.5之前,这是使用Class.forName
实现的(初始化类);从1.5开始,ldc
字节码已经扩展为直接支持。
Class<AnotherClass> clazz = AnotherClass.class;
两者都是在Java 1.1中引入的。
答案 1 :(得分:3)
内部类的快速示例,以完成其他答案:
class SomeClass {
public void someMethod() {
System.out.println("Hello, I have someMethod");
}
public void otherMethod() {
addListener(new MyListener() {
public void someMethod () {
System.out.println("I too, have someMethod");
}
public void listen() {
// I will call someMethod of SomeClass:
SomeClass.this.someMethod();
}
});
}
}
答案 2 :(得分:1)
.class
指的是与您的实例类对应的Class
对象。 Java在每个引用类型的内存中保留一个Class
。
以下是Class
:http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html
我唯一看到SomeClass.this
使用的是你在处理嵌套类时,需要从内部类引用外部类的实例。请参阅此处以获取示例:http://juixe.com/techknow/index.php/2009/04/07/java-nested-inner-class-this/
答案 3 :(得分:1)
.class
语法指的是Class类的特定实例。
.this
语法通常在内部类中用于引用顶级类的封闭实例。如果你在内部类中只使用this
,它将引用内部类的实例而不是封闭类。