62,615
社区成员
发帖
与我相关
我的任务
分享
定义
public void testMethod(List list){
在这里,怎样得到list里面的对象呢? <------------问题在这
}
调用方法1
List list = new ArrayList();
for(int i=0;i<10;i++){
User user = new User();
user.setName="lilei"+i;
list.add(user);
}
testMethod(list);
调用方法2
List list = new ArrayList();
for(int i=0;i<10;i++){
Person person = new Person();
person .setPersonName="lilei"+i;
list.add(person );
}
testMethod(list);
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) throws SecurityException,
NoSuchFieldException, IllegalArgumentException,
IllegalAccessException {
User2 user = new User2("Biao");
Class clazz = user.getClass();
// 使用Declared Field: 可以取得所有类型的属性,如public, protected, private
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
Object obj = field.get(user);
System.out.println(obj);
// 使用Field: 只能取得public的属性
for (Field f : clazz.getFields()) {
System.out.println(f.getName());
}
}
}
class User2 {
private String name;
public User2() {
}
public User2(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public void testMethod(List list){
Class object = list.get(0).getClass();
Field field = object.getField("name"); <----这时这里会报一个找不到对应方法的错
Object obj = field.get(object);
System.out.println(obj);
}
public class User implements Testable(){
public void test(){
//user需要测试的东西
}
}
public class People implements Testable(){
public void test(){
//people需要测试的东西
}
}
public void testMethod(List<Testable> list){
//list.get(index).test 这样测试
}
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
test1();
test2();
}
public static void testMethod(List list) throws IllegalArgumentException,
IllegalAccessException {
for (Object obj : list) {
// 取得类中声明的属性
Field[] fields = obj.getClass().getDeclaredFields();
for (Field f : fields) {
// 取得此对象中每个属性的值
f.setAccessible(true); // 设置protected, private属性可以访问,否则会抛异常
System.out.println(f.get(obj));
}
}
}
public static void test1() {
List list = new ArrayList();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setName("lilei" + i);
list.add(user);
}
try {
testMethod(list);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public static void test2() {
List list = new ArrayList();
for (int i = 0; i < 10; i++) {
Person person = new Person();
person.setPersonName("Goooooo" + i);
list.add(person);
}
try {
testMethod(list);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Person {
private String personName;
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
}