编译使用Class.isAssignableFrom()的代码,使用和不使用泛型感知编译器

时间:2010-11-16 20:21:37

标签: java generics suppress-warnings

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

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

“类型安全:方法isAssignableFrom(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 );
}

我设法修复了一些案例,用Class.isInstance()代替MyClass.class.isAssignableFrom( clazz )和其他一些代理使用Class.isAssignableFrom()编译好处,但是有几个案例留在我真正需要调用{{1}}的地方一个任意的类对象。 @SuppressWarnings也不可能使用,因为只有知道Java 1.5扩展和更新的编译器才能理解它。

所以任何想法如何解决这个问题,还是只需要接受警告?

1 个答案:

答案 0 :(得分:2)

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

相关问题