gpt4 book ai didi

java - 获取一个与另一个类具有相同泛型类型的类

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:58 24 4
gpt4 key购买 nike

这是我的第一个问题,感谢所有让这个论坛得以生存的人。

我希望我的 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 概念吗?

谢谢。

最佳答案

我怀疑您已经知道问题出在哪里 - 您已经添加了一条评论来总结它。

// imp.getProcessor().getIntArray() returns a int[][]

matrixToImage方法需要 T[][]但你给它一个 int[][]这是行不通的。

您必须创建 ImagePlus采用通用参数 ( ImagePlus<T> ),然后 make getIntArray返回 T[][]或者你必须做 matrixToImage2D采取int[][]作为参数。

另一种选择是使用 T extends Number并制作在 int[][] 之间转换的适配器方法和T[][] .

关于java - 获取一个与另一个类具有相同泛型类型的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30638498/

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