小编fic*_*ion的帖子

如果覆盖类的子类中的字段,子类有两个具有相同名称(和不同类型)的字段?

我有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)

java subclassing jls

51
推荐指数
2
解决办法
4万
查看次数

为什么使用前缀增量被认为比构造标准中的后缀增量更好

我最近为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错了吗?

java checkstyle jls

10
推荐指数
2
解决办法
1502
查看次数

最终吞噬了例外

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,这意味着这只是一些测试/实验示例,显示了抛出/捕捉机制中的问题.我不需要'修复',我需要解释为什么会这样.

java exception

8
推荐指数
1
解决办法
3505
查看次数

Java Timer类:如果在其中一个任务中抛出异常,则计时器任务停止执行

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方法的异常(这似乎也不对).

java timer

8
推荐指数
1
解决办法
1万
查看次数

Java Collection实现了元素的超时

是否有一些集合实现支持元素到期.

例如:

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集合溢出.

java collections

8
推荐指数
1
解决办法
1万
查看次数

Android排序数组

我有一个由名称和分数组成的字符串数组.我想按分数对该数组进行排序.问题是,考虑到它是一个字符串数组,分数是字符串,导致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)

java arrays sorting

7
推荐指数
2
解决办法
3万
查看次数

使用Scala中的函数生成的值生成List

我必须生成一些随机数并将它们相加.就像是

result = generateList(range(0, max), generatorFunctionReturningInt()).foreach(sum _)
Run Code Online (Sandbox Code Playgroud)

如果generateList生成一个Listsize = max和生成的值generatorFunctionReturningInt

或者可能是类似的东西

result = range(0, max).map(generatorFunctionReturningInt).foreach(sum _)
Run Code Online (Sandbox Code Playgroud)

scala list generator

7
推荐指数
3
解决办法
4125
查看次数

如何将http链接转换为本地文件的相对链接

我正在使用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链接的作品,并打开该文件.

wkhtmltopdf

7
推荐指数
0
解决办法
1177
查看次数

是否有良好的示例Flex项目具有良好的单元测试?

我的团队愿意开始编写代码的单元测试(我们甚至会尝试TDD).

是否有一些好的示例Flex项目具有良好的单元测试?

apache-flex tdd unit-testing

6
推荐指数
1
解决办法
261
查看次数

Eclipse - 如何仅将javadoc警告设置为特定文件夹,而不是整个项目

我的一些同事缺乏纪律,并不总是写他们班级的文件(并不总是=从不).我试图通过为缺少注释javadocs设置项目警告来强制他们编写文档.我们有两个源文件夹'src'和'tests' - 显然并非所有的@Test方法都需要文档,这个警告是多余的.但是现在所有未记录的测试都收到了这些令人讨厌的警告,该项目得到了数百个警告,我担心会遗漏一些真正危险的警告(因为有数百个无用的警告).

如何仅在'src'文件夹中设置警告,并忽略'tests'文件夹中的警告?

java eclipse warnings javadoc

6
推荐指数
1
解决办法
1683
查看次数