gpt4 book ai didi

接口(interface)中的 Java 泛型

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:05 25 4
gpt4 key购买 nike

我在 Java 中遇到了泛型问题,我无法在网上找到以类似方式使用泛型的解决方案或示例。我有一组在相同请求/响应结构中的方法。例如,用户填充 Request 对象中的字段,将对象传递给辅助方法,然后返回 Response 对象。我所有的请求对象都从一个通用的 Request 父类(super class)扩展而来(同样,Response 对象也从 Response 父类(super class)扩展而来)。我希望我的助手类也有一个一致的结构,所以我使用了一个接口(interface)。这是一些代码来说明...

请求父类(super class):

public class SuperRequest {
// ...
}

示例请求子类:

public class SubRequest extends SuperRequest {
// ...
}

响应父类(super class):

public class SuperResponse {
// ...
}

示例响应子类:

public class SubResponse extends SuperResponse{
// ...
}

界面:

public interface SomeInterface {
public <T extends SuperRequest, U extends SuperResponse> U someMethod(T request);
}

正如您从界面中看到的,我想传递一个对象,它是 SuperRequest 的子对象,我想返回一个对象,它是 SuperResponse 的子对象.这是我的实现:

public class SomeImplementation implements SomeInterface {

@Override
public SubResponse someMethod(SubRequest request) {
return null;
}
}

在 Eclipse 中,我遇到编译错误,因为编译器告诉我我有未实现的方法和 @Override 符号“不覆盖父类(super class)型方法”。

有人可以帮我吗?是我的语法不正确还是我对泛型的理解有点偏差?非常感谢任何帮助!

最佳答案

尝试将您的界面和实现更改为:

interface SomeInterface<T extends SuperRequest, U extends SuperResponse> {
public U someMethod(T request);
}

class SomeImplementation implements SomeInterface<SubRequest, SubResponse> {

@Override
public SubResponse someMethod(SubRequest request) {
return null;
}
}

关于接口(interface)中的 Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364767/

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