在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编写泛型方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)