【问题标题】:Is it possible to store a class in a variable in Java?是否可以将类存储在Java中的变量中?
【发布时间】:2020-09-17 23:52:30
【问题描述】:

我正在尝试做类似的事情:

class test {
  Class c;
  c[] array = new array[0];

  test(Class c_) {
   c = c_;
  }
}

这样它可以被普遍使用,并且我在类测试中放置的任何类都有效。我已经尝试过这个确切的东西,但它似乎不起作用。有什么办法可以吗?如果这意味着什么,我也在使用 IDE 处理。

【问题讨论】:

  • “如果这意味着什么,我也在使用 IDE 处理。” -- 不,你误认为 Processing 是一个 IDE 以及构建的完整编程语言在 Java 之上。
  • @HovercraftFullOfEels 好的,谢谢,对不起,我对这些事情不太了解。

标签: java class processing


【解决方案1】:

是的,也不是。是的,可以动态创建一个数组,但不能使用您的语法(并且您应该使用泛型类型)。另外,请注意 Java 数组具有固定长度(因此零元素数组不是很有用)。 Java 类名以大写字母开头。类似的,

class Test<T> {
    private T[] array;

    @SuppressWarnings("unchecked")
    Test(Class<T> c, int len) {
        array = (T[]) Array.newInstance(c, len);
    }

    public void set(int p, T v) {
        array[p] = v;
    }

    public T[] getArray() {
        return array;
    }
}

然后是使用它的基本演示,

public static void main(String[] args) {
    int size = 5;
    Test<String> t = new Test<>(String.class, size);
    for (int i = 0; i < size; i++) {
        t.set(i, String.valueOf(i));
    }
    System.out.println(Arrays.toString(t.getArray()));
}

输出

[0, 1, 2, 3, 4]

【讨论】:

    【解决方案2】:
    • 类是创建对象的蓝图
    • 它在内存中没有物理存在
    • 它的实例有可以存储的存在
    • 因此,如果类在内存中不存在,则无法将其保存在 变量

    【讨论】:

      猜你喜欢
      • 2012-04-04
      • 2013-07-12
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多