我甚至不知道这是可能的,但我想出了这个主意,因为这个问题: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_的价值,你问的是更改从方法返回的值。我不认为它可以用反射来完成,但它应该可以用字节码操作。再次,为什么?你为什么想要做这样的事情?只需覆盖该方法。 –