Java T 初始化

标签 java wcf generics collections

如何创建类T?

我需要从对象 T 的某些 Windows Communication Foundation (WCF) XML 进行绑定(bind)。

我可以毫无错误地做到这一点:

ArrayList<T> list = new ArrayList<T>();

这是我的功能:

public static <T> ArrayList<T> GetListFromXml(String url,String element)

如何获取:T obj = ?

最佳答案

这是不可能的,因为 type erasure编译器。如果您在调用方有一个带有默认构造函数的具体类型,则以下方法可能有效:

public static <T> ArrayList<T> GetListFromXml(String url,String element, Class<? extends T> type) {
  T obj = type.newInstance();
  ...
}

如果需要向构造函数传递参数,则必须通过getConstructor(parameter type 1, ...) 从类中获取(您需要处理此处未显示的异常) :

MyParamType1 param1 = ...;
MyParamType2 param2 = ...;
Constructor<T> cons = type.getConstructor(MyParamType1.class, MyParamType2.class);
T obj = const.newInstance(param1, param2);

关于Java T 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9518515/

相关文章:

java - Android 的最高和最低价格价格栏

c# - 通过 Remoting/WCF 在远程计算机上部署和执行代码

c# - 使用 WebChannelFactory 创建后处理客户端

wcf - MSMQ WCF 限制

java - Java 中的 "both arguments must have the same type"怎么说?

java - 返回集合的通用方法给出不安全类型转换警告

ios - swift 无法转换类型的值

java - 如何将 Antlr4 生成的词法分析器/解析器集成到我的 java 项目中

java - 使用 Apache POI 在 Java 中导出到 Excel

java - 无法在 java netbeans 中创建按钮网格