代码之家  ›  专栏  ›  技术社区  ›  pvgoddijn

如何在单个对象上接受泛型参数的父类型?

  •  0
  • pvgoddijn  · 技术社区  · 16 年前

    是否可以只接受类的泛型类型的父类型?

    我要找的是:

    class <T extends Object> MyClass {
    
        public <TS super T> void myMethod(TS someObjectSuperToTheClass) {
             //do stuff
        }
    
    }
    

    我真的不再需要它了(也许从一开始就没那么有用了),但我很好奇这是否有可能,如果没有,为什么。

    2 回复  |  直到 15 年前
        1
  •  3
  •   notnoop    16 年前

    不,你不能!只有通配符才能有 super 约束。

        2
  •  6
  •   Andrzej Doyle    16 年前

    想想在这种情况下意味着什么。

    你要断言 TS 要么是 T 或者它的任何超类。但自从 TS 只是一个参考,实际 someObjectSuperToTheClass 参数可以是 TS 或子类。

    把两部分放在一起,你的代码完全等同于

    public void myMethod(Object someObjectSuperToTheClass) { //do stuff }
    

    既然在一起,你就明白了 TS 可以在类层次结构中向上移动到所需的高度,并且参数可以向下移动到所需的高度。

    你是什么人 尝试 用这种语法将参数约束到?