小编Yur*_*riy的帖子

返回类型是擦除的一部分吗?

有人可以解释为什么第二类不编译?

1使用javac和JDK 6编译好(Eclipse会抱怨此代码)

public class SameSignatureMethods {
    public <T extends String> Boolean test()
    {
        return true;
    }

    public <T extends Character> Double test() 
    {
        return 1d;
    }
}
Run Code Online (Sandbox Code Playgroud)

2对该示例稍作更改,编译失败,并出现以下错误:

name clash: <T>test() and <T>test() have the same erasure
Run Code Online (Sandbox Code Playgroud)

唯一的变化是方法的返回类型:

public class SameSignatureMethods {
    public <T extends String> Boolean test()
    {
        return true;
    }

    public <T extends Character> Boolean test() {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是第一类的主要方法看起来如何:

public static void main(String[] args) {
    SameSignatureMethods m = new SameSignatureMethods();
    System.out.println("m.<Character>test()=" + m.<Character>test());
    System.out.println("m.<String>test()=" …
Run Code Online (Sandbox Code Playgroud)

java generics

8
推荐指数
1
解决办法
834
查看次数

标签 统计

generics ×1

java ×1