java - 将对象实例的所有值添加到列表中

标签 java list arraylist tolist

假设我有一个包含很多字符串值的“Dog”类,并且我希望将所有这些值都放在一个列表中,是否有比单独添加每个值更好的方法?

例如采用这个虚拟类,请注意,如果重要的话,所有值都是字符串

public class Dog {
    private String breed;
    private String name;
    private String origin;
    [...] a lot more

    getter and setter methods
    }
<小时/>
Dog dog = new Dog([...] bla bla);

是否有比以下更好的方法将实例的所有这些值放入列表中:

public List<String> toList() {
    List<String> list = new ArrayList<String>();
    list.add(dog.getBreed);
    list.add(dog.getName);
    list.add(dog.getOrigin);
    [...]
    return list;

最佳答案

您可以使用反射。

Dog dog = new Dog("val1", "val2", "val3");
            List<String> list = new ArrayList<>();
            for(Field field: Dog.class.getDeclaredFields()) {
                // since fields are private we need to first mark it accesible
                field.setAccessible(true);
                if( field.getType().equals(String.class)) {
                        list.add((String) field.get(dog));
                }
            }

关于java - 将对象实例的所有值添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58893903/

相关文章:

Python:获取多维列表中的所有对和对的频率

java - 如何使用比较器计算ArrayList中的最小字符串?

Java:使用 Hibernate 合并实例与 Oracle CLOB 数据

java - Hybris 中是否可以拦截像 CategoryProductRelation 这样的关系?

java - JCache键异常

python - 无法从Python中的双列表中存在的字典中提取键值

java - 获取 'N' 从给定日期开始的连续工作日数

python - python 中重叠列表函数在 True 时返回 False

java - 刷新 JPanel 以显示 JList 中添加的组件

java - 将数据(ArrayList)从 Activity 发送到 Fragment