使用"this"和"class"作为成员

spo*_*pot 4 java

我见过Java代码,其中包含:

SomeClass.this.someMethod(someArg);
Blah(AnotherClass.class);
Blah(YAClass.this);
Run Code Online (Sandbox Code Playgroud)

"这个"和"阶级"在这里意味着什么?我习惯将它们作为关键字来引用当前对象并定义一个类,但这是不同的.我的Java书和在线搜索没有得出任何解释.

Tom*_*ine 7

SomeClass.this/ YAClass.this- this内部类'封闭SomeClass/ YAClass类的引用.

class SomeClass {
    private InnerClass {
        public void foo() {
            SomeClass outerThis = SomeClass.this;
            [...]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

(你必须要非常小心,这this你可能被应用到任何操作打交道时获得特别Object的参考.常见的情况是syncronising上this的一个内部类,当代码应在外部实例在此进行同步(更好的方法case是使用显式锁对象).)

AnotherClass.class- 班级的java.lang.Class对象AnotherClass.在Java 1.5之前,这是使用Class.forName(初始化类)实现的; 从1.5开始,ldc字节码已经扩展为直接支持.

Class<AnotherClass> clazz = AnotherClass.class;
Run Code Online (Sandbox Code Playgroud)

两者都是在Java 1.1中引入的.