gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:17:01 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com