【问题标题】:Map an object in List<DropDown>映射 List<DropDown> 中的对象
【发布时间】:2018-08-09 15:27:02
【问题描述】:

假设getter() 方法返回List&lt;Object&gt;。假设Object 类具有getFirstName()getLastName(),并尝试执行以下操作。

public List<<String,String>> getSomethingElse(@QueryParam("Id") Long Id) {
    getter(id).stream().map(p -> new PDropDown<Object>(?).collect(Collectors.toList()); 

我希望它只返回 firstNameLastName。如何映射对象以便它只返回这两个?

【问题讨论】:

  • List&lt;&lt;String,String&gt;&gt;这是什么类型的?
  • 请提供可以分析的可编译代码。

标签: java mapping response hibernate-mapping


【解决方案1】:

请注意,getter() 方法必须返回特定类型,例如 List&lt;Person&gt; 而不是 List&lt;Object&gt;,否则您必须强制转换它。
想法是将firstNamelastName 映射到PDropDown 实例,该实例提供了一个接受它们的构造函数:

你可以这样做:

List<DropDown> result =  
    getter(id).stream()
              .map(p -> new PDropDown(p.getFirstName(), p.getLastName()))
              .collect(Collectors.toList()); 

如果getter() 返回List&lt;Object&gt;,如果返回的元素之一不是Person,您可能会引发异常:

List<DropDown> result =  
    getter(id).stream()
              .map( o -> { if (o instanceof Person){
                             Person p = (Person) o;
                             return new PDropDown(p.getFirstName(), p.getLastName()); 
                          }
                          throw new IllegalArgumentException("o "+ o + " is not a Person");
                         })
              .collect(Collectors.toList()); 

【讨论】:

    猜你喜欢
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2022-07-28
    • 2019-09-19
    • 1970-01-01
    相关资源
    最近更新 更多