(聲明:我是一個很長一段時間的程序員,只是我沒那麼在使用Java的。)Java接口,通用的,不知道我在做什麼
大家好。
我剛剛爲我的Android應用程序添加了一項新功能,一切正常,但我不知道我做了什麼:-D和Eclipse給了我三個警告。我恨有未解決的警告:-)
的代碼,第一:
public interface IClass<T> {
public ArrayList<T> getSomething();
[a few other public methods, not relying on T]
}
public class Class1 implements IClass<String>{
public ArrayList<String> getSomething(){
[code]
}
[the other public methods]
}
public class Class2 implements IClass<long>{
public ArrayList<long> getSomething(){
[code]
}
[the other public methods]
}
然後我有一個三等功,稱之爲ConsumerClass:聲明類型的變量的iCLASS,與如果在特定條件下將其實例化爲新的Class1()或新的Class2(),在其餘的代碼中它作爲通用的IClass在需要的地方, getSomething(),做一個演員。
正如我所說,一切都按預期工作。 「問題」在於Eclipse給了我3個警告,並不是真的擅長Java,我想了解它們,如果我所做的是正確的,因爲畢竟我編寫了這個東西......以及本能。
警告是:
- ICLASS是原始類型。引用泛型類型的iCLASS應該是參數
- 類型安全:未選中從ArrayList中轉換爲ArrayList的
- 類型安全:未選中從ArrayList中轉換爲ArrayList的
首先,它是完全黑暗的我。 最後兩句我可以理解,只有我不知道如何檢查通話結果而不做。我的意思是:
ArrayList<String> res = (ArrayList<String>) IClass_Instance.getSomething();
如何檢查IClass_Instance.getSomething()的類型不調用呢?
THX所有:-)
什麼是IClass_Instance?這個名字表明它是一個變量(所以它的類型是什麼?),但名稱以大寫字母開頭,該大寫字母是Java編碼約定爲類型保留的。 – 2014-12-05 14:55:40
我測試過你的代碼,並且沒有編譯器問題。請提供必要的代碼來複制您的問題,否則該問題不適用於該網站的主題。 – 2014-12-05 14:57:26
'IClass'是非法的 - 你只能使用對象類型 - 試試'IClass '。 –
OldCurmudgeon
2014-12-05 14:59:20