Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有界类型参数-是否包括上限?_Java_Generics - Fatal编程技术网

Java 有界类型参数-是否包括上限?

Java 有界类型参数-是否包括上限?,java,generics,Java,Generics,在这里读这个 若要声明有界类型参数,请列出类型参数的名称,后跟extends关键字,后跟其上限,在本例中为Number。请注意,在此上下文中,extends在一般意义上表示“extends”(如在类中)或“implements”(如在接口中) 。。。但在做了一些测试之后,似乎已经包括了上限。因此,我认为粗体部分不太准确。这里的一般含义是“扩展或相同类型”或“实现或相同类型” 我的理解正确吗 举一个学生的例子。。。说我有这个方法 public static <U extends A

在这里读这个

若要声明有界类型参数,请列出类型参数的名称,后跟extends关键字,后跟其上限,在本例中为Number。请注意,在此上下文中,extends在一般意义上表示“extends”(如在类中)或“implements”(如在接口中)

。。。但在做了一些测试之后,似乎已经包括了上限。因此,我认为粗体部分不太准确。这里的一般含义是“扩展或相同类型”或“实现或相同类型”

我的理解正确吗

举一个学生的例子。。。说我有这个方法

    public static <U extends Animal> void inspect(U u){
        System.out.println("U: " + u.getClass().getName());
    }
公共静态无效检查(U){
System.out.println(“U:+U.getClass().getName());
}
然后,我似乎可以很好地将
动物
对象传递给它,也就是说,参数不需要是
,或者
,或者动物的任何实际子类,它很可能只是
动物
(我假设
动物
当然不是抽象的)

完整的引用是(强调我的):

有时,您可能希望限制可在参数化类型中用作类型参数的类型。例如,对数字进行操作的方法可能只希望接受
Number
或其子类的实例。这就是有界类型参数的用途

若要声明有界类型参数,请列出类型参数的名称,后跟
扩展
关键字,后跟其上限,在本例中
编号
。请注意,在此上下文中,
extends
一般用于表示“extends”(在类中)或“implements”(在接口中)

总结:当上限为
Number
时,类型参数接受
Number
或其子类的实例

简而言之:上界是包含的完整的引用是(强调我的):

有时,您可能希望限制可在参数化类型中用作类型参数的类型。例如,对数字进行操作的方法可能只希望接受
Number
或其子类的实例。这就是有界类型参数的用途

若要声明有界类型参数,请列出类型参数的名称,后跟
扩展
关键字,后跟其上限,在本例中
编号
。请注意,在此上下文中,
extends
一般用于表示“extends”(在类中)或“implements”(在接口中)

总结:当上限为
Number
时,类型参数接受
Number
或其子类的实例


简而言之:上界是包含的

,粗体部分只是指语言在泛型边界中仅使用
扩展
关键字,即使该边界是一个接口,而不是同时使用
扩展
实现
@SotiriosDelimanolis的类声明,我明白。。。但这不是我的观点。似乎它还包括/允许上限。。。我是说。。。当你说“A扩展了B”时,你通常不是指“A是B的子类或与B相同的类”,你只是指“A是B的子类”。这里extends的含义比默认的含义更广泛,这是我的观点。不得不说,他们在文档中使用了一个相当糟糕的示例。如果希望
inspect
方法接受
Animal
或任何子类,将参数声明为
Animal u
就足够了。粗体部分只是指语言仅在泛型边界中使用
extends
关键字,即使边界是一个接口,与同时使用
扩展
实现
@SotiriosDelimanolis的类声明相反,我理解。。。但这不是我的观点。似乎它还包括/允许上限。。。我是说。。。当你说“A扩展了B”时,你通常不是指“A是B的子类或与B相同的类”,你只是指“A是B的子类”。这里extends的含义比默认的含义更广泛,这是我的观点。不得不说,他们在文档中使用了一个相当糟糕的示例。如果希望
inspect
方法接受
Animal
或任何子类,将参数声明为
Animal u
就足够了。