相关疑难解决方法(0)

如何从Java中的不同类读取私有字段的值?

我在第三方设计的设计很差JAR,我需要访问其中一个私有字段.例如,为什么我需要选择私人领域是否有必要?

class IWasDesignedPoorly {
    private Hashtable stuffIWant;
}

IWasDesignedPoorly obj = ...;
Run Code Online (Sandbox Code Playgroud)

我如何使用反射来获得价值stuffIWant

java reflection field private class

466
推荐指数
7
解决办法
27万
查看次数

从类中获取所有字段(甚至私有和继承)

我正在做大学项目.
我需要从课堂上获得所有领域.甚至私人和继承.我试图获取所有声明的字段,然后转换为超类并重复.我的代码片段:

private void listAllFields(Object obj) {
    List<Field> fieldList = new ArrayList<Field>();
    while (obj != null) {
        fieldList.addAll(Arrays.asList(obj.getClass().getDeclaredFields()));
        obj = obj.getClass().getSuperclass().cast(obj);
    }
    // rest of code
Run Code Online (Sandbox Code Playgroud)

但它不起作用.tmpObj在铸造之后仍然是同一个类(不是超类).
我将不胜感激任何帮助如何解决铸造问题,或如何以不同的方式检索这些字段.

问题不是获取字段的访问权限,而是获取字段的名称!
我这样管理它:

private void listAllFields(Object obj) {
    List<Field> fieldList = new ArrayList<Field>();
    Class tmpClass = obj.getClass();
    while (tmpClass != null) {
        fieldList.addAll(Arrays.asList(tmpClass .getDeclaredFields()));
        tmpClass = tmpClass .getSuperclass();
    }
    // rest of code
Run Code Online (Sandbox Code Playgroud)

java reflection

52
推荐指数
4
解决办法
8万
查看次数

通过反射访问Java中的私有变量

我正在尝试编写一个方法,使用反射在类中获取私有字段.

这是我的课程(本例简化):

public class SomeClass {
    private int myField;

    public SomeClass() {
        myField = 42;
    }

    public static Object getInstanceField(Object instance, String fieldName) throws Throwable {
        Field field = instance.getClass().getDeclaredField(fieldName);
        return field.get(instance);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以说我这样做:

SomeClass c = new SomeClass();
Object val = SomeClass.getInstanceField(c, "myField");
Run Code Online (Sandbox Code Playgroud)

我得到的是IllegalAccessException因为myField是私人的.有没有办法使用反射获取/设置私有变量?(我在C#中完成了,但这是我第一次在Java中尝试过它).如果你想知道为什么需要做这样的疯狂:),这是因为有时在单元测试期间将私有变量设置为失败测试的伪值等是很方便的.

java reflection

28
推荐指数
1
解决办法
3万
查看次数

如何通过反射访问私有方法和私有数据成员?

我知道我们可以通过反射来访问私有构造函数@Sanjay T. Sharma在他的问题回答中提到:"instanceof Void"总是返回false吗?

但是,@ duffymo :

你可以使用反射访问私有 - 方法,构造函数,数据成员,一切.

  1. 如何访问私有方法和私有数据成员?
  2. 是否可以通过反射访问局部变量?
  3. 有没有办法阻止任何人访问私有构造函数,方法和数据成员?

java security reflection private

26
推荐指数
2
解决办法
6万
查看次数

访问Java中的super()类的私有变量--JChart2D

我在Java中扩展了一个类,它有一个私有变量,我希望在变量之前得到它的值.没有方法可以在超类中访问此变量.我试过super().m_zoomArea(变量在ZoomableChartjChart2D 的类中).mouseDragged调用方法时更新变量.我已重写此方法,并希望在更新之前获取变量的值.

java inheritance

10
推荐指数
3
解决办法
5万
查看次数

杰克逊如何在没有制定者的情况下设置私有财产?

我非常好奇Jackson如何创建对象,包括它的私有属性/字段,没有setter,只使用对象空构造函数.

我问的原因是当我反序列化某些属性时,我想根据这些值自动设置其他属性.例如,我不想序列化图像,只是它的路径.一旦路径被反序列化,@JsonIgnore字段Image就可以加载实际图像.在反序列化对象的构造之后,尚未分配字段.从逻辑上讲,吸气剂没有被调用.那么伏都教魔法是什么触摸我的物体私处?

public class ItemTemplate {

    private String imagePath;

    public ItemTemplate() {
        System.out.println(imagePath); //Still null
    }

    public String getImagePath() {
        System.out.println(imagePath); //Not being called when deserializing.
        return imagePath;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当杰克逊完成对这个对象的反序列化时,它已经imagePath设置好了.

java json jackson

8
推荐指数
1
解决办法
7471
查看次数

在java中访问继承的类变量

如果从声明某些成员变量的活动继承,那么如何在执行继承的子类中访问这些成员变量?

java inheritance

7
推荐指数
2
解决办法
2万
查看次数

列出Java对象的所有私有字段?

此问题类似,我需要访问POJO的一个实例的所有私有字段.不同之处在于我不知道我想要的领域的具体名称.

例如,如果我的POJO是:

public class Widget {
    private java.lang.String fizz;
    private java.lang.Boolean buzz;
    private com.me.myapp.Foo foo;
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来检查一个Widget实例(或类本身)并看到它有这三个字段/类型,而不知道它们的名字/类型提前.

这可能吗?如果是这样,怎么样?如果没有,为什么?

更新:

System.out.println("classToInspect = " + classToInspect.getName() + ", and fields are:\n");
for(Field f : allFields)
    System.out.println(f.getType());
Run Code Online (Sandbox Code Playgroud)

打印:

classToInspect = com.myorg.myapp.LoggerConfig, and fields are:

int
int
int
class java.lang.reflect.Constructor
class java.lang.Class
class java.lang.String
class java.security.ProtectionDomain
boolean
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
int
int
class sun.reflect.generics.repository.ClassRepository
long
class …
Run Code Online (Sandbox Code Playgroud)

java reflection encapsulation

3
推荐指数
2
解决办法
6662
查看次数

如何在Spring中实现@Autowired

我真的想对@autowired在Spring中如何实现有一个基本的了解.
反思应该以某种方式暗示其实施,但我无法弄清楚如何.
你能帮我吗 ?

java spring autowired

3
推荐指数
1
解决办法
942
查看次数

可以从类外部访问java私有数据成员吗?

可能重复:
Java中是否可以通过反射访问私有字段

有没有办法让我们可以在java中调用类的私有数据成员,可以在类外访问.我希望这是一个棘手的问题银行.尽管我的java体验,我认为这是可能的,但我不知道如何做到这一点.

java private data-members

2
推荐指数
2
解决办法
4万
查看次数