当前位置:  开发笔记 > 编程语言 > 正文

Java Generics - 难以强制执行强类型检查

如何解决《JavaGenerics-难以强制执行强类型检查》经验,为你挑选了1个好方法。

这是我的代码:

public class Sequence {

    protected List sequence = new ArrayList();

    public Matrix> createCartesianProduct(Sequence secondSequence) {
        Matrix> result = new Matrix>();
        for (int rowIndex = 0; rowIndex < sequence.size(); rowIndex++) {
            Sequence> row = new Sequence>();
            for (int columnIndex = 0; columnIndex < secondSequence.length(); columnIndex++) {
                row.add(new OrderedPair(sequence.get(rowIndex), secondSequence.sequence.get(columnIndex)));
            }
        }
        return result;
    }
}

这在Eclipse中编译,但是在内部for循环(row.add(...))内的行上我得到以下三个警告:

OrderedPair是一种原始类型.OrderedPair()应参数化对泛型类型的引用.

类型安全:OrderedPair类型的表达式需要未经检查的转换才能符合 OrderedPair

类型安全:构造函数OrderedPair(Object,Object)属于原始类型OrderedPair.应参数化对泛型类型OrderedPair的引用

我想使用泛型来强制执行强类型检查,但我想我对泛型的理解不足以让我看到如何.有人可以教育我吗?

谢谢,

- 肯



1> Michael Myer..:

内部for循环中的构造函数应该具有泛型:

row.add(new OrderedPair  (sequence.get(rowIndex), secondSequence.sequence.get(columnIndex)));

但你不能这样使用?; 所以你需要?用字母替换所有的s,比方说E.然后在签名中添加一个,如下所示:

public  Matrix> createCartesianProduct(Sequence secondSequence) {

否则,编译器将不知道它E来自何处.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有