Java获取对象变量名和获取内部对象变量名

标签 java android

我们使用下面的代码来获取变量名称

public void printFieldNames(Object obj, Foo... foos) {
List<Foo> fooList = Arrays.asList(foos);
for(Field field : obj.getClass().getFields()) {
     if(fooList.contains(field.get()) {
          System.out.println(field.getName());
     }
  }
}

from

但是某个对象包含另一个对象,例如

class A{
 String a="nil";
 B b;
}
class B{
int n1=0;
}

如何获取对象b变量详细信息?
如何获取自定义列表类名和对象?
假设我们不知道类名和内部对象名,我们需要获取任何对象详细信息

最佳答案

我已经通过添加一些构造函数完成了代码,但除此之外它应该是相同的。

package com.example.demo;

import java.lang.reflect.Field;

public class TestMain {

    public class A {
        public String a = "nil";
        public B b;

        public A(String a, B b) {
            super();
            this.a = a;
            this.b = b;
        }
    }

    public class B {
        public int n1 = 0;

        public B(int n1) {
            super();
            this.n1 = n1;
        }
    }

    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
        TestMain test = new TestMain();
        B b = test.new B(10);
        A a = test.new A("Test", b);
        for (Field field : a.getClass().getDeclaredFields()) {
            field.setAccessible(true);
            String name = field.getName();
            Object value = field.get(a);
            if (value instanceof B) {
                B bV = (B) value;
                for (Field fieldB : bV.getClass().getDeclaredFields()) {
                    fieldB.setAccessible(true);
                    String name1 = fieldB.getName();
                    Object value1 = fieldB.get(b);
                    System.out.printf("Field name: %s, Field value: %s%n", name1, value1);
                }
            }
        }
    }
}

关于Java获取对象变量名和获取内部对象变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200165/

相关文章:

android - 重复无限数量的 AnimationDrawable 并在单击按钮时停止

java - 在编写 JUnit 案例时需要帮助

java - org.json.JSONObject 从字符串创建 JSONObject 抛出 java.lang.RuntimeException

java - Spring @CachePut 用两个键放置相同的值

android - facebook sdk 4.1 for android : how to handle token expiration

java - Android Camera2 API YUV_420_888 到 JPEG

android - 上下文的单例包装器

Android setFocusArea 和自动对焦

java - 如何检查文本字段是否为空?

java - 如何使用 Swing 减少打开文件的加载时间?