日期:2014-05-19  浏览次数:20727 次

利用反射可以读取另外一个正在运行当中的类的值吗?
我知道可以通过invoke来调用想使用的方法。
我想问一下,可以读取一个正在运行时的类的属性吗?

例如hibernate框架,我使用它在进行查找,它执行到了Loader.class的getOptionalObjectKey这个方法。
我可不可以通过反射来获得optionalObject的值?
Java code
private static EntityKey getOptionalObjectKey(QueryParameters queryParameters, SessionImplementor session)
    {
        Object optionalObject = queryParameters.getOptionalObject();
        Serializable optionalId = queryParameters.getOptionalId();
        String optionalEntityName = queryParameters.getOptionalEntityName();
        if(optionalObject != null && optionalEntityName != null)
            return new EntityKey(optionalId, session.getEntityPersister(optionalEntityName, optionalObject), session.getEntityMode());
        else
            return null;
    }


------解决方案--------------------
值的话,貌似只能通过调用getter获取。。
------解决方案--------------------
如果你这样都行,那set/get就没存在的意义了哦。
------解决方案--------------------
方法都没执行完成,你就算能得到那也只是中间数据,其实没有太大意义不是?
就如你上面那个方法一样,在return的时候才构造的EntityKey这个对象,那么之前EntityKey也都是null。获取来能有什么意义呢?
------解决方案--------------------
探讨
如果你这样都行,那set/get就没存在的意义了哦。