3

我正在尝试 immutables.org 库。我需要的是能够指定一个类,所以我定义了

@Value.Immutable
public interface Value<T> {
    Class<T> getType();
}

immutables 生成的builder不接受这个

ImmutableValue.builder().type(String.class)...

因为它需要一个 Class<Object>。如何让构建器接受 String.class?

用 @Value.Parameter 注释类型很好地创建了一个有效的方法

ImmutableValue.of(String.class)...

但是结果是一个实例,而不是一个构建器,所以后续值只能使用 withers 设置。

4

1 回答 1

1

您可以使用type witness推断类型。

public class ImmutableExample {
    public static void main(String[] args) {
        ImmutableValue immutableValue = ImmutableValue.<String>builder()
                .type(String.class).build();
        System.out.println(immutableValue.getType());
    }
}
于 2022-01-14T11:34:11.897 回答