gpt4 book ai didi

Java - 接口(interface)上嵌套可参数化类型的类型变量

转载 作者:行者123 更新时间:2023-12-01 19:46:53 26 4
gpt4 key购买 nike

我有以下界面:

public interface Box<T> {
T get();
}

我希望能够定义另一个具有 Box<SomeType> 的接口(interface)作为参数,但该接口(interface)“知道”什么 SomeType是。

例如我想定义以下接口(interface)

// this doesn't compile
public interface BiggerBox<B extends Box<H>> {
H get();
}

这个想法是你可以做这样的事情:

BiggerBox<Box<String>> biggerBox = new SomeBiggerBox(new SomeBox("some string"));
String value = biggerBox.get();

我能得到的最接近的是:

public interface BiggerBox<B extends Box> {
<U> U get();
}

但这没有编译时类型安全性。

我认为这在 Java 中是不可能的,但我想知道它是否真的存在(即使通过疯狂的黑客)。

编辑:我不想向界面添加第二个类型参数,即 no BiggerBox<Box<String>, String> (这就是为什么我认为这是不可能的)

最佳答案

您需要将其添加为第二个类型参数:

public interface BiggerBox<B extends Box<H>, H> {
H get();
}

关于Java - 接口(interface)上嵌套可参数化类型的类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52898009/

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