2017-05-25 9 views
0

これは愚かな質問でも、Kotlinはまだ私には新しく、構文 "タイプ"に慣れていないので解決策を見つけることが難しいです。私は基本的に例の一番下の行ごとに返すときにスマートキャスティングのオブジェクトタイプを保持する方法Any

は例のcrassnessを口実に、私はまだそれを操作できるように、クラスの拡張メソッドは、独自のインスタンスを返すようにしたい

fun Any?.test(): Any? 
{ 
    return this 
} 

"test string".test() // implicit string is now type of "Any" 
"test string".test().substring() // what i'm trying to achieve 

は、

を下に簡素化されました
+0

テスト機能は何をすべきでしょうか? – rozina

+0

コンソールにタイプに関係なくオブジェクトをログアウトして、連鎖も許可します – ScruffyFox

答えて

1

あなたはそれが動作するはずです、あなたの拡張機能は、一般的なことができます。

fun <T> T?.test(): T? 
{ 
    return this 
} 
+1

'T? 'を使用すると、常にnull可能な型を返すことになります。 'T?'を 'T'に置き換えると、' T'がヌル可能な場合にのみヌル可能型を返します。 – mfulton26

+0

この答えは、@ zsmb13の – voddan

+0

が確実に 'T? 'を返さない場合には、コンパイラが結果*がnullである可能性があることを知りません。 – ScruffyFox

5

あなたはgeneric functionを使用することができます。

fun <T> T.test(): T { 
    return this 
} 
関連する問題