【问题标题】:generic interface that only allows objects that implement other interfaces只允许实现其他接口的对象的通用接口
【发布时间】:2015-05-13 15:43:54
【问题描述】:

我有一个接口A,并希望编写一个通用接口B,这样任何实现BT也必须同时实现A和@987654326 @。 A 当前不是通用接口。

这可能吗?我需要使 A 通用吗? 我曾希望能够写出类似的东西:

public interface B<T implements Comparable, A> {}

但这似乎不起作用......谁能指出我正确的方向?

我不认为这是已链接问题的重复。

【问题讨论】:

  • B&lt;T extends Comparable &amp; A&gt; 你在找什么?其中泛型类型必须是ComparableA
  • interface B&lt;T&gt; implements A, Comparable ?
  • @Mike,你能把它贴在答案中,这样我就可以给你加分了吗?
  • 你确定你的意思是说T 也实现了B?然后你会寻找interface B&lt;T extends A &amp; B&lt;T&gt; &amp; Comparable&lt;T&gt;&gt;

标签: java generics interface


【解决方案1】:

你在这里寻找的是multi-bounded generic types:

public interface B<T extends A & Comparable> {}

请注意,如果任一有界类型是 class 而不是 interface,则它必须是在 extends 之后定义的第一个边界。此外,您不能在多个 class 上使用多界泛型类型(因为 Java 中没有多重继承)

【讨论】:

    【解决方案2】:

    只需让 B 扩展 A 和 Comparable。

    public interface A {
        public void methodA();
    }
    
    public interface B<T> extends A, Comparable<T> {
        public T methodB();
    }
    
    public class BImpl<T> implements B<T> {
        @Override
        public T methodB() {
            return null;
        }
    
        @Override
        public void methodA() {
    
        }
    
        @Override
        public int compareTo(T o) {
            return 0;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      相关资源
      最近更新 更多