为什么这个通用代码可以在Java 8中编译?
- 论坛
- 为什么这个通用代码可以在Java 8中编译?
20 浏览
为什么这个通用代码可以在Java 8中编译?
我偶然发现了一段让我感到奇怪的代码,它竟然能够成功编译:
public class Main { public static void main(String[] args) { String s = newList(); // 为什么这行代码能编译通过? System.out.println(s); } private static> T newList() { return (T) new ArrayList (); } }
有趣的是,如果我修改方法`newList`的签名为`
评论和回应后的更新:
如果我将方法中的泛型类型移动到类中,代码就无法编译了:
public class SomeClass> { public void main(String[] args) { String s = newList(); // 这段代码不再编译通过 System.out.println(s); } private T newList() { return (T) new ArrayList (); } }