gpt4 book ai didi

java - 在有或没有泛型感知编译器的情况下编译使用 Class.isAssignableFrom() 的代码

转载 作者:行者123 更新时间:2023-12-02 08:27:32 30 4
gpt4 key购买 nike

我有一些 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 );
}

我设法通过用 Class.isInstance() 替换它来修复某些情况,而其他一些情况则使用 MyClass.class.isAssignableFrom( clazz ) ,它在任何地方都编译得很好,除了我确实需要在任意类对象上调用 Class.isAssignableFrom() 的情况很少见。 @SuppressWarnings 也不可能使用,因为它也只能被了解 Java 1.5 扩展及更新版本的编译器理解。

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

最佳答案

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

关于java - 在有或没有泛型感知编译器的情况下编译使用 Class.isAssignableFrom() 的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4198560/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com