2012-05-08 87 views
0
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(); 
    } 
} 

此產品輸出如下鑄造使用該運營商實現與接口類

從方法一

從方法2

becoz接口對象強制轉換爲該類

但我的問題是我不能投在這種情況下

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

Eclipse IDE顯示以下錯誤: 標記「。」上的語法錯誤,此標記後面的標識符。

我不明白這個 以任何方式我訪問相同的字段。

回答

4

你只是在錯誤的點上投。你想:

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

不是說你一個this指像你的榜樣main一個靜態方法...

(另請注意,不關你的類型等的遵循Java的命名約定...)

1

嘗試

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

你看,你this裏面沒有(cMyClass)i,它只有一個i。所以你得到那ithis.i)並將它投射到任何你想要的。