浏览 4023 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-22
定义了一个接口: public interface IKeyValueEntry <K,V> { K getId(); V getValue(); } 比如现在要写一个子接口,限定key只能是String,如: public interface IStringKeyValueEntry<String, V> extends IKeyValueEntry { public String getId(); public V getValue(); } Eclipse 会提示 The type parameter String is hiding the type String,这是什么意思? 另外这样使用泛型对不对,大家讨论一下! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-06-22
bluepluto 写道 定义了一个接口: public interface IKeyValueEntry <K,V> { K getId(); V getValue(); } 比如现在要写一个子接口,限定key只能是String,如: public interface IStringKeyValueEntry<String, V> extends IKeyValueEntry { public String getId(); public V getValue(); } Eclipse 会提示 The type parameter String is hiding the type String,这是什么意思? 另外这样使用泛型对不对,大家讨论一下! 应该是用: public interface IStringKeyValueEntry<V> extends IKeyValueEntry<String,V>{ } |
|
返回顶楼 | |
发表时间:2007-06-22
我想知道泛型这样使用是否有合理,再比如:
public interface StringFormatter <T> { public String format(T obj); } public class Integer2StringFormatter <Integer> { public String format(Integer integerObj) { return integerObj==null?"":String.valueOf(integerObj.intValue()); } } 感觉这样写比不使用泛型显得更优雅一点,如果在1.4中: public interface StringFormatter { public String format(Object obj); } public class Integer2StringFormatter { public String format(Object integerObj) { if(integerObj == null ) return ""; if(integerObj instanceof Integer) return String.valueOf((Integer)integerObj.intValue()); return ""; } } |
|
返回顶楼 | |
发表时间:2007-06-22
你的使用方法是错误的,或者说达不到你想要的效果.
你使用 public interface IStringKeyValueEntry<String, V> extends IKeyValueEntry <String,V> 的效果与: public interface IStringKeyValueEntry<K, V> extends IKeyValueEntry <K,V> 是等同的,<>中的String将当作一个泛型参数来处理,就是说与K一样.而不是表示String这个字符串类型. 也就是 引用 The type parameter String is hiding the type String 的含义. |
|
返回顶楼 | |
发表时间:2007-06-22
多谢,这个我明白了
|
|
返回顶楼 | |