为什么我们不能在非泛型类中使用泛型方法?

时间:2011-06-21 04:18:21

标签: c# java generics

在C#中,以下内容有效:

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

并且做:

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

这在Java中是不可能的。

我知道泛型在两种语言中的工作方式都不同,但我仍然想知道......

有充分的理由吗?

3 个答案:

答案 0 :(得分:5)

语法不同:

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

答案 1 :(得分:3)

您知道在Java中的非泛型类中可以使用泛型方法。

看起来像这样 -

public class Test {

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

你何时调用它,test.func(2),2被自动装箱到一个Integer对象

编辑:要回答你的问题,无论你提出什么问题都可以在Java中完成。

答案 2 :(得分:3)

您可以,只需移动您的通用声明。

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