java - 创建通用数组列表

标签 java generics

这是一个由两部分组成的问题。

我有两个类:AnimalVehicle,我将它们实例化为对象。 Animal 包含两个实例变量:numLegsanimalNameVehicle 包含一个实例变量:numTires,这两个类都包含 getter 和 setter。

我有一个通用类Box,它包含一个Animal或一个Vehicle

假设我想创建一个由盒子组成的Arraylist。所述Arraylist中的每个Box将专门保存类型Animal或专门类型Vehicle

例如:对于纯动物来说,这看起来会产生以下效果:

List<Box<Animal>> list = new ArrayList<Box<Animal>>(); 
list.add( new Box<Animal>( new Animal( "fluffy", 4 ) ) ); 

(1)。盒子类应该是什么样子?

另外,假设我想对列表中的动物执行 getter 操作。 如:System.out.println(list.get(0).getName());

(2)。我该如何正确处理这个问题?

最佳答案

我不太确定你想要什么,但如果你想要一个通用类型的 Box 类,它可能需要看起来像这样:

public class Box<T extends SuperclassOfAnimalAndVehicle> {
  T myModeOfTransport;

  Box(T myModeOfTransport) {
    this.myModeOfTransport = myModeOfTransport;
  }

  public T getModeOfTransport() {
    return myModeOfTransport;
  }
}

这一行:list.get(0).getName() 但是不会这样做。您必须获取 Box 包含的对象。因此,使用我的示例,它将是 list.get(0).getModeOfTransport().getName(),假设 VehicleAnimal 都有 getName() 方法。

话虽这么说,我真的很困惑为什么这是必要的。也许如果您解释一下更大的情况,我可以给您一个更完整的答案。

关于java - 创建通用数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10466383/

相关文章:

java - Java注解处理的弊端?

java - xsi :schemaLocation work with IntelliJ IDEA? 怎么办

java - 为什么 Guava 的 TypeToken<T>.getRawType() 会返回 Class<? super T> 而不是 Class<T>

Java 使用泛型或类类型创建对象的新实例

java - 将对象类型作为参数传递给方法?

java - 如果需要抽象接口(interface),则不允许在函数参数中提供已实现的接口(interface)

java - 类未在处理 IDE 中调用

java - Charset.defaultCharset() 在 JDK1.7 和 JDK 1.6 下得到不同的结果

c# - System.Enum 作为带有约束的泛型类型参数

java - 用用户输入填充二维数组(整数到二进制)