gde*_*ohn 2 java reflection abstract-class
因此,例如,StringBuilder继承自抽象类AbstractStringBuilder.据我了解,StringBuilder本身没有字段(除了serialVersionUID).相反,它的状态由字段表示,AbstractStringBuilder并通过调用super它覆盖的方法的实现来操纵.
是否有一种方法通过反射来获取声明的私有char数组与特定的实例相关联?这是我得到的最接近的.valueAbstractStringBuilderStringBuilder
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( ));
}
}
Run Code Online (Sandbox Code Playgroud)
这让我得到了一个包含十六个空字符的数组.请注意,我正在寻找涉及反射的解决方案,因为我需要一种不限于此的通用技术StringBuilder.有任何想法吗?
char[ ] baz = (char[ ])bar.get(new StringBuilder( ));
Run Code Online (Sandbox Code Playgroud)
你的问题是你正在检查一个新的StringBuilder ......所以它当然是空的(16个字符是默认大小).你需要传递foo