gpt4 book ai didi

java - 如何通过反射访问抽象父类中的实例字段?

转载 作者:行者123 更新时间:2023-12-02 17:15:21 25 4
gpt4 key购买 nike

例如,StringBuilder继承自抽象类AbstractStringBuilder 。据我了解,StringBuilder本身没有字段( serialVersionUID 除外)。相反,它的状态由 AbstractStringBuilder 中的字段表示。并通过调用 super 进行操纵在它重写的方法的实现中。

有没有办法通过反射来获取私有(private)char名为 value 的数组在 AbstractStringBuilder 中声明与 StringBuilder 的特定实例关联?这是我最接近的一次。

import java.lang.reflect.Field;
import java.util.Arrays;

public class Test
{
public static void main(String[ ] args) throws Exception
{
StringBuilder foo = new StringBuilder("xyzzy");
Field bar = foo.getClass( ).getSuperclass( ).getDeclaredField("value");
bar.setAccessible(true);
char[ ] baz = (char[ ])bar.get(new StringBuilder( ));
}
}

这为我提供了一个包含 16 个空字符的数组。请注意,我正在寻找涉及反射的解决方案,因为我需要一种不限于 StringBuilder 的通用技术。 。有什么想法吗?

最佳答案

char[ ] baz = (char[ ])bar.get(new StringBuilder( ));

你的问题是你正在检查一个新的 StringBuilder...所以它当然是空的(默认大小是 16 个字符)。您需要传入 foo

关于java - 如何通过反射访问抽象父类中的实例字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361714/

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