定义
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);我的list里面装的是对象,但每次对象可能不一样
有时是User这个对象,有时是Person这个对象或者是其它
解决方案 »
- 各位大哥,过来帮忙看一下这个怪问题怎么解决
- 急,谁知道记事本的撤消功能怎么实现啊?
- 不管输入什么都输出查找到,,??? a=in.read(b,0,2);
- 真心求教!!怎样判断与数据库的连接是否正常,当发生断开后如何让程序隔一段时间后自动去尝试和数据库连接????
- 请JAVA高手或是过来人进来指导一下。
- 初学者的疑惑~~~~~~~~~~~~~
- 在JB中的工具栏怎么设计?
- 关于web项目中处理多语言的问题征求建议!
- 请问VJ++开发出的东西和JDK,JBULIDER开发的东西有什摸区别?
- 强制转换和父类引用指向子类对象的区别
- 求weblogic10.3.3的下载地址
- java中title正则表达式,这个错在哪里在,怎么用正则表达式提取弹性体文档中<title></title>之间的文字
1. User和Person有一个共同的基类:import java.util.ArrayList;
abstract class People
{
private String name;
void setName(String name)
{
this.name = name;
}
}class User extends People
{}class Person extends People
{
}
public class Abc {
private ArrayList<People> list = new ArrayList<People>();
public void testMethod(ArrayList<People> list){
for (People people : list) {
people.setName("New Name");
}
}
public static void main(String[] args) {
}
}
healer_kx 确实技高一筹,我还没去考虑这个东西!
我现在是举例有User或者Person,实际可能有100多个情况,不可能一个一个判断阿
求帮助
第一,如果它们没有共性,那你确实应该像火龙果说的,分开Test~
第二,确实可以用反射,但是没有共性,也要找出来共性嘛,你做出来一个函数里面能处理多种类型的。
不是对象有共性,也得找个有共性的元数据描述它们。
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;
}}
但是想问下,我之前在网上也搜过类似的,我也试过,但不行。。
看了你这个后再去试了下也不行
不知道问题在那呢?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 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;
}
}
Returns a Field object that reflects the specified public member field of the class or interface represented by this Class object.Field getDeclaredField(String name)
Returns a Field object that reflects the specified declared field of the class or interface represented by this Class object.