小编Fra*_*ner的帖子

是"抛出可扔"的好习惯

在过去,我会用以下方法阅读大量代码:

public Object doSomething() throws Throwable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

通常的做法是这样做吗?

什么是利弊?

throws Trowable 在我看来,像"特工橙"的方式让异常完成了

编辑


  1. 处理方法中的预期异常

  2. 抛出意外的异常(逐个)

  3. 不关心错误

这是要走的路吗?

java

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

异常不与throws子句兼容的原因是什么?

任何人都可以告诉我异常可能有什么原因,而不是与"throws"条款兼容

例如:

class Sub extends Super{

    @Override
    void foo() throws Exception{

    }

}

class Super{

    void foo() throws IOException{

    }
}
Run Code Online (Sandbox Code Playgroud)

异常异常与Super.foo()中的throws子句不兼容

java exception-handling exception

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

使用常见OpenOption组合的最快方法

是否有一种简洁,惯用的方式(可能使用Apache Commons)来指定OpenOption的常见组合 StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING

java nio nio2

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

有没有办法检索eclipse执行的git命令?

我是一个普通的git用户,我正在eclipse中构建一些快捷方式来激活一些EGit函数.

我对EGit正在做什么(特别是synchronize workspace操作)有点警惕,我想知道我是否可以让EGit显示它正在使用的git命令.

你知道一个选项让它登录到控制台,或者一般来说,如何找出执行的命令?

eclipse git egit

15
推荐指数
1
解决办法
2040
查看次数

检查Optionals平等的便捷方法

我正在寻找一种更方便的方法来证明Optional值的相等性.

这是Oracle博客文章建议的内容:

Optional<USB> maybeUSB = ...; maybeUSB.filter(usb -> "3.0".equals(usb.getVersion())
                    .ifPresent(() -> System.out.println("ok"));
Run Code Online (Sandbox Code Playgroud)

恕我直言的结果是这样的

if (maybeUSB.filter(c -> "3.0".equals(c.getVersion())).isPresent()) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

当然这是一个糟糕的例子,因为它比较了版本而不是USB本身的实例,但我认为它仍然可以证明我的观点.

这真的很棒吗?

没有

boolean presentAndEquals(Object)
Run Code Online (Sandbox Code Playgroud)

要么

boolean deepEquals(Object)
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?

编辑:

我对Optionals.equals也不满意.我是否真的必须首先装箱一个物体才能立即拆箱并检查是否相等?

java optional java-8

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

使用java保存时,图像会改变颜色

保存此图片时:

节日涂鸦

用这种方法:

private final static Path ROOT_PATH = Paths.getPath("C:/images");

private static void saveImageFromWebSimple(final String url) {
    URL u = null;
    try {
        u = new URL(url);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String file = url.substring(url.indexOf("//") + 2);
    Path filePath = ROOT_PATH.resolve(file);
    try {
        Files.createDirectories(filePath.getParent());
        BufferedImage img = ImageIO.read(u);
        ImageIO.write(img, "jpg", filePath.toFile());
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的结果:

结果

但是,所有图片都不会发生这种情况.

你能告诉我为什么吗?

java bufferedimage javax.imageio

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

静态初始化器的静态最终字段初始化

为什么不能使用声明类作为限定符(以静态方式)从相应的静态初始化程序访问静态最终字段?

起初,我认为这是一个Eclipse bug:

Eclipse bug?

我还缺乏一些知识,因为静态初始化器不是我的日常业务.但是,看哪,这没有预期的类限定符:

缺少知识?

为了完成我的测试系列,我在bash中尝试了一下:

该死的!

导致相同的结果.

这引出了我最后的问题:

从静态初始化程序块访问静态最终字段时是否有任何理由禁止类限定符?因为声明类之前没有初始化?

java static-initializer

5
推荐指数
2
解决办法
320
查看次数

天狮分裂多次

有没有可能在时间轴上分裂多次?

目前,我使用这样的表达式:

.es(q='name:*jvm*', metric=avg:mean, split=name.keyword:10)
  .label(regex='.*whatever\.(.*) >.*', label=$1)
Run Code Online (Sandbox Code Playgroud)

产生时序图。

如果要添加第二个应用程序,则只需在es查询中添加另一个带有附加AND的表达式,然后按以下方式拆分:

.es(q='name:*jvm* AND app:one', metric=avg:mean, split=name.keyword:10)
  .label(regex='.*whatever\.(.*) >.*', label='one-$1'),
.es(q='name:*jvm* AND app:two', metric=avg:mean, split=name.keyword:10)
  .label(regex='.*whatever\.(.*) >.*', label='two-$1')
Run Code Online (Sandbox Code Playgroud)

不可能在单个表达式中执行此操作吗?

elasticsearch kibana elastic-stack timelion kibana-6

5
推荐指数
1
解决办法
610
查看次数

用作模块的参数

如何使用数学函数作为模块参数

如:

PersonalPlot[fun0_, var0_, min0_, max0_] :=
 Module[{fun = fun0, var = var0 , min = min0, max = max0},

   (*this is incorrect*)
   fun = fun[var_];

   Plot[fun, {var, min, max}]
 ]

PersonalPlot[x^2,x,0,3];
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

2
推荐指数
1
解决办法
1506
查看次数

Java - 更新if语句中的字符串

最后的字符串邮政编码在我的代码中稍后用作输入,正如您所看到的,它是硬编码的.我想做的是让它更有活力.因此布尔pc4设置为接受4位邮政编码的国家/地区.pc5是5位数,pc6是6位数.

我想做的是:

if(pc4==true){String postcode="1234"}
Run Code Online (Sandbox Code Playgroud)

正如你们已经知道的那样,这在if语句之外是行不通的.

所以我的问题是:我可以更新if语句之外的字符串,还是有更有效的方法来到达我需要的位置?

String state1 = "state";

 boolean pc4 = (bString.equals("Bahrain") || bString.equals("Afghanistan") 
             || bString.equals("Albania") || bString.equals("Armenia") 
             || bString.contains("Australia")
             ... 
             || bString.equals("Tunisia") ||bString.equals("Venezuela") );
 boolean pc5 = (bString.equals("Alan Islands") || bString.equals("Algeria")
             || bString.equals("American Samoa") || bString.equals("Wallis and Futuna") 
             ...
             || bString.equals("Zambia"));
 boolean pc6 = (bString.equals("Belarus") || bString.equals("China")
             || bString.equals("Colombia") || bString.equals("India")
             ...
             || bString.equals("Turkmenistan") || bString.equals("Viet Nam"));

 String postcode = "123456";
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
1
解决办法
1139
查看次数

Java世界中的一毫秒有多长?

我有不同的理由提出这个问题.

  • JSR 310:基于的 日期和时间API中切换到微秒的决定是什么?

  • 如果我测量时间,System.currentTimeMillis()我该如何解释1ms?多少个方法调用,多少个sysout,多少个HashMap#推送.

我完全清楚这个问题的科学标准很低,但是我想为java操作设置一些默认值.

编辑:

我在说:

long t1 = System.currentTimeMillis();
//do random stuff
System.out.println(System.currentTimeMillis()-t1);
Run Code Online (Sandbox Code Playgroud)

java performance time java-8

0
推荐指数
1
解决办法
212
查看次数