(声明:我是一个很长一段时间的程序员,只是我没那么在使用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