试图看看我是否可以清理我的一些数学代码,主要是矩阵的东西,我试图使用一些Java泛型.我有以下方法:
private <T> T[][] zeroMatrix(int row, int col) {
T[][] retVal = (T[][])new Object[row][col];
for(int i = row; i < row; i++) {
for(int j = col; j < col; j++) {
retVal[i][j] = 0;
}
}
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
retVal [i] [j] = 0行是引起头痛的行.该行的目标是使用T表示为0初始化数组.我试图用它做各种各样的事情:(T在类中被定义为T extends Number)
retVal[i][j] = (T)0;
retVal[i][j] = new T(0);
Run Code Online (Sandbox Code Playgroud)
唯一有效的是
retVal[i][j] = (T)new Object(0);
Run Code Online (Sandbox Code Playgroud)
这不是我想要的.
这可能吗?有没有更简单的方法来表示任何类型的数字的NxM矩阵(包括可能的BigDecimal),还是我被困?
以下声明指定了哪种数据结构?
List<ArrayList>[] myArray;
Run Code Online (Sandbox Code Playgroud)
我认为它应该声明一个数组,其中每个元素是一个List(例如,一个LinkedList或一个ArrayList),并要求每个元素List包含ArrayList对象.
我的推理:
List<String> someList; // A List of String objects
List<ArrayList> someList; // A List of ArrayList objects
List<ArrayList>[] someListArray; // An array of List of ArrayList objects
Run Code Online (Sandbox Code Playgroud)
在运行一些测试之后,我确定它接受一个数组,其中每个元素都是一个LinkedList对象,并没有指定LinkedList对象包含的内容.
因此,List<ArrayList>指定List必须包含的内容,但List<ArrayList>[]指定List必须如何实现.
我错过了什么吗?
这是我的测试.
import java.util.ArrayList;
import java.util.List;
import java.util.LinkedList;
public class Generics1 {
public static void main(String[] args) {
List<ArrayList>[] someListArray;
someListArray = getArrayWhereEachElementIsAnArrayListObject();
// Why does this …Run Code Online (Sandbox Code Playgroud)