相关疑难解决方法(0)

为什么允许通过反射访问Java私有字段?

考虑这个例子:

import java.lang.reflect.Field;

public class Test {

    public static void main(String[] args) {
        C c = new C();
        try {
            Field f = C.class.getDeclaredField("a");
            f.setAccessible(true);
            Integer i = (Integer)f.get(c);
            System.out.println(i);
        } catch (Exception e) {}
    }
}

class C {
    private Integer a =6;
}
Run Code Online (Sandbox Code Playgroud)

允许您通过反射访问类的私有字段似乎不合逻辑.为什么有这样的功能?允许这种访问不是"危险的"吗?

java reflection private-members

43
推荐指数
4
解决办法
8061
查看次数

如何禁用Java安全管理器?

有没有办法完全禁用Java安全管理器?

我正在试验db4o的源代码.它使用反射来持久化对象,并且安全管理器似乎不允许反射来读写私有或受保护的字段.

我的代码:

public static void main(String[] args) throws IOException {
    System.out.println("start");
    new File( DB_FILE_NAME ).delete();
    ObjectContainer container = Db4o.openFile( DB_FILE_NAME );
    String ob = new String( "test" );
    container.store( ob );
    ObjectSet result = container.queryByExample( String.class );
    System.out.println( "retrieved (" + result.size() + "):" );
    while( result.hasNext() ) {
        System.out.println( result.next() );
    }
    container.close();
    System.out.println("finish");
}
Run Code Online (Sandbox Code Playgroud)

输出:

start
[db4o 7.4.68.12069   2009-04-18 00:21:30] 
 AccessibleObject#setAccessible() is not available. Private fields can not be stored.
retrieved (0):
finish


这个帖子建议修改java.policy文件以允许反射但它似乎对我不起作用.

我正在使用参数启动JVM,
-Djava.security.manager …

java security reflection db4o

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

Rhino:限制可以从JavaScript访问的Java包

将JavaScript解释器(Rhino)嵌入Java应用程序(能够编写该应用程序的脚本)时,如何限制脚本可用的Java包?例如,只能访问"java.lang.*".

javascript java scripting sandbox rhino

12
推荐指数
1
解决办法
3260
查看次数

Spring BeanFactory如何实例化非公共类?

春天新手在这里.

我观察到Spring能够实例化我定义的非公共类(即具有默认可见性的类).谁能告诉我Spring如何实现这一目标?为什么允许这样做?

java spring class-visibility

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

反射安全吗?

我正在尝试PropertyChangeSupport哪种firePropertyChange方法有用.如果担心安全性,使用反射来触发方法实际上是否安全,如下面的行中所示,或者仅仅硬编码对方法名称的调用是否更可取?如果反思是一个潜在的问题,那么如何防止呢?

method.invoke(instance, newValue);
Run Code Online (Sandbox Code Playgroud)

java security reflection

4
推荐指数
1
解决办法
1105
查看次数

Java阻止反射

我打算举办一场小型锦标赛.

竞争对手将各自提供一个Java类,实现一个接口,该接口将接受Connect Four的GameState,并返回一个移动.

如何防止团队找到其他团队的班级(通过反思)并且弄乱他们的方法来对抗一个轻松的对手?

java security reflection

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