相关疑难解决方法(0)

如何创建一个实现具有两个泛型类型的接口的Java类?

我有一个通用的界面

public interface Consumer<E> {
    public void consume(E e);
}
Run Code Online (Sandbox Code Playgroud)

我有一个类消耗两种类型的对象,所以我想做类似的事情:

public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple>
{
   public void consume(Tomato t) {  .....  }
   public void consume(Apple a) { ...... }
}
Run Code Online (Sandbox Code Playgroud)

显然我做不到.

我当然可以自己实施调度,例如

public class TwoTypesConsumer implements Consumer<Object> {
   public void consume(Object o) {
      if (o instanceof Tomato) { ..... }
      else if (o instanceof Apple) { ..... }
      else { throw new IllegalArgumentException(...) }
   }
}
Run Code Online (Sandbox Code Playgroud)

但我正在寻找泛型提供的编译时类型检查和调度解决方案.

我能想到的最好的解决方案是定义单独的接口,例如

public interface AppleConsumer {
   public void consume(Apple a);
} …
Run Code Online (Sandbox Code Playgroud)

java generics interface multiple-inheritance

158
推荐指数
4
解决办法
5万
查看次数

为什么我不能用不同的参数多次实现参数化接口?

我正在开发一个系统,其中小部件监听某些模型的变化.我想通过参数化通知类的接口通知小部件.为什么Java不允许这样:

public class UiInventory extends Widget implements 
    Observer<EventGetItem>, 
    Observer<EventLoseItem>, 
    Observer<EventWield>, 
    Observer<EventUnwield>, 
    Observer<EventPutOn>, 
    Observer<EventTakeOff> {
Run Code Online (Sandbox Code Playgroud)

错误消息只是重复类:'my.package.structure.Observer',但为什么它出现在第一位?

java

0
推荐指数
1
解决办法
57
查看次数

标签 统计

java ×2

generics ×1

interface ×1

multiple-inheritance ×1