c# – 如何用Java编写泛型方法
发布时间:2020-12-15 19:34:06 所属栏目:百科 来源:网络整理
导读:如何用 Java编写泛型方法. 在C#中,我会这样做 public static T ResolveT() { return (T) new object(); } 什么是Java中的等价物? 解决方法 首先,你的C#示例是错误的;除非typeof(T)== typeof(object),否则它将抛出InvalidCastException.您可以通过添加 const
如何用
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.这是处理这种情况的惯用方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |