在这种情况下如何避免在强制转换为 Generic 时发出警告?

西蒙娜·帕卡

避免此警告的最佳方法?有没有(T)演员表可能失败的情况/例子?(用Eclipse编译的Java语言)

更新示例以供参考 Lee 的回答:使用结果巧妙地转换失败。

interface Test {
}

class Test1 implements Test {
    void doSomething() {}
}
class Test2 implements Test {}

public class TestIterable<T extends Test> implements Iterable<T> {

    final ArrayList<T> result=new ArrayList<>();

    public TestIterable(Object obj) {
        if (obj instanceof Test) {
            Test t = (Test) obj;
            result.add((T) obj); // Warning: unchecked cast from Test to T
            // Iteresting decompilation result....
            // result.add((Test) obj);
        }
    }

    @Override
    public Iterator<T> iterator() {
        return result.iterator();
    }

    public static void main(String[] args) {
        TestIterable<Test1> x = new TestIterable<>(new Test2());
        for (Test1 y :x.result) {
            y.doSomething();
            // java.lang.ClassCastException
        };
    }
}
乔普·埃根

两种选择。需要T 对象的自然解决方案可能不适合您的需要。然后必须显式传递类型 T,因为类型擦除使任何其他构造变得毫无意义。

class TestIterable<T extends Test> implements Iterable<T> {

    final List<T> result = new ArrayList<>();

    public TestIterable(T obj) {
        result.add(obj);
    }

    public TestIterable(Class<T> type, Object obj) {
        if (obj == null || type.isAssignableFrom(obj.getClass())) {
            result.add(type.cast(obj));
        }
    }

    @Override
    public Iterator<T> iterator() {
        return result.iterator();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从“ double”转换为“ int”时发出警告

来自分类Dev

在 Rcpp 中向下转换时发出警告?

来自分类Dev

当我尝试将对象强制转换为List <Object>时发出警告

来自分类Dev

当我尝试将对象强制转换为List <Object>时发出警告

来自分类Dev

在 Python 中使用 eval() 时如何避免对未使用的局部变量发出警告

来自分类Dev

在将double转换为uint8时(反之亦然)使Matlab发出警告?

来自分类Dev

使用未定义的变量时如何Powershell发出警告或错误?

来自分类Dev

不连续使用const时如何使编译器至少发出警告

来自分类Dev

当玩家触摸屏幕一侧时,如何让pygame发出警告?

来自分类Dev

打开多个标签时,如何阻止Chrome向我发出警告?

来自分类Dev

当 Ubuntu 即将进入睡眠模式时如何发出警告(噪音/哔哔声)?

来自分类Dev

我如何获得警告。发出警告而不忽略该行?

来自分类Dev

Play Framework编译发出警告,如何查看警告?

来自分类Dev

Play Framework编译发出警告,如何查看警告?

来自分类Dev

如何避免对Base 64发出警告?

来自分类Dev

发出警告时退出

来自分类Dev

发出警告时退出

来自分类Dev

我如何在Odoo网站上发出警告消息

来自分类Dev

如何从Remove-Item捕获错误并发出警告?

来自分类Dev

如果缺少密钥,如何用ceberus发出警告?

来自分类Dev

如何使Outlook 2010不在空白主题上发出警告?

来自分类Dev

如何对REST API版本不匹配发出警告?

来自分类Dev

如何让 IntelliJ Idea 停止对某些属性发出警告?

来自分类Dev

在R中将“ 1000,00+”的值转换为数字会发出警告“强制引入的NA”?

来自分类Dev

避免在_generic宏中“警告:从大小不同的整数[-Wint-to-pointer-cast]强制转换为指针”

来自分类Dev

如何在不发出警告的情况下实现同步任务返回方法CS1998?

来自分类Dev

如何在没有PDF插件发出警告的情况下将PDF文档嵌入KnockoutJS模板中?

来自分类Dev

出现UIActivityViewController时发出警告

来自分类Dev

#Pragma Pack编译时发出警告

Related 相关文章

  1. 1

    从“ double”转换为“ int”时发出警告

  2. 2

    在 Rcpp 中向下转换时发出警告?

  3. 3

    当我尝试将对象强制转换为List <Object>时发出警告

  4. 4

    当我尝试将对象强制转换为List <Object>时发出警告

  5. 5

    在 Python 中使用 eval() 时如何避免对未使用的局部变量发出警告

  6. 6

    在将double转换为uint8时(反之亦然)使Matlab发出警告?

  7. 7

    使用未定义的变量时如何Powershell发出警告或错误?

  8. 8

    不连续使用const时如何使编译器至少发出警告

  9. 9

    当玩家触摸屏幕一侧时,如何让pygame发出警告?

  10. 10

    打开多个标签时,如何阻止Chrome向我发出警告?

  11. 11

    当 Ubuntu 即将进入睡眠模式时如何发出警告(噪音/哔哔声)?

  12. 12

    我如何获得警告。发出警告而不忽略该行?

  13. 13

    Play Framework编译发出警告,如何查看警告?

  14. 14

    Play Framework编译发出警告,如何查看警告?

  15. 15

    如何避免对Base 64发出警告?

  16. 16

    发出警告时退出

  17. 17

    发出警告时退出

  18. 18

    我如何在Odoo网站上发出警告消息

  19. 19

    如何从Remove-Item捕获错误并发出警告?

  20. 20

    如果缺少密钥,如何用ceberus发出警告?

  21. 21

    如何使Outlook 2010不在空白主题上发出警告?

  22. 22

    如何对REST API版本不匹配发出警告?

  23. 23

    如何让 IntelliJ Idea 停止对某些属性发出警告?

  24. 24

    在R中将“ 1000,00+”的值转换为数字会发出警告“强制引入的NA”?

  25. 25

    避免在_generic宏中“警告:从大小不同的整数[-Wint-to-pointer-cast]强制转换为指针”

  26. 26

    如何在不发出警告的情况下实现同步任务返回方法CS1998?

  27. 27

    如何在没有PDF插件发出警告的情况下将PDF文档嵌入KnockoutJS模板中?

  28. 28

    出现UIActivityViewController时发出警告

  29. 29

    #Pragma Pack编译时发出警告

热门标签

归档