'这'关键字在另一个类文件中使用

时间:2012-01-04 18:17:35

标签: java android

'this'关键字是否仅适用于我的应用主java文件onCreate方法?

如果我尝试在其他任何地方使用'this',我最终会遇到nullPointerException错误。

例如,工作版本:

public class HelloAndroid extends Activity {

public void onCreate(Bundle icicle) {

    super.onCreate(icicle);
    XmlParser xmlParse = new XmlParser();
    encounterText = xmlParse.parseXML(this);

}

但如果我尝试在我的应用程序中的单独java类文件中使用'this',我就会获得NPE。

由于

3 个答案:

答案 0 :(得分:1)

'this'指的是该类的实例。它不是onCreate方法特有的东西

答案 1 :(得分:1)

每个类实例都有各自的'this'引用。 'this'实际上是指您在示例HelloAndroid实例中声明的类的实例。在您的示例中,您使用相同的类作为解析处理程序,这就是它工作的原因,在另一个类中,您可能已经定义了DefaultHandler。

答案 2 :(得分:1)

我认为你所问的(如果我错了,请纠正我)是为什么'this'不能作为需要引用Context的方法的参数。答案是,这只是指扩展Activity的类中的Context。您的活动恰好也是您的上下文,因此这适用于这些实例。但是,当你声明自己的类时,你不再在Activity中,所以'this'(虽然它显然指的是你所在的类)并没有帮助你获得对Context的引用。

在这些情况下,您需要将您的上下文作为对类构造函数的引用传递给它,以便它可以访问该对象。