c# – 如何用Java编写泛型方法

c# – 如何用Java编写泛型方法,第1张

概述如何用 Java编写泛型方法. 在C#中,我会这样做 public static T Resolve<T>() { return (T) new object(); } 什么是Java中的等价物? 首先,你的C#示例是错误的;除非typeof(T)== typeof(object),否则它将抛出InvalidCastException.您可以通过添加 constra 如何用 Java编写泛型方法.

在C#中,我会这样做

public static T Resolve<T>()    {        return (T) new object();    }

什么是Java中的等价物?

解决方法 首先,你的C#示例是错误的;除非typeof(T)== typeof(object),否则它将抛出InvalIDCastException.您可以通过添加 constraint来修复它:

public static T Resolve<T>() where T : new() {    return new T();}

现在,这将是Java中的等效语法(或者,至少,尽可能接近):

public static <T> T Resolve() {    return (T) new T();}

注意在声明中双重提及T:一个是T in< T>参数化方法,第二个是返回类型T.

不幸的是,上述内容在Java中不起作用.由于Java泛型的实现方式,有关T的运行时类型信息不可用,因此上面给出了编译时错误.现在,你可以像这样解决这个约束:

public static <T> T Resolve(Class<T> c) {    return c.newInstance();}

注意需要传入T.class.这被称为runtime type token.这是处理这种情况的惯用方法.

总结

以上是内存溢出为你收集整理的c# – 如何用Java编写泛型方法全部内容,希望文章能够帮你解决c# – 如何用Java编写泛型方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1224338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存