2
4

5 回答 5

3

定义<S extends CharSequence>意味着这S是一个扩展或实现的类型CharSequence

注意它S之前foo和之后的存在。这意味着foo返回一个可以扩展或实现的类型CharSequence,并接受相同类型的参数。

于 2011-11-27T15:43:47.693 回答
1

我的意思是方法 foo 采用 CharSequence (或者它的子类或实现类)并作为参数并返回与返回值相同的类型。

例如,您可以像这样调用该方法

CharSequence s = ...
CharSequence result = foo(s);

或者

String s = ...
String result = foo(s);

或者

StringBuffer s = ...
StringBuffer result = foo(s);

但是,它不允许您使用不匹配的返回和参数类型。这些都不行:

String s = ...
StringBuffer result = foo(s);

或者

StringBuffer s = ...
String result = foo(s);
于 2011-11-27T15:46:50.257 回答
0

S foo(S s)表示该foo方法接受一个类型为 的参数 S,并将返回一个S.

该方法foo还定义了您可以将其用于哪种类型:(S您的模板化结果)是CharSequence.

例如,您可以使用以下方式调用它:

foo("example")

这将返回一个字符串(它是有效的,因为它StringCharSequence.

而这个特定的实现在所有情况下都返回 null。

于 2011-11-27T15:46:11.670 回答
0

该行内容如下: Methodfoo将任何类型的对象作为参数,S并返回一个 S 类型的对象,给定Sextends CharSequence。如果您以 StringBuilder(扩展 CharSequence)为例并将其放在此上下文中,它将给出以下内容:

public StringBuilder foo (StringBuilder s) 
于 2011-11-27T15:47:42.340 回答
0

<S extends CharSequence> 不是返回类型的一部分。它在您的泛型方法中引入了一个类型参数foo。这里S作为类型参数(上)引入,由CharSequence. foo接受一个类型的参数S也返回相同的。

于 2011-11-27T15:48:25.667 回答