Java 8 泛型类型检查

标签 java generics compiler-errors

在 Java 7 中,检查方法的不同类型会导致编译错误,而在 Java 8 中则不会出现编译错误。是否可以检查泛型并使其在 Java 8 中产生编译错误?

class CheckedEquals{
    public static <T> boolean checked(T expected, T actual) {
       return com.google.common.base.Objects.equal(expected, actual);
    }
}

class ShouldFailAtCompileTime{
    public void foo(){
        if(CheckedEquals.checked("String", Boolean.TRUE)){
            System.err.println("");
        }
    }
}

最佳答案

此处导致编译错误的行为是正确的,因为泛型类型参数TObject。如果未指定类型参数,编译器还应该如何猜测?我想知道 Java 7 是如何做到这一点的,据我所知没有任何变化。

然而,这会导致编译错误:

CheckedEquals.<String>checked("String", Boolean.TRUE)

关于Java 8 泛型类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46706487/

相关文章:

java泛型运行时类型

c++ - 在访问说明符之前放置一个常量限定内联成员函数是错误的吗?

visual-studio-2008 - 自定义输出 => VS2008 IDE 中的错误解释列表

c++ - 未解析的外部符号 - 构造函数

java - Gson反序列化跳过一引号

java - truezip 的问题 - 调试时,抛出一个奇怪的异常

java - 从 javabean 类更新数据库是否合适?

c# - 参数化通用事件系统

java - 需要在 Windows 中使用 wget 复制文件

Java 集合 LinkedList 函数参数类型