繁体   English   中英

如何使用Java反射遍历对象数组

[英]how iterate over Object arrays with java reflection

我想在反射类中遍历Object[]

这是我的课:

public class Lab  {
    public Browser[] browser;
}

class Browser {
    String url;
}

我想从实验室类的索引3到达browser []并检查url的值

您可以使用以下代码段实现此目的:

public boolean urlEquals(Lab lab, String other){
    try{
        Field browsersField = Lab.class.getDeclaredField("browsers");
        Object browsers = browsersField.get(lab);

        Object browser = Array.get(browsers, 3);

        Field urlField = Browser.class.getDeclaredField("url");
        urlField.setAccessible(true);
        Object url = urlField.get(browser);

        return url.equals(other);
    } catch(Exception e){ // probably catch specific exceptions than all
        throw new IllegalStateException(e);
    }
}

也许是这样的:

public class Lab
{
public Browser[] browser;
public static void main(String[] args)
{
Lab myLabInstance = new Lab();
myLabInstance.browser = new Browser[] { new Browser(), new Browser(), new Browser(), new Browser(), };
for (Field field : Lab.class.getDeclaredFields())
{
  System.out.println(field.getName());
  if (field.getName().equalsIgnoreCase("browser"))
  {
    field.setAccessible(true);
    Browser[] browsers = (Browser[]) field.get(myLabInstance);
    System.out.println(browsers[3].url.equals("myvalue"));
  }
}}}

class Browser
{
 public String url = "hallo";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM