在此示例中是否声明<t>为多余?

时间:2019-02-09 15:07:08

标签: java generics

编辑:我不认为这是重复的,因为这通常不是关于泛型类声明的含义的问题。在此示例中,更多的是关于什么是多余的,哪些不是。如果此处的参数化类型的唯一目的是确保其实现Comparable,那么我在问题1和2中提出的可能结果是什么?

我正在阅读Java:《完全参考》(第11版),并且正在阅读有关泛型(在本例中为泛型接口)的内容,并且在代码下方有一些问题,这些问题在本书中没有得到解答(或更可能是我不明白):

    interface Gen<T extends Comparable<T>> {

    T GenMethod();  
}

class GenImplementation<T extends Comparable<T>> implements Gen<T> {
    T t;

    GenImplementation(T t) {
        this.t = t;
    }

    @Override
    T GenMethod() {
        return t;
    }
}

class GenMain {
    public static void main(String[] args) {
        GenImplementation<Integer> ob = new GenImplementation<>(3);
        System.out.println(ob.GenMethod());
    }
}

我尝试过一点更改接口/类声明,我想知道当...时是否有任何后果(或在其他情况下可能产生的后果)

  1. 在接口和/或类声明的<T>之后删除Comparable,例如interface Gen<T extends Comparable>

  2. 在类声明的<T>之后删除Gen,例如class GenImplementation<T extends Comparable> implements Gen

0 个答案:

没有答案