
[英]Convert a List of Object arrays to a List of model Beans grouped by id
[英]Convert model to List<Object> of fields
我想找到一种将任何对象转换为其字段的List<Object>
的有效方法,例如:
public class User {
private String name; // John
private String surname; // Wick
private int age; // 55
}
最终将作为带有下一个元素的列表: {"John", "Wick", 55}.
我知道我可以使用反射来做到这一点,但是是否有任何 ObjectUtils 或 ReflectionUtils 方法已经这样做了?
我做了一个应该对你有帮助的方法。 您的类必须为每个属性包含一个“getter”。 前任:
name -> getName();
import java.lang.String;
public class User {
private String name;
private String surname;
private int age;
public User(){
this.name = "John";
this.surname = "Wick";
this.age =55;
}
public String getName(){
return this.name;
}
public String getSurname(){
return this.surname;
}
public int getAge(){
return this.age;
}
}
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;
}
}
从列表中打印出来的东西有很多方法,都取决于你想如何打印出来。 当您创建具有给定属性名称、姓氏和年龄的对象时,您可以以任何您想要的方式将它们打印出来。 在您的示例中,我将使用一个数组并将各个元素/属性放在这些索引中。 列表是一个更高级和更灵活的版本,所以我会坚持使用那些。 :-) 下面的代码是我“认为”你正在寻找的。
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;
}
}
}
为简单起见,重写 User 类的 toString() 方法,然后将其转换为List<Object>
。
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.