java - Java中的通用数组创建

标签 java generics

<分区>

Possible Duplicate:
Create instance of generic type in Java?
Java how to: Generic Array creation

我正在尝试创建一个通用类型的类。这是我的类(class)文件。

public class TestClass<T> implements AbstractDataType<T>{

    T[] contents;

    public TestClass(int length) {
        this.contents = (T[])new Object[length];
    }
}

但是内容只有继承自Object类的方法。如何为内容创建一个抽象数组?

最佳答案

至于初始化contents ,我认为你拥有的是你能做到的最好的。如果有办法,ArrayList可能会这样做(第 132 行:http://www.docjar.com/html/api/java/util/ArrayList.java.html)

但是当您说“内容只具有从 Object 类继承的方法”时,我假设您的意思是您只能访问像 toString 这样的方法。和 equals当您在代码中使用 T 实例时,我猜这是主要问题。那是因为你没有告诉编译器任何关于 T 的信息。实例是。如果要从特定接口(interface)或类型访问方法,则需要对 T 施加类型约束。 .

这是一个例子:

interface Foo {
  int getSomething();
  void setSomethingElse(String somethingElse);
}

public class TestClass<T extends Foo> implements AbstractDataType<T> {
  T[] contents;

  public TestClass(int length) {
    this.contents = (T[])new Object[length];
  }

  public void doSomethingInteresting(int index, String str) {
    T obj = contents[index];
    System.out.println(obj.getSomething());
    obj.setSomethingElse(str);
  }
}

所以现在您可以访问除从 Object 继承的方法以外的方法.

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

相关文章:

c# - 初始化 IList<T> C#

java - 展平通用数组的方法

java - 使用 TypeAdapter 的对象中一个(多个)变量的 Gson 自定义序列化程序

java - Tomcat 7 创建多个 session

java - 大 o 符号和递归函数

java - 为 Java 中的 2D 模拟项目选择合适的工具包

Java - 在参数化类方法中 this.getClass() 返回什么编译时类?

c# - 如何根据泛型 T 的类型返回一个值

java在泛型方法中使用this(继承)

java - 在 Eclipse 中从 WAR 创建重复的 Web 项目