1
這是我的第一個問題,所以感謝大家誰使這個論壇生活。得到一個類具有相同的另一類的通用類型
我希望我的Image2D類具有與我的Point2D類相同的泛型類型。
Image2D.java:
package utilities;
import ij.ImagePlus;
import utilities.Point2D;
public class Image2D<T> {
ArrayList<Point2D<T>> original = new ArrayList<Point2D<T>>();
public Image2D(ImagePlus imp) {
// imp.getProcessor().getIntArray() returns a int[][]
this.original = matrixToImage2D(imp.getProcessor().getIntArray());
}
private static <T> ArrayList<Point2D<T>> matrixToImage2D(T[][] matrix) {
ArrayList<Point2D<T>> img = new ArrayList<Point2D<T>>();
for (int row=0; row<matrix.length; row++) {
for (int col=0; col<matrix[row].length; col++) {
img.add(new Point2D(col, row, matrix[row][col]));
}
}
return img;
}
}
Point2D.java:
package utilities;
public class Point2D<T> {
public int x;
public int y;
public T value;
public Point2D(int col, int row, T value) {
this.x = col;
this.y = row;
this.value = value;
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
public T getValue() {
return this.value;
}
}
我不能用很好的概念要做到這一點,我只是把代碼來說明我的想法。 請誰能告訴我我必須使用的Java概念?
謝謝。
我不確定我可以關注嗎?您在實例化中定義泛型類型,這意味着您可以完全控制使用的類型? 否則,您可以始終使泛型擴展另一種類型以限制最終用戶的選擇(例如>或) –
行'img.add(new Point2D(col,row,矩陣[行] [COL]));'會產生一個未經檢查的類型警告。你應該做的是爲你的'Point2D'實例化提供一個類型參數,如下所示:'img.add(new Point2D(col,row,matrix [row] [col]));' –
Oli