gpt4 book ai didi

java - 如何实现 Java 通用数据结构,避免类型删除转换问题

转载 作者:行者123 更新时间:2023-11-29 07:50:43 25 4
gpt4 key购买 nike

我有以下代码:

public class Matrix<K, V> {
private final List<K> colKeys;
private final List<K> rowKeys;
private final Map<K, Map<K, V>> matrix;

public Matrix() {
colKeys = new LinkedList<>();
rowKeys = new LinkedList<>();
matrix = new TreeMap<>();
}

...

public V getCell(K row, K col) {
return matrix.get(row).get(col);
}

...

}

我在另一个类中像这样访问它:

Matrix matrix = new Matrix<String, Double>();

...

for (String colKey : colKeys) {
double sum = 0;
int divider = 0;

for (String rowKey : rowKeys) {
if (matrix.containsCell(rowKey, colKey)) {
sum += (double)matrix.getCell(rowKey, colKey);
divider++;
}
}
}

请注意,我被迫将 getCell(K row, K, col) 的返回值转换为 double,因为编译器会告诉我它返回一个 java.lang.Object 没有它。

我很确定这是由于类型删除造成的。 Java 有很多使用泛型的数据结构,但不需要转换值。查看其中一些数据结构的实现,我仍然不知道他们是如何解决这个问题的。

所以,我的问题是:如何制作实现泛型的数据结构,从而无需强制转换返回值?

最佳答案

像这样,

Matrix<String, Double> matrix = new Matrix<String, Double> ();

在 Java 7(及更高版本)中,您可以使用菱形运算符使其更短;像这样,

Matrix<String, Double> matrix = new Matrix<>();

关于java - 如何实现 Java 通用数据结构,避免类型删除转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21473114/

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