gpt4 book ai didi

java - 如何在 java 中包装泛型类

转载 作者:行者123 更新时间:2023-11-29 08:25:55 24 4
gpt4 key购买 nike

如果我正在为泛型类编写包装器,我试图将类型嵌入到构造中(如 this SO question 中):

class Foo<T> {
private T value;
private Class<T> type;

public Foo(Class<T> type, T value) {
this.value = value;
this.type = type;
}

public T getValue() {
return value;
}

public Class<T> getType() {
return type;
}
}

我有一个 Foo 的实例列表,我想将其转换为 FooWrapper 的列表,按照这些行:

List<Foo<?>> someListOfFoos = ...
List<FooWrapper<?>> fooWrappers = someListOfFoos
.stream()
.map(foo -> FooWrapper.from(foo))
.collect(Collectors.toList());

在构建每个 FooWrapper 时,有什么方法可以恢复 someListOfFoos 中每个元素的类型吗?沿着这些线的东西:

class FooWrapper<T> {
private Foo<T> foo;

public static FooWrapper<?> from(Foo<?> toWrap) {
Class<E> type = toWrap.getType(); // i know this is wrong
return new FooWrapper<type>(toWrap); // this is very wrong
}

private FooWrapper(Foo<T> foo) {
this.foo = foo;
}
}

最佳答案

您只需稍微修改您的FooWrapper#from,引入一个泛型:

public static <E> FooWrapper<E> from(Foo<E> toWrap) {
return new FooWrapper<E>(toWrap);
}

关于java - 如何在 java 中包装泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53170129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com