我有一个应该返回通用ArrayList的类,所以它将是:
public class MyClass{
HashMap<String,Object> genericObjects;
....
public List<T> getAsList(String key){
return (List<T>)genericObjects.get(key);
}
}
内部成员由解析器填充,并且该内部hashmap的成员可以是任何东西,因此让它像对象一样有意义。用户必须知道它是哪种对象......非常类似于jdbc中的ResultSet。
因此,用户只需要这样做:
List<String> str = myClass.getAsList("strings");
问题在于,为了这样做,我不得不在类定义中添加泛型。 但是,像这样实例化MyClass:
MyClass<String> myClass = new MyClass<String>();
List<String> strmyClass.getAsList("strings");
没有意义,因为类型应该只对方法getAsString有意义,它返回一个泛型...不是每个方法都有!
答案 0 :(得分:5)
听起来你想让这个方法变得通用,就像这样:
public <T> List<T> getAsList(String key){
return (List<T>)genericObjects.get(key);
}
现在你可以这样称呼它:
MyClass myClass = new MyClass();
List<String> strings = myClass.<String>getAsList("strings");
List<Integer> integers = myClass.<Integer>getAsList("integers");