gpt4 book ai didi

java - 反射:查找具有内部字段值的对象

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:12 25 4
gpt4 key购买 nike

如何从 ArrayList 中过滤出已知内部类型类、类成员(Field)及其值的单个对象?

伪代码:

class MyType {
public String TITLE;
public int ID;
}

ArrayList<MyType> myArray; // filled with data

function findRowByColumnValue(ArrayList<T> array, Field column, Object compareValue){
// list all members of "array"
// and compare the inner field "column" to "compareValue"
}

// called like this
findRowByColumnValue(myArray, MyType.class.getField("ID"), 2);

最佳答案

这是一个通用方法,可以执行您想要的操作,只不过您传入字段名称,而不是Field本身,因为这样您就可以确保字段和类对齐。考虑一个包含不同类实例混合的列表,每个类型都是MyClass(但可能是子类) - 每个类可以对给定的列名使用不同的字段。

static <T> List<T> findRowByColumnValue(List<T> array, String column, Object compareValue){
List<T> hits= new ArrayList<T>();
for (T element : array) {
if (element != null && compareValue.equals(
element.getClass().getField(column).get(element))
hits.add(element);
}
return hits;
}

您可以通过缓存给定类等的字段来进行优化,但我最初不会这样做,除非您注意到性能问题。

关于java - 反射:查找具有内部字段值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8463539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com