Java如何访问类的私有静态成员

Java如何访问类的私有静态成员,java,reflection,java-reflection,Java,Reflection,Java Reflection,您好,我可以知道如何访问Java类之外的私有静态成员吗 我想检查是否正确设置了值。(有关使用反射的所有必要警告。) 使用反射 import java.lang.reflect.Field; public class Test { public static void main(String[] args) throws Exception { // Class<A> clazz = A.class; // if you know the cl

您好,我可以知道如何访问Java类之外的私有静态成员吗

我想检查是否正确设置了值。

(有关使用反射的所有必要警告。)

使用反射

import java.lang.reflect.Field;

public class Test {
    public static void main(String[] args) throws Exception {
//      Class<A> clazz = A.class;            // if you know the class statically i.e. at compile time
        Class<?> clazz = Class.forName("A"); // if you know class name dynamically i.e. at runtime
        Field field = clazz.getDeclaredField("x");
        field.setAccessible(true);
        System.out.println(field.getInt(null)); // 10
    }
}

class A {
    private static int x = 10;
}
import java.lang.reflect.Field;
公开课考试{
公共静态void main(字符串[]args)引发异常{
//类(有关使用反射的所有必要警告。)

使用反射

import java.lang.reflect.Field;

public class Test {
    public static void main(String[] args) throws Exception {
//      Class<A> clazz = A.class;            // if you know the class statically i.e. at compile time
        Class<?> clazz = Class.forName("A"); // if you know class name dynamically i.e. at runtime
        Field field = clazz.getDeclaredField("x");
        field.setAccessible(true);
        System.out.println(field.getInt(null)); // 10
    }
}

class A {
    private static int x = 10;
}
import java.lang.reflect.Field;
公开课考试{
公共静态void main(字符串[]args)引发异常{

//类

我从未使用过它,但我听说PowerMock也能够测试私有方法。

我从未使用过它,但我听说PowerMock也能够测试私有方法。

您的意思是在调试时?“我想检查值是否设置正确。”不要使用反射,它会破坏封装。如果需要检查值,请引入一个(可能是私有包)字段的getter。我的意思是在测试@Federicoklezculloca时,你不需要。如果它是私有的,就不应该被访问。或者通过提供getter。@Turing85我明白了,谢谢你的意思是在调试时?“我想检查值是否设置正确。”不要使用反射,它会破坏封装。如果需要检查值,请引入(可能是包私有)字段的getter。我的意思是在测试@Federicoklezculloca时,您不需要。如果它是私有的,就不需要访问它。或者通过提供getter。@Turing85我明白了,谢谢