我在下面有一个示例类,我想返回某些类型的所有类字段,在此类型为Image的示例中.
public class Contact {
private String surname, lastname, address;
private int age, floor;
private Image contactPhoto, companyPhoto;
private boolean isEmployed;
public String[] getAllImages() {
String images[] = // missing code
return images;
// in this case, I want to return {"contactPhoto","companyPhoto"}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要一个帮助.如何查找特定类型的所有类字段.我将在另一个类c中调用此方法.
使用反射来访问类上声明的字段.然后迭代字段并检查它们的类型是否匹配Image.
您还可以通过接受target Class和searchType这两个参数来创建更有用的方法Class.然后该方法将搜索具有target该类型的字段searchType.
我还建议将此方法设为静态,因为它实际上不依赖于任何类状态.
例
public class Contact {
private String surname, lastname, address;
private int age, floor;
private Image contactPhoto, companyPhoto;
private boolean isEmployed;
public static String[] getFieldsOfType(Class<?> target, Class<?> searchType) {
Field[] fields = target.getDeclaredFields();
List<String> results = new LinkedList<String>();
for(Field f:fields){
if(f.getType().equals(searchType)){
results.add(f.getName());
}
}
return results.toArray(new String[results.size()]);
}
public static String[] getAllImages(){
return getFieldsOfType(Contact.class, Image.class);
}
public static void main(String[] args) {
String[] fieldNames = getAllImages();
for(String name:fieldNames){
System.out.println(name);
}
}
}
Run Code Online (Sandbox Code Playgroud)