我有以下课程称为A
,用方法getValue()
:
public class A {
public final int getValue() {
return 3;
}
}
方法getValue()
总是返回3,然后我还有另一个类叫做B
,我需要实现一些东西来访问该方法getValue()
在课堂里A
,但我需要返回4反而3.
Class B
:
public class B {
public static A getValueA() {
return new A();
}
}
主要班级ATest
:
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
public class ATest {
@Test
public void testA() {
A a = B.getValueA();
assertEquals(
a.getValue() == 4,
Boolean.TRUE
);
}
}
我尝试重写该方法,但实际上我不知道如何获得我想要的东西。有什么问题可以在评论里留言。
您不能重写该方法,因为它是final
。如果不是的话final
,你可以这样做:
public static A getValueA() {
return new A() {
// Will not work with getValue marked final
@Override
public int getValue() {
return 4;
}
};
}
这种方法在内部创建一个匿名子类B
,重写该方法,并向调用者返回一个实例。匿名子类中的重写返回4
, 按要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)