【问题标题】:Static Generic methods in .Net vs Java.Net 与 Java 中的静态泛型方法
【发布时间】:2017-05-15 12:20:43
【问题描述】:

我不确定。

在 C# 中,我可以执行以下操作。

public class Helper<T> where T : new()
{
    public static T SomeHelperFunction(string strValue)
    {
        return new T();
    }
}

这里,静态方法可以清楚地利用传递给Helper类的类型。

这是我在 Java/Android 中的确切尝试

public class Helper<T> {
    public static T SomeHelperFunction(String strValue){
        //some code
    }
}

Java 抱怨 SomeHelperFunction 中使用的 T。为什么 .Net 允许这样做,但 Java 不允许,还是我遗漏了什么?

如何在 Java 中创建 .Net 类?

【问题讨论】:

标签: java c# android .net generics


【解决方案1】:

你可以这样做

public class Helper<T> {
public static <T> T SomeHelperFunction(String strValue){
    //some code
}
}

在 Java 中,静态泛型方法需要自己的泛型声明;

【讨论】:

  • 如果我将类型传递给 Helper 类,是否会在静态方法上自动推断类型?
  • 在这种情况下不需要是class Helper&lt;T&gt;;只是class Helper
  • @khelwood 这个问题与泛型类型参数是否继承自类本身有明确的关系,因此尽管在此示例中并不真正需要它,但它适合问题设置。
  • 使用类参数T 在这里是个坏主意,因为它与答案的正确性背道而驰。对static 方法的通用参数使用相同的符号T 是一种可怕的做法,因为它会导致极大的混乱。糟糕的答案和更糟糕的缺陷理由。投反对票。
猜你喜欢
  • 1970-01-01
  • 2012-08-26
  • 2011-12-20
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 2010-10-30
相关资源
最近更新 更多