0

我有一些 Java 代码需要使用当前的泛型感知编译器以及不了解泛型的旧编译器或外来编译器(尚)进行编译。我设法让几乎所有代码都能正常编译并且没有警告,除了使用 Class.isAssignableFrom() 的极少数情况。

此示例使用任一编译器编译,但泛型感知编译器会发出如下警告:

“类型安全:方法 isAssignableFrom(Class) 属于原始类型 Class。对泛型类型 Class 的引用应参数化”

public static boolean isType( Class type, Class clazz )
{
    return type.isAssignableFrom( clazz );
}

这消除了警告,但当然没有泛型就无法编译:

public static boolean isType( Class<?> type, Class clazz )
{
    return type.isAssignableFrom( clazz );
}

我设法通过替换 this 来修复某些情况,而另一些情况Class.isInstance()则使用MyClass.class.isAssignableFrom( clazz )which 编译在任何地方都很好,但是留下了一些我真的需要Class.isAssignableFrom()在任意类对象上调用的情况。@SuppressWarnings 也不能使用,因为它也只有知道 Java 1.5 扩展和更新版本的编译器才能理解。

那么有什么想法可以解决这个问题,还是我只需要忍受这些警告?

4

1 回答 1

2

忍受该警告,或使用条件编译(取决于您使用的构建工具)......虽然我认为尝试支持两个不兼容的 Java 版本不是一个好习惯。它们可能比编译时的警告更糟糕。

于 2010-11-16T20:36:38.107 回答