java - 在启动时存储抽象 int 的值

标签 java

所以我有一个抽象类,并且我愿意将子类中的所有值存储在 ImmutableList 中。这是一个说明我的意思的例子

public abstract class Test {

...

public abstract int getValue();

}

然后是子类

public final class Example extends Test {

@Override
public int getValue() {
return 5;
}

}

有没有办法在启动时将 Test#getValue() 存储在 ImmutableList 中?

我尝试做类似的事情

public abstract class Test {

    public static final ImmutableList<Integer> VALUES = ImmutableList.of();

    public Test() {
        VALUES.add(getValue());
    }

    public abstract int getValue();

}

然后打印出 VALUES 列表中的值。

public static void main(String[] args) {
    Test.LIST.forEach(System.out::println);
}

但是没有成功。

最佳答案

使用 initializer block 。可以创建一个静态 block ,该 block 将在类加载时执行:

package foo.bar.baz;

import java.util.*;

public class Test {
  static {
    int MY_INT = 5;
    List<Object> mylist = new ArrayList<Object>();
    mylist.add(new Integer(MY_INT));
  }

  public Test() {
    // ...
  }
}

关于java - 在启动时存储抽象 int 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34403926/

相关文章:

java - 滑动拼图Java Shuffle问题

Java + react 堆 : Http call for each record

java - Junit 测试共享相同的数据对象?我应该 mock 它还是什么?

java - 是否可以将两个通配符类型声明为同一类型?

java - 如何防止文件加载时发生 Java 的 OutOfMemoryError?

java - 为什么在 Netty 用户指南中调用 ctx.write() 后没有调用 ctx.flush() ?

java - 从类函数反序列化java对象

java - PostgreSQL 上的 Hibernate 架构生成 : wrong column type UUID instead of INET

jvm - 什么启动 JVM 线程?

java - Intellij 结构搜索和替换所有形式的 if 语句