java - 从传递的参数将对象转换为类

标签 java generics jackson

我有一个代码:

RequestHandler.java

public class RequestHandler extends BaseWebSocketRequestHandler {
 ...
 public void handle(Request request)
 getData(request, Model.class)
 ...
}

BaseHandler.java

public abstract class BaseHandler {
 ...
 <
 T > void getData(Request request, Class < ? > clazz) {
   ...
   ?
   ? ? ? ?
   ...
  }
  ...
}

如何将请求从调用方法转换为 Model.class。现在我得到了LinkedHashMap 请帮助。谢谢

最佳答案

使用反射,您可以获取类的构造函数并获取新实例。 在类上创建一个新实例是可能的,但通常构造函数应该这样做很糟糕 运行。

您还可以使用该类将对象转换为它,T。

//     type parameter
//      |  result: Model                Model.class
//      |  |                             |
public <T> T getData(Request request, Class<T> clazz) {
    Object value = map.get(clazz); // A map of class to class instance.
    if (value != null) {
        return clazz.cast(value);
    }

    T object = clazz.getConstructor().newInstance();
    return object;
}

关于java - 从传递的参数将对象转换为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58930372/

相关文章:

c# - 如何获得具有多个类型参数的泛型类的类型? - C#

java - 在运行时将属于 JSON 对象一部分的 JSON 字符串转换为 JSON 对象

java - 使用 Java/Jackson 库从 JSON 反序列化二维数组会抛出异常

java - Selenium 中的 Webelement.click

java - 试图将所有联系人放入 ListView 中?

c# - 泛型如何实现结构?

jackson - 让 Jackson XMLMapper 读取根元素名称

java - Android Google Play 抽屉导航样式

java - 我的 s3 存储桶中的图像不会在浏览器中打开,它们只会下载

C++ 保留指向模板对象的指针集合,所有指针都派生自非模板类