我想運行一個客戶端和訪問字段來設置/獲取值。在腳本啓動時,我創建了一個加載了URLClassLoader
的客戶類的新實例,並將其指定給gameApplet
。現在NPE反射
,接下來的一段代碼工作正常(訪問靜態字段):
Class<?> clientClass = clientClassLoader.loadClass("client");
fps = clientClass.getDeclaredField("fpsOn");
fps.setAccessible(true);
fps.set(null, true);
但後來,當我試圖訪問一個非靜態字段:
logged = clientClass.getField("loggedIn");
logged.set(gameApplet, true);
我得到這個錯誤
java.lang.NullPointerException
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source)
at sun.reflect.UnsafeBooleanFieldAccessorImpl.set(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at launch.run(launch.java:206)
at java.lang.Thread.run(Unknown Source)
我假設它的實例是null,但爲什麼它會得到一個靜態字段?
請不要用'OK'或'So'開始句子。如果你刪除那些無用的術語,這句話就會讓每一點都有意義。 – 2012-02-12 08:01:04