通过"这个"从Java接口到另一个类

时间:2014-12-16 10:44:08

标签: java android eclipse oop

给我的android项目的以下课程:

Preview extends SurfaceView implements SurfaceHolder.Callback

A extends Doc

我真的不知道怎么问,我知道这不是很好,但是我想要预览,我称之为Doc的抽象方法。在这个Doc方法中,我必须调用前一个预览对象的方法。

这是一个例子:

来自Preview.java:

   Doc _doc = new A();
   private void myMethod() {
       this._doc.process(this)
   }

来自A.java:

@Override
public void process(Preview p) {
    p.processA();
}

问题是我收到了错误:

  

Doc类型中的方法流程(预览)不适用于参数(new Camera.PreviewCallback(){})

然而,由于我想从预览中调用该方法,我无法改变这一判断。我尝试了很多东西,比如施放等等。它们都不起作用。

感谢您的帮助!

PS:我在Windows下使用Eclipse。

2 个答案:

答案 0 :(得分:8)

假设您正在从匿名内部类(我假设的Camera.PreviewCallback类型,因此错误消息)中调用A.process(this),您必须编写A.process(Preview.this),因为它是独立的this指的是内部类而不是预览实例。

答案 1 :(得分:2)

  

Doc类型中的方法流程(预览)不适用于参数(new Camera.PreviewCallback(){})

它只是意味着您传递的是Camera.PreviewCallback的对象,但在您的方法中public void process(Preview p)您想要一个Preview的对象。

如果您已在anonymous class旁边编写此代码,则this不会指向Preview类。它将指向内部匿名类的对象。

因此你需要写A.process(Preview.this)