C# 为什么可以';我们在非泛型类中没有泛型方法吗?

C# 为什么可以';我们在非泛型类中没有泛型方法吗?,c#,java,generics,C#,Java,Generics,在C#中,以下内容有效: public class X { public void F<T>(T t) {} } 这在Java中是不可能的 我知道泛型在两种语言中的工作方式不同,但我仍然想知道 有什么好的理由吗?语法不同: public class X { public <T> void F(T t) {} } 公共类X{ 公共空间F(T){} } 您可以在Java中的非泛型类中使用泛型方法 看起来是这样的-- 公共类测试{ 公共无效函数(T){ //

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

public class X {
    public void F<T>(T t) {}
}
这在Java中是不可能的

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


有什么好的理由吗?

语法不同:

public class X {
    public <T> void F(T t) {}
}
公共类X{
公共空间F(T){}
}

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

看起来是这样的--

公共类测试{
公共无效函数(T){
//做点什么。
}
}
当您调用它test.func(2)时,2会自动装箱到整数对象中


编辑:要回答您的问题,无论您问什么,在Java中都是完全可能的。

您可以,只需移动您的泛型声明

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

谢谢您的回答@马特斯和@Kal也正确(两人都投了赞成票),但你是第一个:)谢谢。顺便说一句,我认为我们不应该鼓励发布已经存在的答案(和问题)。同意。看看我刚才问的问题:我们可以。你的语法不正确,仅此而已。
public class Test {

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