gpt4 book ai didi

java - 接口(interface)定义和泛型。这应该有不同的定义吗?

转载 作者:行者123 更新时间:2023-12-02 00:23:33 25 4
gpt4 key购买 nike

我有课Employee和一个类Building .
从类层次结构的角度来看,这些类彼此不相关。
我需要处理一堆 EmployeeBuilding对象及其结果将最终出现在不同的列表中。
所以我有一个接口(interface),例如

public interface Processor{  
public void process(String s, List<?> result);
}

这个想法是字符串 s携带与 Employee 相关的信息或Building经过一些处理后的实现将 Employee 添加到结果列表中对象或 Building对象。
Processor 有 2 个实现一是 EmployeeProcessor和一个 BuildingProcessor .
在代码中的某个地方,我得到了对其中任何一个的引用,并且我传递了 List<Employee>List<Building>process方法。

问题是代码无法编译。
当我这样做时里面EmployeeProcessor :result.add(new Employee(a,b,c,d));
我得到:

The method add(capture#2-of ?) in the type List is not applicable for the arguments

我想我可以理解这个问题,但我不想将界面更改为:

public interface Processor{  
public process(String s, List result);
}

即不指定列表类型。
有办法解决这个问题吗?是不是接口(interface)定义错误?
注意:此接口(interface)是 Command 实现的一部分图案

最佳答案

这就是我的想法。

interface Processor<T>{
public void process(String s, List<T> result);
}

class BuildingProcessor implements Processor<Building>{
@Override
public void process(String s, List<Building> result) {
result.add(new Building());
}
}

class EmployeeProcessor implements Processor<Employee>{
@Override
public void process(String s, List<Employee> result) {
result.add(new Employee());
}
}

仅供引用,您可以进一步限制类型。例如,如果 BuildingEmployee类实现,比方说,Processable ,那么你可以做interface Processor<T extends Processable>

关于java - 接口(interface)定义和泛型。这应该有不同的定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460391/

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