我想将值设置为对象的字段,以便它首先获取该字段的先前值,然后将某些内容附加到该字段,然后将其设置为该字段。

在LambdaJ forEach中,我们可以执行以下操作:
forEach(myCollection).setFieldValue("someValue");
但是我需要的是:
forEach(myCollection).setFieldValue(getFieldValue() + "someValue");
LambdaJ有可能吗?

最佳答案

我知道您问过LambdaJ,我很想这么做,因为这是一个普遍的问题。

我对所做的结果感到惊讶:

forEach(list).setName(on(User.class).getName() + "someValue");

我虽然可以回答你的问题。

因此,我尝试使用Guava功能方法来尝试另一种方法。它可以为您工作,所以我将发布答案(但是如果您不同意,我可以将其删除):

Guava 功能化方法:
    @Test
    public void test_applyPreviousValue() {

         List<User> filteredList = Lists.newArrayList(new User("Fede", 20), new User("Peter", 12), new User("John", 41));

         Function<User, User> getType = new Function<User, User>() {
             public User apply(User input) {
                  input.setName(input.getName()+"someValue");
                  return input;
             }
         };

         Collection<User> result = Collections2.transform(filteredList, getType);
         System.out.println(result);
     }

希望对大家有帮助

关于java - 每套LambdaJ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19722880/

10-13 03:00