public <S extends CharSequence> S foo(S s){
return null;
}
我在其中一個OCJP問題中發現了這種方法。但是我發現很難理解返回類型<S extends CharSequence> S
的含義。有人在Java中有知識可以解釋我的含義嗎?<S擴展CharSequence> S的意思是什麼?
public <S extends CharSequence> S foo(S s){
return null;
}
我在其中一個OCJP問題中發現了這種方法。但是我發現很難理解返回類型<S extends CharSequence> S
的含義。有人在Java中有知識可以解釋我的含義嗎?<S擴展CharSequence> S的意思是什麼?
定義<S extends CharSequence>
表示S
是擴展或實現CharSequence
的類型。
請注意在foo
之前及之後存在S
。這意味着foo
返回一個類型,該類型擴展或實現了CharSequence
,並接受相同類型的參數。
S foo(S s)
表示foo
方法採用類型爲S
的參數,並將返回S
。
此外,方法foo
正在定義哪種類型可用於:S
(您的模板化結果)是CharSequence
的子類。
例如,您使用可以稱之爲:
foo("example")
這將返回一個字符串(這是有效的,因爲String
是CharSequence
一個子類
而且這種具體實施在所有情況下返回null。
我的意思是說,foo方法需要一個CharSequence(或它的子類或實現類)並作爲參數,並返回相同的類型作爲返回v ALUE。
例如,你可以調用類的方法,這
CharSequence s = ...
CharSequence result = foo(s);
或
String s = ...
String result = foo(s);
或
StringBuffer s = ...
StringBuffer result = foo(s);
但是,它不允許你使用不匹配的返回和參數類型。這些都不是OK:
String s = ...
StringBuffer result = foo(s);
或
StringBuffer s = ...
String result = foo(s);
線讀取: 方法foo
作爲參數S
類型的任何對象,並返回型S的目的,給定S
延伸CharSequence
。 如果你採取的StringBuilder(擴展的CharSequence)爲例,把它在這方面它會給如下:
public StringBuilder foo (StringBuilder s)
<S extends CharSequence>
不是一部分的返回類型。它在您的通用方法foo
中引入了一個類型參數。這裏S
被引入作爲由CharSequence
定界的類型參數(上)。foo
需要參數類型S
也返回相同。