interface iMyInterface {
    public iMethod1();
}

public class cMyClass implements iMyInterface{
    public iMethod1() {
        System.out.println("From Method1");
    }
    protected iMethod2() {
        System.out.println("From Method2");
    }
}

class AppMain
{
    iMyInterface i=new cMyClass();
    public static void main(){
    i.iMethod1();
    ((cMyClass)i).iMethod2();
    }
}


这产生如下输出

从方法1

从Method2

becoz接口对象被强制转换为该类

但我的问题是我无法在以下情况下进行投射

class AppMain
{
    iMyInterface i=new cMyClass();
    public static void main(){
    i.iMethod1();
    this.((cMyClass)i).iMethod2();
    }
}


Eclipse IDE显示以下错误:
令牌“。”的语法错误,此令牌后应有标识符。

我不明白
无论哪种方式,我都访问相同的字段。

最佳答案

您只是在错误的位置进行投射。你要:

((cMyClass) this.i).iMethod2();


并不是说您的示例中有一个this可以在诸如main的静态方法中引用...

(还请注意,您的类型等均不遵循Java命名约定...)

10-07 23:32