我创建了一个由一些对象实现的基本接口,我还有一个接口数组,它给出一个字符串返回提到的对象。(有点难以解释,最好看看代码:D)然后我想通过一些重载方法将它传递给全局对象(一开始看起来非常聪明,但现在技术上似乎不可能)我能更接近什么吗?我想要?
interface Stats { }
public class ObjectA implements Subscriber.Stats { // MORE THINGS }
public class ObjectB implements Subscriber.Stats { // MORE THINGS }
// MORE OBJECTS
这是将 String 转换为上面的类之一的第二个接口
public interface Parser<T extends Stats> {
T parse(String data);
}
现在我有了这个接口的一系列实现,我想给我不同的结果(ObjectA、ObjectB、ObjectC ..)
private final Parser<Stats>[] parsers = new Parser[] {
new Parser() {
@Override
public Stats parse(String data) {
return new ObjectA();
}
},
new Parser() {
@Override
public Stats parse(String data) {
return new ObjectB();
}
}
};
现在是“聪明”的部分,我想做一些可能不可能的事情。
如果我循环解析器数组,并且由于多态性,每个位置都给我 ObjectA,ObjectB,我可以调用类的重载方法,其签名为push(ObjectA) push(ObjectB),对吧??...好吧,这显然行不通,但有什么策略我可以用它来完成这个吗?
循环将是:
for (int i = 0; i < operations.length; i++) {
dataHolder.push(parsers[i].parse(operations[i].getResult()));
}
已编辑 的问题是该方法T parse (String value)被视为它返回Stats而不是T extends Stats因此当我调用push它时说没有push(Stats)方法
红糖糍粑
米脂
相关分类