我有3个班:
public class Alpha {
public Number number;
}
public class Beta extends Alpha {
public String number;
}
public class Gama extends Beta {
public int number;
}
Run Code Online (Sandbox Code Playgroud)
为什么以下代码编译?而且,为什么测试通过没有任何运行时错误?
@Test
public void test() {
final Beta a = new Gama();
a.number = "its a string";
((Alpha) a).number = 13;
((Gama) a).number = 42;
assertEquals("its a string", a.number);
assertEquals(13, ((Alpha) a).number);
assertEquals(42, ((Gama) a).number);
}
Run Code Online (Sandbox Code Playgroud) 我最近为Eclipse安装了Checkstyle插件,并且个人认为它非常棒.但它给我的一个警告有点模糊.确切的警告是" 不允许使用".它是关于某些行中的后缀++
++
for(int i = 0; i < SOMETHING; i++)
Run Code Online (Sandbox Code Playgroud)
好吧,我知道这foreach
是迭代的更好构造,但它无法在任何地方应用,有时老学校++
是唯一的选择.
当我将行更改为
for(int i = 0; i < SOMETHING; ++i)
Run Code Online (Sandbox Code Playgroud)
警告消失了.我知道之间的区别i++
,并++i
和这一点我的生活我认为他们在标准的可互换for
建设.但Checkstyle认为i++
有害(或容易出错).
问题:为什么前缀增量优于for
构造中的后缀增量?或者...... Checkstyle错了吗?
static int retIntExc() throws Exception{
int result = 1;
try {
result = 2;
throw new IOException("Exception rised.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
result = 3;
} finally {
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
我的一个朋友是.NET开发人员,目前正在迁移到Java,他问我关于这个来源的以下问题.理论上,这必须throw IOException("Exception rised.")
和整个方法retIntExc()
必须throws Exception
.但没有任何反应,该方法返回2.
我没有测试他的例子,但我认为这不是预期的行为.
编辑:谢谢你的所有答案.有些人忽略了调用方法的事实retIntExc
,这意味着这只是一些测试/实验示例,显示了抛出/捕捉机制中的问题.我不需要'修复',我需要解释为什么会这样.
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("run");
throw new SomeRandomException();
}
}, 1000, 1000);
Run Code Online (Sandbox Code Playgroud)
输出:run(抛出异常)
问题在于:我需要一个计时器任务来检查数据库中的特定条件(或其他).它工作正常,但有时数据库(或其他)返回一些错误,抛出异常并且计时器崩溃,然后再没有执行单个计时器任务.是否有一些Timer实现在抛出异常后继续工作run()
.
我可以
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
System.out.println("run");
throw new SomeRandomException();
} catch (Exception e) {
System.out.println("dummy catch");
}
}
}, 1000, 1000);
Run Code Online (Sandbox Code Playgroud)
但这似乎很蹩脚.
另一种方法是编写我自己的Timer类实现,吞掉run方法的异常(这似乎也不对).
是否有一些集合实现支持元素到期.
例如:
Collection<User> cachedUsers = new ExpirableList<User>(10000);
Run Code Online (Sandbox Code Playgroud)
哪里
public ExpirableList(final long timeout){...}
Run Code Online (Sandbox Code Playgroud)
在给定时间之后(10000ms
在此特定示例中),将从集合中移除添加的元素.通过使用它,我们将防止我们的cachedUsers
集合溢出.
我有一个由名称和分数组成的字符串数组.我想按分数对该数组进行排序.问题是,考虑到它是一个字符串数组,分数是字符串,导致13,16,2,5,6而不是2,5,6,13,16.我正在使用此代码:
int spaceIndex;
String[][] scoreboard;
String[] playername;
String[] score;
int sbsize;
array1.add("Thomas" + ":" + 5);
array1.add("Blueb" + ":" + 6);
array1.add("James" + ":" + 16);
array1.add("Hleb" + ":" + 13);
array1.add("Sabbat" + ":" + 2);
sbsize = array1.size();
scoreboard = new String[sbsize][2];
playername = new String[sbsize];
score = new String[sbsize];
pos2 = new int[sbsize];
for (int i=0; i<array1.size(); i++)
{
spaceIndex = array1.get(i).indexOf(':');
scoreboard[i][0] = array1.get(i).substring(0, spaceIndex);
scoreboard[i][1] = array1.get(i).substring(spaceIndex+1, array1.get(i).length());
}
Arrays.sort(scoreboard, new Comparator<String[]>() {
@Override
public int …
Run Code Online (Sandbox Code Playgroud) 我必须生成一些随机数并将它们相加.就像是
result = generateList(range(0, max), generatorFunctionReturningInt()).foreach(sum _)
Run Code Online (Sandbox Code Playgroud)
如果generateList
生成一个List
size = max和生成的值generatorFunctionReturningInt
或者可能是类似的东西
result = range(0, max).map(generatorFunctionReturningInt).foreach(sum _)
Run Code Online (Sandbox Code Playgroud) 我正在使用wkhtmltopdf工具从htmls生成pdf文件.
HTML链接远销很好,但一些链接的资源是暂时的链接(30分钟后到期),所以我需要生成PDF的过程中进行下载.我试图将http链接转换为本地链接,但这不起作用.
我厌倦了改变
http://remote_server/Linked%20file.pdf
Run Code Online (Sandbox Code Playgroud)
至
file://relative_path/Linked%20file.pdf
Run Code Online (Sandbox Code Playgroud)
错误:无法打开外部链接.
我确定所需的文件位于relative_path /
它在我使用绝对路径时有效,
file:///home/user/relative_path/Linked%20file.pdf
Run Code Online (Sandbox Code Playgroud)
但是这些文件将成为zip的一部分,所以我不知道用户将在哪里提取它们(因此我不能使用绝对路径).
编辑: 链接如下
file://attachments/2ce8a9c9a41a4e7f94e8b57c13974020/93/original/Doc 3 Exhibit 2 Business Plan.pdf
Run Code Online (Sandbox Code Playgroud)
错误是
Error when getting information for file '/2ce8a9c9a41a4e7f94e8b57c13974020/93/original/Doc 3 Exhibit 2 Business Plan.pdf': No such file or directory)
Run Code Online (Sandbox Code Playgroud)
这意味着当我点击链接时,它会尝试在根目录中找到该文件,而不是在相对路径中.当我移动文件在根文件夹中/ 2ce8a9c9a41a4e7f94e8b57c13974020/93 /原来/文件3图表2商务Plan.pdf链接的作品,并打开该文件.
我的团队愿意开始编写代码的单元测试(我们甚至会尝试TDD).
是否有一些好的示例Flex项目具有良好的单元测试?
我的一些同事缺乏纪律,并不总是写他们班级的文件(并不总是=从不).我试图通过为缺少注释javadocs设置项目警告来强制他们编写文档.我们有两个源文件夹'src'和'tests' - 显然并非所有的@Test方法都需要文档,这个警告是多余的.但是现在所有未记录的测试都收到了这些令人讨厌的警告,该项目得到了数百个警告,我担心会遗漏一些真正危险的警告(因为有数百个无用的警告).
如何仅在'src'文件夹中设置警告,并忽略'tests'文件夹中的警告?
java ×7
jls ×2
apache-flex ×1
arrays ×1
checkstyle ×1
collections ×1
eclipse ×1
exception ×1
generator ×1
javadoc ×1
list ×1
scala ×1
sorting ×1
subclassing ×1
tdd ×1
timer ×1
unit-testing ×1
warnings ×1
wkhtmltopdf ×1