【发布时间】:2012-05-05 09:10:29
【问题描述】:
我有一个班级Employee 和一个班级Building。
从类层次结构的角度来看,这些类彼此不相关。
我需要处理一堆 Employee 和 Building 对象,它们的结果最终会出现在不同的列表中。
所以我有和接口,例如
public interface Processor{
public void process(String s, List<?> result);
}
这个想法是字符串s 携带与Employee 或Building 相关的信息,并且经过一些处理后的实现将Employee 对象或Building 对象添加到结果列表中。 Processor 有两种实现方式,一种是EmployeeProcessor,一种是BuildingProcessor。
在代码中的某处,我得到了对其中任何一个的引用,我将 List<Employee> 或 List<Building> 传递给 process 方法。
问题是代码无法编译。
当我这样做时在EmployeeProcessor 内:result.add(new Employee(a,b,c,d));
我明白了:
List 类型中的方法 add(capture#2-of ?) 不是 适用于参数
我想我可以理解问题,但我不想将界面更改为:
public interface Processor{
public process(String s, List result);
}
即未指定列表类型。
有没有办法解决这个问题?接口定义错了吗?
注意:这个接口是Command模式实现的一部分
【问题讨论】:
-
1.发布整个错误消息。 2. 发布您的实际代码 - 而不是 sn-ps 甚至不是有效的 Java...
-
@thkala:1) 没有错误消息。 Eclipse编译器提示2)无效java是什么意思?
-
1.这不是一个“迹象”。这是一个成熟的编译器错误消息。 2.
public process(String s, List result);不是一个有效的方法声明——没有返回类型... -
1.我已经发布了编译器错误 2。对此我深表歉意。你说的对。我的坏
标签: java oop design-patterns generics