我new了个对象然后 我把值也设到到对象里面去了 添加到list 里面去 然后list遍历出来 我怎么把遍历出来的 那个对象的属性的值取出来 呢?

lizhuo1178473725 2013-04-08 03:02:26
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import com.company.databasesync.model.Student;
import com.company.databasesync.model.User;

public class Test {

public static void main(String[] args) {
new Test().xml2List2();
}

public static void xml2List2(){
List<Object> list = new ArrayList<Object>();
Student student = new Student();
student.setId(1);
student.setName("asfsf");
student.setAge(23);
list.add(student);

User user = new User();
user.setId(1);
user.setPassword("1234");
user.setUsername("nihaoa");
list.add(user);

for(Object x : list){
//取到类名
System.out.println("Name: "+x.getClass().getSimpleName());

//怎么取到User类的属性值 ????????? 十万火急.....急..! 拜托了大侠们
System.out.println("Name: "+x.getPassword());


}
}
}
...全文
306 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
酒剑仙 2013-04-08
  • 打赏
  • 举报
回复
1L的在不知道LIST里面OBJECT具体类型的时候可以用。 实际应用中,你应该要知道你放在LIST的类型,然后强制转换成该类型就可以了!
虎翼 2013-04-08
  • 打赏
  • 举报
回复

		for (Object x : list) {
			// 取到类名
			System.out.println("Name:   " + x.getClass().getSimpleName());
			
			if(x instanceof Student){
				Student s = (Student)x;
				System.out.println("Name:   " + s.getName());
			}
			
			if(x instanceof User){
				User u = (User)x;
				System.out.println("Name:   " + u.getPassword());
			}
		}


a1216164960 2013-04-08
  • 打赏
  • 举报
回复
你可以先判断类 然后强制类型转换

		for (Object x : list) {
			// 取到类名
			String name = x.getClass().getSimpleName();

			if (name.equals("User")) {
				User u = (User) x;
				System.out.println("用户密码为 " + u.getPassword());
			}

		}
wcgplayer 2013-04-08
  • 打赏
  • 举报
回复
引用 4 楼 ZZZ5512536 的回复:
Java code?12345678910111213// 如果只需要User对象,可以加个判断 for (Object x : list) { if(x instanceof User){ Field[] fields = x.getClass().getDeclaredFields(); ……
恩,顶!
ZZZ5512536 2013-04-08
  • 打赏
  • 举报
回复

// 如果只需要User对象,可以加个判断
	for (Object x : list) {
			if(x instanceof User){
				Field[] fields = x.getClass().getDeclaredFields();
				for(Field field : fields){
					System.out.println(field.getName());
					// 如果要获取该属性的值,就要通过该属性名,拼凑出该属性的get方法名getMethodName
					// 然后反射调用.
					Object value = x.getClass().getMethod(getMethodName, new Class[] {}).invoke(
							x, new Object[] {});
				}
			}
		}
「已注销」 2013-04-08
  • 打赏
  • 举报
回复
如果要取属性 可以强制装换一下,但须知每个list对象是student,还是user Student s = (Student)o; 只作为参考
wcgplayer 2013-04-08
  • 打赏
  • 举报
回复
通过对象成员的getter/setter中get方法提取
ZZZ5512536 2013-04-08
  • 打赏
  • 举报
回复
用反射呗...

// 类似这样
for (Object x : list) {
			Field[] fields = x.getClass().getDeclaredFields();
			for(Field field : fields){
				System.out.println(field.getName());
			}
		}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧