如何从 Java 中的字符串访问对象属性?

马赫泽橡木

我有一个字符串,它告诉我应该使用什么属性来进行一些过滤。如何使用此 String 实际访问对象中的数据?

我有一个返回字符串列表的方法,告诉我如何过滤我的对象列表。如:

String[] { "id=123", "name=foo" }

所以我的第一个想法是将字符串分成两部分:filterString.split("=")并使用字符串的第一部分(例如“id”)来标识被过滤的属性。

对于 JS 背景,我会这样做:

const attr = filterString.split('=')[0]; // grabs the "id" part from the string "id=123", for example
const filteredValue = filterString.split('=')[1]; // grabs the "123" part from the string "id=123", for example
items.filter(el => el[`${attr}`] === filteredValue) // returns an array with the items where the id == "123"

我怎么能用 Java 做到这一点?

博拉兹

您可以使用反射通过动态名称获取类的字段。

@Test
void test() throws NoSuchFieldException, IllegalAccessException {
    String[] filters = {"id=123", "name=foo"};

    List<Item> list = newArrayList(new Item(123, "abc"), new Item(2, "foo"), new Item(123, "foo"));

    Class<Item> itemClass = Item.class;

    for (String filter : filters) {
        String key = StringUtils.substringBefore(filter, "=");
        String value = StringUtils.substringAfter(filter, "=");

        Iterator<Item> iterator = list.iterator();
        while (iterator.hasNext()) {
            Item item = iterator.next();

            Field field = itemClass.getDeclaredField(key);
            field.setAccessible(true);
            Object itemValue = field.get(item);

            if (!value.equals(String.valueOf(itemValue))) {
                iterator.remove();
            }
        }
    }

    assertEquals(1, list.size());
}

但我同意 sp00m 的评论——它很慢而且有潜在危险。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在具有JSON字符串的Java脚本对象中访问特定的键值对

如何对象转换为Java中的查询字符串?

如何从Java脚本中的字符串创建对象树

如何正确比较 Java 中的字符串(和对象)?

java中如何将字符串转换为json字符串和对象

Java-如何通过字符串访问Enum Class和Enum对象?

如何从Ruby on Rails API中解析这些由哈希值转换为字符串的字符串,以便可以将其作为Java对象中的对象进行访问?

如何对象的多个属性转换为列表<字符串>用java 8

地图<字符串,地图<对象,对象>>如何获得值对动态java中

如何访问JSON字符串中的嵌套对象

如何在java中访问字符串中的特定索引?

如何遍历Java中的字符串?

如何匹配的字符串(?,?,?)在Java中

如何比较Java中的字符串?

Java。如何从两个字符串数组或列表中删除相同的字符串对象

如何检查字符串是否不等于Java中的对象或其他字符串值?

对象对象如何返回字符串?(Java)

如何使用字符串访问实例中的Java类成员

如何打印存储在Java数组中的对象中存储的字符串

如何访问字符串Java的特定部分?

如何将json字符串转换为c#中的对象,然后动态访问它的属性?

如何访问来自反序列化 json 字符串的 asp.net 对象中的属性

如何基于Java中的属性值将对象列表转换为字符串列表?

在Java中,如何获取给定字符串名称的属性?

如何访问与该属性名称相对应的给定字符串的对象属性

春天如何在Java对象中设置从Angular获取的JSON字符串

如何将JSON字符串转换为JAVA android中的对象

如何从Java数组中获取具有固定字符串的对象?

如何在Java中检查Set是否包含具有某些字符串值的对象?