爲什麼當在匿名內部類定義中重新定義相同的數據時,從接口構造的匿名內部類從接口返回數據?請看看這段代碼,它出現在界面和匿名類中的字段,使用相同的名稱得到訪問:接口類型的匿名內部類訪問'overrided'字段
interface Item{
int data=0;
String text="";
}
public class Problem2{
public static void main(String[] args){
Item item=new Item(){ public int data=2; public String text="an item";
public boolean equals(Object object){
if(object instanceof Item){
Item test=(Item)object; //tests on next line
System.out.println(test); System.out.println(String.format("data: %d; text: \"%s\"", test.data, test.text)); //returns data and text fields of interface, after returning fields defined in anonymous class on toString call
System.out.println(test); //toString returns same
return data==test.data && text.equals(test.text); } return false;}
public String toString(){return String.format("{data: %d; text: \"%s\"}", data, text);} };
System.out.println(((Object)item).equals(item)); //returns false
}
}
請解釋它是如何返回,而等領域的接口領域匿名內部類不會更改。 輸出:
{data: 2; text: "an item"}
data: 0; text: ""
{data: 2; text: "an item"}
false
好吧,我明白了,原來這是說,那個被傳遞的項目接口參數預期爲不變...因此,item.data和item.text被視爲final,隱式指定在接口中。 –
我認爲你要找的是抽象類,而不是接口。 – Rogue