当前位置: 首页 > 知识库问答 >
问题:

java-将非空对象转换为动态对象

龙高超
2023-03-14

我有这个方法:

 public static Object filterObject(Object object, String objectName){
      ...
 }

我是这样称呼它的:

Entity1 entity1 = new Entity1();
//Call some setters
Test.filterObject(entity1, "Entity1");

我想将< code>Object转换为该方法中的< code>Entity1。我该怎么做?

编辑 我的问题是如何将对象转换为对象名称类的实例?

共有3个答案

晁砚
2023-03-14

正如Codebender告诉你的,这只是一个指定演员的问题:

public static Object filterObject(Object object, String objectName){
    Entity1 entity1 = (Entity1) object;
    // Your implementation here
    return entity1;
}

另一种方法是使用“泛型”,例如

public static <T extends Entity1> T filterObjectWithGeneric(T object, String objectName) {
    // Your implementation here
    return object;
}

你好。

茅才
2023-03-14

如果可能的话,你应该传递实际的类对象:

public static <T> T filterObject(Object object, Class<T> desiredClass) {
    return desiredClass.cast(object);
}

如果您确实必须传递类名,则可以使用 Class.forName:

public static Object filterObject(Object object, String className)
throws ClassNotFoundException {
    Class<?> desiredClass = Class.forName(className);
    return desiredClass.cast(object);
}
谭仰岳
2023-03-14

你应该使用泛型。

例如

public static <T> T filterObject(T object, String objectName) {
  ...
}

Entity1 entity1 = new Entity();
Test.filter(entity1, "Entity1");

通过使用泛型,您不需要强制转换,并且可以避免ClassCastException。基本上,T可以用对象的类型替换。

此外,如果要保证传递的对象是另一类型的子类,还可以使用以下方法。

public static <T extends ParentClass> T filterObject(T object, String objectName) {
  ...
}

编辑:由于上述原因,如果你不需要不同类型的混合包,你应该使用泛型而不是强制转换。关于你是否应该使用泛型,请参考这篇文章。https://stackoverflow.com/a/11402351/5085407

 类似资料:
  • 问题内容: 我需要知道如何将动态python对象转换为JSON。该对象必须能够具有多个级别的对象子对象。例如: 使用python 2.6的以下代码: 产生以下错误: 我不知道用户可能放入哪种子对象。是否有足够聪明的解决方案来检测属性是否是对象并自动对其进行解析? 更新 为在上包含子对象。 问题答案: 指定参数(doc):

  • 例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。

  • 问题内容: 我正在将struts2用于Action,将jquery用于UI … 我想知道如何将Map对象转换为JSON对象并将其发送回UI, 现在可以在JSP页面中将其打印为普通的Java Map对象: 但我希望它是这样的: 我将如何实现这一目标…? 问题答案: 尝试Gson: 不过,我不建议将这种代码放入JSP。诸如此类的事情应该存在于Servlet或Action类之类的控制器中。 您还绝对不希

  • 问题内容: 我对服务进行了调用,并将响应存储在中。但是,我试图将其转换为类对象并得到错误。这是我的代码: 响应如下所示: 这是该类的样子: 但是我得到了错误: 我究竟做错了什么? 编辑1: 这是从答案中使用gson的尝试: 但是我得到了错误: 问题答案: 找出问题所在。需要提取jsonobject而不是获取字符串。这是解决此问题的行:

  • 我应该使用什么API将Java对象转换为CSV。我可以使用google gson将java对象转换为CSV格式吗?

  • 我怎么能转换java对象到xml?我试图转换一个传入的java对象到xml在Spring集成与转换器豆。有没有其他的方法比编组在Jaxb?喜欢使用@TypeConver。或实现转换器类。