论坛首页 Java企业应用论坛

关于Java1.5中使用泛型对子接口的参数类型进行限定

浏览 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,这是什么意思?
另外这样使用泛型对不对,大家讨论一下!
   发表时间: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>{
}
0 请登录后投票
   发表时间: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 "";        
    }
}
0 请登录后投票
   发表时间: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

的含义.
0 请登录后投票
   发表时间:2007-06-22  
多谢,这个我明白了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics