public <S extends CharSequence> S foo(S s){
return null;
}
我在其中一个OCJP问题中找到了这个方法。但我发现很难理解返回类型<S extends CharSequence> S
到底意味着什么。有Java知识的人可以解释一下它的含义吗?
答案 0 :(得分:2)
定义<S extends CharSequence>
表示S
是一种扩展或实现CharSequence
的类型。
请注意S
之前及之后foo
的存在。这意味着foo
返回一个扩展或实现CharSequence
的类型,并接受相同类型的参数。
答案 1 :(得分: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);
答案 2 :(得分:0)
S foo(S s)
表示foo
方法采用S
类型的参数,并返回S
。
方法foo
也定义了您可以使用它的类型:S
(您的模板化结果)是CharSequence
的子类。
例如,您可以使用以下方法调用它:
foo("example")
这将返回一个字符串(它有效,因为String
是CharSequence
的子类。
此特定实现在所有情况下都返回null。
答案 3 :(得分:0)
该行写道:
方法foo
将任何类型为S
的对象作为参数,并返回类型为S的对象,给定S
extends CharSequence
。
如果您将StringBuilder(扩展CharSequence)作为示例并将其置于此上下文中,它将提供以下内容:
public StringBuilder foo (StringBuilder s)
答案 4 :(得分:0)
<S extends CharSequence>
不是返回类型的一部分。它在泛型方法foo
中引入了一个类型参数。这里引入S
作为由CharSequence
限定的类型参数(上)。 foo
采用S
类型的参数也会返回相同的内容。