【发布时间】:2016-05-28 09:46:02
【问题描述】:
我需要能够理解在 Java 环境中使用哪种方法(如下所列)更有益。
因此,我的问题是:我正在创建一个类,用于保存多个相同类型的对象,但是如果我想在将来使用它,我希望能够将不同的对象传递给Array2D 的不同实例。它的名称是 Array2D,包含名为 rows 和 columns 的私有实例变量。但是,我想要做的是能够将任何对象(当你实例化它时)传递给这个类,并且能够使用 Array2D 内部的方法返回相同的类型。
方法一
使用泛型类型创建 Array2D。 https://docs.oracle.com/javase/tutorial/java/generics/types.html
方法二
创建一个可以扩展的超类以直接传递到 Array2D。
方法一示例:
public class Array2D<T> {
private int rows;
private int columns;
private T[] t;
public Array2D(int rows, int columns) {
this.rows = rows;
this.columns = columns;
}
public T[] returnSomething() {
return t;
}
}
方法二示例:
Arrayable.java
public class Arrayable {
//all of my variables for arrayable class
}
Example.java
public class Example extends Arrayable {
//more stuff
}
Array2D.java
public class Array2D {
private int rows;
private int columns;
private Arrayable[] arrayable;
public Array2D(Arrayable[] arr) {
this.arrayable = arr;
}
public Arrayable[] returnSomething() {
return arrayable;
}
}
Main.java
public class Main {
public static void main(String args[]) {
Example ex1 = new Example();
Example ex2 = new Example();
Example[] ex3;
ex3[0] = ex1;
ex3[1] = ex2;
Array2D a2d = new Array2D(ex3);
Example[] finish = a2d.returnSomething();
}
}
我在方法 2 中看到的唯一问题是,对于您想要提供给 Array2D 的任何类,它都必须扩展 Arrayable。哦,事实上它需要双倍的时间来完成。输入??
如果在这种情况下方法 1 是要走的路,请提供一个例子。我对泛型类和设置它们基本上是新手。谢谢!
【问题讨论】:
-
这是一道作业题吗?我真的不确定您要做什么,
Main中的使用模型看起来与我期望使用数组类的方式完全不同。想详细说明这里发生了什么? -
对不起
Main的凌乱,哈哈。我当时很急。不,这不是作业问题。我很好奇是否根据我的需要为我的 Array2D 类使用泛型。我对泛型完全陌生,但是给出的答案有所帮助。我不确定使用泛型是否允许传入任何类以供使用,但现在我知道是的,它就是这样工作的。 @markspace
标签: java arrays generics types superclass