2011-06-21 7 views
0

次は有効です。ジェネリックメソッドを非ジェネリッククラスに含めることができないのはなぜですか? C#ので

public class X { 
    public void F<T>(T t) {} 
} 

と実行します。

var x = new X(); 
x.F(2); 

、それはJavaではできません。

私はジェネリックは両方の言語で異なる動作しますが、私はまだ思ったんだけど知っている...

はそのための良い理由がありますか?

+1

できます。構文が間違っている、それだけです。 – EJP

答えて

5

構文が異なります。

public class X { 
    public <T> void F(T t) {} 
} 
+0

あなたの答えをありがとう。 @MattRSと@Kalも正しく(どちらもupvoted)、あなたは最初でした:) –

+0

ありがとう。 Btw、私は、すでに存在する回答(および質問)を投稿することを推奨すべきではないと思います。 –

+0

合意。私が以前に尋ねた質問を参照してください:http://meta.stackexchange.com/questions/43898/why-duplicate-an-answer –

3

あなたはJavaで非ジェネリッククラス内の一般的なメソッドを持っていることを知ってちょうどそう。 -

それは次のようになります

public class Test { 

     public <T> void func(T t) { 
    // do something. 
      } 
} 

をあなたはそれを呼び出すないとき、test.funcは(2)、2はIntegerオブジェクト

EDITにautoboxedます:あなたの質問に答えるために、あなたが求めているものは、Javaで可能です。

3

一般宣言だけを移動することができます。

public <T> void F(T t){} 
関連する問題