gpt4 book ai didi

java - Java 中的结构类型 - 遵守接口(interface)而无需导入它

转载 作者:行者123 更新时间:2023-12-02 01:39:05 27 4
gpt4 key购买 nike

假设我有一个简单的界面:

interface IGroupBy {
String getGroupById();
}

假设我有一个这样的列表:

List<IGroupBy> v = List.of();

但这意味着列表必须按名称实现该接口(interface)。但是,如果我愿意接受任何具有返回具有该名称的字符串的方法的对象怎么办?

有没有办法在 Java 中使用泛型以某种方式获得结构类型?

List<T> v = List.of();

然后告诉 Java 编译器有关 T 的信息?像这样的东西:

<T hasInterface:IGroupBy>

我想一种方法是使用像这样的泛型:

   interface IGroupBy<T> {
T getGroupById();
}

剩下的部分是方法名称。但这仍然意味着您必须通过名称/包引用相同的接口(interface)。

最佳答案

我不确定这是否是您所要求的,但我相信您正在谈论java covariance .

基本上,假设您有以下类(class):

class  TestClass implements IGroupBy { 
private String id;
TestClass(String id) {
this.id = id;
}
@Override
public String getGroupById() {
return id;
}
}

现在,如果您有以下列表:

 List<TestClass> list = List.of(
new TestClass("test1"),
new TestClass("test2")
);

您希望能够编写如下内容:

List<IGroupBy> interfaceList = list;

Java 中通过使用通配符支持这一点,可以像这样完成:

List<? extends IGroupBy> interfaceList = list;

关于java - Java 中的结构类型 - 遵守接口(interface)而无需导入它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731415/

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