我甚至不确定这是否可能,但我想到了这个想法,因为这个问题:使用Java反射更改私有静态final字段
所以这是场景:
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(String)是未定义的类型PowerMock
是我下载错了还是那是一个糟糕的示例代码?
因为我不想要更多的反对票,为什么我要这样做?
我想以不使用用户的方式注入《Minecraft》。而不是相对URI。
通过这种方式,我可以为学校的u盘制作一个预装的便携式Minecraft:D
我认为PowerMock可以做到这一点。(Java底层反射)
使用PowerMock,您的代码看起来像这样:public static void main(String[] args) {
PowerMock.mockStatic(Foo.class);
PowerMock.doReturn("worked").when(Foo.class, "test");
System.out.println(Foo.test());
}
感谢@RC上面的代码