我有一个复合问题。我想写一个接收3个参数的方法:
这是我到目前为止所做的,但它不完整,因为我不知道如何定义第二个参数,我不知道如何让List元素类定义单个元素(参见“ ?????“在下面的代码中”
public class Object1 {
String name;
...
}
public class Object2 {
String address;
...
}
public class MyClass {
...
private List<Object1> list1 = new ArrayList<Object1>();
private List<Object2> list2 = new ArrayList<Object2>();
...
private boolean isUnique(String s, List<?> list, String field) {
boolean result = true;
?????? element = null;
Field f = null;
Class<?> c = ?????.class;
try {
f = c.getDeclaredField(field);
f.setAccessible(true);
} catch( NoSuchFieldException e ) {
e.printStackTrace();
}
int size = list.size();
for( int i = 0; i < size; i++ ) {
element = list.get(i);
try {
if( s.equals(f.get(element))) {
result = false;
break;
}
} catch( IllegalArgumentException e ) {
e.printStackTrace();
} catch( IllegalAccessException e ) {
e.printStackTrace();
}
}
return result;
}
public boolean check(){
boolean result = isUnique("Stewart", list1, "name");
result = result & isUnique("21 pine", list2, "address");
return result;
}
}
答案 0 :(得分:1)
Object element = null;
Field f = null;
if(list.size()>0)
{
Class<?> c = list.get(0).getClass();
try {
f = c.getDeclaredField(field);
f.setAccessible(true);
} catch( NoSuchFieldException e ) {
e.printStackTrace();
}
int size = list.size();
for( int i = 0; i < size; i++ ) {
element = list.get(i);
try {
if( s.equals(f.get(element))) {
result = false;
break;
}
} catch( IllegalArgumentException e ) {
e.printStackTrace();
} catch( IllegalAccessException e ) {
e.printStackTrace();
}
}
return result;
}else
{
return true;
}