我有几个月的开发Extjs Web应用程序的经验.我遇到了这个问题:
当我覆盖一个类时,我修改了方法并按照前面的实现进行了调用callParent()
.重写部分可以工作但callParent()
调用旧的实现.
我的首要代码
Ext.override(Ext.layout.component.Draw, {
finishedLayout: function (ownerContext) {
console.log("new layouter being overriden");
this.callParent(arguments);
}
});
Run Code Online (Sandbox Code Playgroud)
要重写的Extjs类方法:
finishedLayout: function (ownerContext) {
var props = ownerContext.props,
paddingInfo = ownerContext.getPaddingInfo();
console.log("old layouter being overriden");
this.owner.setSurfaceSize(props.contentWidth - paddingInfo.width, props.contentHeight - paddingInfo.height);
this.callParent(arguments);
}
Run Code Online (Sandbox Code Playgroud)
在控制台中,我可以看到第一个新的layouter打印出消息,然后是旧的layouter实现...我放了一个断点并回溯调用堆栈,callParent()
新的layouter称为旧的.我需要调用父类,而不是重写方法.
知道如何解决这个问题吗?
我有关于设置Junit Test Suite的问题.首先,我使用的是JUnit libarary 4.7版.
我的问题是在测试套件中创建应用程序上下文,然后允许应用程序上下文访问它运行的所有测试套件.我需要应用程序上下文是因为某些单元测试正在使用它来填充所需的数据.所以我正在重复一些课程去做.
以下是我的snipplet:
@RunWith(Suite.class)
@SuiteClasses({RestServiceUnitTest.class})
public class IntegrationSuite {
public ApplicationContext appCtx;
@BeforeClass
public static void setUp() {
System.out.println("setting up in Suite");
appCtx = new FileSystemXmlApplicationContext("/integrationtest/rest_test_app_ctx.xml" );
}
@AfterClass
public static void tearDown() {
System.out.println("tearing down in Suite");
CleanUp cleaner = (CleanUp)appCtx.getBean("cleanup");
cleaner.clean();
}
}
Run Code Online (Sandbox Code Playgroud)
我需要可以访问RestServiceUnitTest类的appCtx.我可以知道这是怎么做到的吗?任何人都有任何想法.
我猜它非常类似于: 测试调用:如何设置所有测试套件的通用性
但是我不知道如何访问你在unittest中的testsuite类中创建的变量,因为答案没有提到它.
只想通过JDK8看看lambda程序有多小,我的方法是使用结果构建器:
IntStream.rangeClosed(0 , 100).forEach(i ->{
StringBuffer bfr= new StringBuffer();
if(i % 3 == 0 )
bfr.append("Fizz");
if(i % 5 == 0 )
bfr.append("Buzz");
if(i % 3 != 0 && i % 5 != 0 )
bfr.append(i);
System.out.println(bfr.toString());
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以尝试使用谓词吗?我想不出办法做到这一点.
我有一个字符串和B字符串,app如果不是null则更喜欢A,并调用转换方法changeA()
.但是,如果A为null,则它将使用B和invoke方法changeB()
.两个转化方法返回相同的对象类型Result
.但有一点需要注意的是,str B也可能为null,如果该情况返回null.
我如何使用JDK中的optional和lambda表达式来解决这个问题.
我有以下代码库:
changeA(){
..
}
changeB(){
..
}
aMethod(){
Optional<String> optA=Optional.ofNullable(a);
Result result = optA.map( aStr -> this.changeA( aStr ) ).orElse( this.changeB( bStr ) );
}
Run Code Online (Sandbox Code Playgroud)
这看起来有点奇怪,因为orElse方法使用的变量不在lambda的范围内.我可以知道最好的方法吗?
也许我应该说明为什么我选择了Optional.我希望我的团队的开发人员明白,即使字符串A是首选,它也可能是null,必须处理,因为代码的一部分是敏感的.字符串B仅用于记录的遗留部分.希望这澄清了我对这种方法的意图.
java-8 ×2
lambda ×2
extjs ×1
extjs4 ×1
fizzbuzz ×1
java ×1
junit4 ×1
optional ×1
overriding ×1
test-suite ×1
unit-testing ×1