我甚至不知道這是可能的,但我想出了這個主意,因爲這個問題:Change private static final field using Java reflection如何注入方法的返回值?
所以這是該方案:
public static String test() {
return "test test test";
}
我想這樣做,讓什麼test()方法返回「工作」而不是「測試測試」。 有沒有人有一個想法如何做到這一點?
編輯:
我下載powermock並試圖這樣:
package test;
import org.powermock.api.easymock.PowerMock;
public class InjectorTest {
public static void main(final String[] args) { System.out.println("Before the injection:"); System.out.println(test()); PowerMock.mockStatic(InjectorTest.class); PowerMock.doReturn("worked").when(InjectorTest.class, "test"); System.out.println("After the injection:"); System.out.println(test()); } public static String test() { return "did not work :("; }
}
但是Eclipse給出了這樣的錯誤:該方法doReturn(字符串)是未定義的類型PowerMock
我下載了錯誤的代碼還是代碼錯誤?
因爲我不想要更多的投票權,爲什麼我想這樣做?
我想以這種方式注入Minecraft,它不使用user.home而是使用相對URI。
這樣,我可以做一個預安裝便攜的Minecraft一個USB記憶棒的學校:d
你爲什麼要這麼做? – Mat
你應該多說一點,你爲什麼要這麼做,在什麼情況下...... – 2011-11-26 14:05:50
你引用的問題是一個完全不同的問題 - 它處理的是改變_field_的價值,你問的是更改從方法返回的值。我不認爲它可以用反射來完成,但它應該可以用字節碼操作。再次,爲什麼?你爲什麼想要做這樣的事情?只需覆蓋該方法。 –