我很困惑为什么这是允许的
public class Foo {
class Bar extends Foo {
}
}
Run Code Online (Sandbox Code Playgroud)
但这是不允许的
public class Foo {
class Bar extends Foo {
}
class Fooey extends Bar {
}
}
Run Code Online (Sandbox Code Playgroud)
编译器通知它在调用超类型构造函数之前无法引用Fooey.this.
这是允许的
public class Foo {
static class Bar extends Foo {
}
class Fooey extends Bar {
}
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?我在哪里可以找到有关内部类继承如何工作的更多信息?
编辑我遇到了两个相当糟糕的想法; 内部类扩展外部类,内部类扩展其他静态内部类.我不确定到底发生了什么以及我应该如何重构这一点.我最终只是将内部类拉出来并将它们封装在外部类中.
我们目前有一个类不能用openjdk 6编译.以下缩短的类重现了这个错误:
public class Copy implements ICopy {
public <A,B extends List<A>,C extends Map<A,B>> A method(A a, B b) {
A something = null;
return something;
}
@Override
public <A,B extends List<A>> A method2(A a, B b) {
return method(a,b);
}
}
Run Code Online (Sandbox Code Playgroud)
界面很简单,只是显示,我们无法更改签名method2:
public interface ICopy {
public <A,B extends List<A>> A method2(A a, B b);
}
Run Code Online (Sandbox Code Playgroud)
它使用oracles java版本和openjdk 7进行编译 - 但是使用openjdk 6失败了,不幸的是,这是我们用来编译(原始)代码的版本.
错误消息是
Copy.java:15: invalid inferred types for C; inferred type does not conform to declared bound(s) …Run Code Online (Sandbox Code Playgroud) 我经常遇到这个问题并且还没有找到解决方案:每当我编写一个基于Eclipse RCP的新应用程序并包含Eclipse平台的插件时,我都会继承其中一些插件的UI贡献.
大多数这些贡献(菜单条目,键盘快捷键,属性页)都很有用,但有时候我宁愿禁用其中的一些贡献,只是因为我真的不需要它们而且它们可能会混淆用户.
有没有人知道在Eclipse RCP应用程序中禁用/禁止所选贡献的官方或实用方法?
假设我有一个字符串,其中包含各种未知长度的单词.我计划使用正则表达式拆分字符串.就像是:
String resString = origString.split(".*//s.*//s")[0];
Run Code Online (Sandbox Code Playgroud)
获得前两个单词的正则表达式是什么?我在想.*//s.*//s,所有的角色,然后是空格,然后是所有角色,接着是另一个空格.但使用它给了我以前完全相同的字符串.我是以错误的方式来做这件事的吗?
任何帮助,将不胜感激!
我的pojo类中有一个名为isActive的属性.当我使用Eclipse IDE为此属性生成访问器时,它会生成以下getter和setter
Getter : isActive()
Setter : setActive()
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用ibatis框架通过提及属性名称为"isActive"来编写此属性时,它会发现无法找到任何名为"isActive"的WRITEABLE属性.我认为问题在于无法通过将setter推断为setIsActive()来推断出正确的属性名称.
在不更改属性名称或getter的情况下,最好的方法是什么?
我的模式是OR样:"word1 | word2 | word3"我有大约800个单词.
这可能是个问题吗?
我目前正在向类似应用程序服务器的框架添加JMS支持.JMS将由HornetQ(独立代理,服务器类路径上的hornetq jars)实现,但既没有JBoss也没有spring,也没有其他任何可以提供MDB的东西.
下一步是将消息侦听器添加到xa队列,以允许并行处理传入消息.有些消息会初始化长时间运行的任务,因此基本思路是从onMessage方法中生成工作线程.
在我漫长的互联网旅程中,我遇到了这个讨论,其中一位参与者提到,他不会这样做,而是使用额外的内部队列来完成任务:(单线程)消息监听器然后只需从中获取消息入站队列并为内部队列创建新消息,在该内部队列的另一端,一些工作线程争用传入消息.一旦它们被"复制"到内部队列(这对我来说没问题),入站消息就会被确认.
不幸的是,他们没有说为什么不从该onMessage方法产生工作线程更好- 也许,因为如果池中的所有线程都忙,则监听器会阻塞.所以我在寻找设计决策的优缺点:
有一段时间,可以配置maven surefire在一个构建中执行jUnit测试和testNG测试.我不会扩展我为什么这样做的原因(好的,提示:testNG是我们的标准框架,但是像jnario这样的框架需要jUnit).
一般的方法是配置如下所示的surefire插件:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>${surefire.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-testng</artifactId>
<version>${surefire.version}</version>
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这很有效,jUnit测试和testNG测试得到执行.
但是 - 现在我看到testNG也尝试执行jUnit测试(反之亦然) - 当然没有成功,因为它不会看到任何注释,但看起来它重新标记了测试"传递"...无论如何,一些报告工具不再显示jUnit测试中的测试失败,除非我评论第二个依赖项.
有没有更好的方法来配置surefire,以便两个框架的测试只能由他们的测试运行者执行?
我被一个玩笑测试设置困住了。我想测试一些客户端代码,准确地说,是一个电子预加载脚本,并且想使用 rewire 来测试未导出的方法。
被测试的脚本依赖于另一个访问window.navigator. 我可以require测试脚本,但当我使用它时,它会失败并ReferenceError: navigator is not defined在第一行出现错误。dom.jsrewire
这是显示错误的最小设置。我不使用笑话配置,因为它默认为jsdom测试环境。
dom.js
console.log('during rewire:', global.navigator) // <-- prints undefined
console.log('The added property:', global.FOO) // <-- prints undefined
const userAgent = navigator.userAgent; // <-- fails.
Run Code Online (Sandbox Code Playgroud)
索引.js
const myDom = require('./dom.js');
module.exports = {
doSomething: () => {}
}
Run Code Online (Sandbox Code Playgroud)
索引.spec.js
const rewire = require('rewire');
describe('Basic test', () => {
it('exports a function', () => {
global.FOO = 'Bar'
console.log('before rewire:', global.navigator) // prints …Run Code Online (Sandbox Code Playgroud) BigDecimal bd= new BigDecimal("00.0000000000");
//now bd format to 0E-10
if(BigDecimal.ZERO.equals(bd) || bd.equals("0E-10"))
{
flag=true;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码有两个问题
谁能建议.谢谢
java ×9
bigdecimal ×1
eclipse ×1
eclipse-rcp ×1
generics ×1
inheritance ×1
javabeans ×1
javascript ×1
jestjs ×1
jms ×1
jnario ×1
jsdom ×1
junit ×1
maven ×1
queue ×1
regex ×1
rewire ×1
setter ×1
testng ×1