Java 将模型转换为列表<;对象>;田野

Java 将模型转换为列表<;对象>;田野,java,list,object,reflection,Java,List,Object,Reflection,我想找到一种将任何对象转换为其字段的列表的有效方法,例如: public class User { private String name; // John private String surname; // Wick private int age; // 55 } 将以包含以下元素的列表结束:{“John”,“Wick”,55}。 我知道我可以使用反射来完成,但是有没有ObjectUtils或ReflectionUtils方法已经在这样做了?从列表中打印内容的许多方法,

我想找到一种将任何对象转换为其字段的
列表的有效方法,例如:

public class User {
   private String name; // John
   private String surname; // Wick
   private int age; // 55
}
将以包含以下元素的列表结束:
{“John”,“Wick”,55}。


我知道我可以使用反射来完成,但是有没有ObjectUtils或ReflectionUtils方法已经在这样做了?

从列表中打印内容的许多方法,都取决于您希望如何打印它们。当您创建具有给定属性名称、姓氏和年龄的对象时,可以按任何方式打印它们。在您的示例中,我将使用一个数组,并将各个元素/属性放在这些索引中。列表是一个更高级、更灵活的版本,因此我将坚持使用这些选项。:-)下面是我“认为”你在寻找的代码

package ep.list;

import java.util.ArrayList;
import java.util.List;

public class EPList 
{
    public static void main(String[] args) 
    {
        List<User> myuserlist = new ArrayList<>();

        myuserlist.add(new User("John", "Wick", 55));
        myuserlist.add(new User("Thanos", "Bubblegum", 186));
        myuserlist.add(new User("Jiggle", "Puffy", 2));

        for ( User a : myuserlist )
        {
            System.out.println(a.name + " " + a.surname + " " + a.age);
        }
    }

    public static class User 
    {
        private String name; // John
        private String surname; // Wick
        private int age; // 55

        User(String name, String surname, int age)
        {
            this.name = name;
            this.surname = surname;
            this.age = age;
        }
    }
}
包装ep.list;
导入java.util.ArrayList;
导入java.util.List;
公共类EPList
{
公共静态void main(字符串[]args)
{
List myuserlist=new ArrayList();
添加(新用户(“John”,“Wick”,55));
添加(新用户(“Thanos”,“Bubblegum”,186));
添加(新用户(“抖动”,“蓬松”,2));
对于(用户a:myuserlist)
{
System.out.println(a.name+“”+a.姓氏+“”+a.age);
}
}
公共静态类用户
{
私有字符串名称;//John
私有字符串姓氏;//Wick
私有整数;//55
用户(字符串名称、字符串姓氏、整数年龄)
{
this.name=名称;
this.姓氏=姓氏;
这个。年龄=年龄;
}
}
}

我做了一个应该对你有帮助的方法。您的类必须为每个属性包含一个“getter”。例:

name -> getName();

User.java 主类
import java.util.List;
班长{
公共静态void main(字符串[]args){
用户u=新用户();
List List=reflectionutils.getListoFields(u);
用于(对象o:列表){
系统输出打印ln(o);
}
}
}
reflectionutils.java
import java.lang.reflect.Field;
导入java.util.List;
导入java.lang.String;
导入java.util.ArrayList;
导入java.lang.reflect.InvocationTargetException;
导入java.lang.reflect.Method;
公共类reflectionutils{
公共静态列表getListoFields(对象bean){
列表结果=新建ArrayList();
对于(字段f:bean.getClass().getDeclaredFields()){
试一试{
String name=f.getName();
name=name.substring(0,1).toUpperCase()+name.substring(1);
方法m=bean.getClass().getDeclaredMethod(“get”+name,null);
对象o=m.invoke(bean,null);
结果.加入(o);
}捕获(例外e){
System.out.println(e.getMessage());
}
}
返回结果;
}
}

为了简单起见,重写User类的toString()方法,然后将其转换为
列表

然后转换:

User a  = new User("John","Wick",55);
List<Object> items = Arrays.asList(a.toString().split("\\s*,\\s*"));
import java.util.List;

class Main {
  public static void main(String[] args) {
    User u = new User();

    List<Object> list = ReflexionUtils.getListOfFields(u);
    for(Object o : list){
      System.out.println(o);
    }
  }
}
import java.lang.reflect.Field;
import java.util.List;
import java.lang.String;
import java.util.ArrayList;
import java.lang.reflect.InvocationTargetException;    
import java.lang.reflect.Method; 

public class ReflexionUtils {

  public static List<Object>  getListOfFields(Object bean){
    List<Object> result = new ArrayList<Object>();
    for (Field f : bean.getClass().getDeclaredFields()) {
      try{
        String name = f.getName();
          name = name.substring(0,1).toUpperCase() + name.substring(1);
        Method m = bean.getClass().getDeclaredMethod("get"+name, null);
        Object o = m.invoke(bean, null);
        result.add(o);
      } catch (Exception e){
        System.out.println(e.getMessage());
      }
    }
    return result;
  }
}
public class User {
    private String name; // John
    private String surname; // Wick
    private int age; // 55

    public User(String name, String surname, int age) {
        this.name = name;
        this.surname = surname;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getSurname() {
        return surname;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return ""+getName()+ ", "+getSurname()+", "+getAge()+"";
    }
}
User a  = new User("John","Wick",55);
List<Object> items = Arrays.asList(a.toString().split("\\s*,\\s*"));
[John, Wick, 55]