草庐IT

final_test

全部标签

java - 为什么 static final 在每次迭代中都比 new 慢

为什么代码片段A比代码片段B慢14倍?(在Windows764位上使用jdk1.8.0_60测试)代码片段A:importjava.awt.geom.RoundRectangle2D;publicclassTest{privatestaticfinalRoundRectangle2D.DoubleRECTANGLE=newRoundRectangle2D.Double(1,2,3,4,5,6);publicstaticvoidmain(String[]args){intresult=RECTANGLE.hashCode();longstart=System.nanoTime();for

java - 为什么我不能将 final long 分配给 int?

据我了解,变量评估是在运行时完成的。但是,在Java中,类型评估是在编译时完成的。此外,如我所见,将变量设置为常量(我使用的是局部变量,但它对上述概念没有任何改变),将在编译时使其值已知。我为您提供了两个示例来验证这个概念。第一个有效,第二个无效。有人可以向我解释为什么使变量常量允许我将一个short变量分配给一个int变量,而我不能将一个int变量分配给一个long变量吗?//Workingexamplefinalintx=10;shorty=x;//Non-workingexamplefinallonga=10L;intb=a; 最佳答案

java - 如何添加静态成员变量Jacoco Test Coverage?

我有一个类如下:publicclassXConstants{publicstaticfinalintA_TYPE=1;publicstaticfinalintB_TYPE=2;}我在测试中同时使用了这两个变量,但是当我使用Jacoco检查测试覆盖率时,它显示该类的测试覆盖率为%0。我的猜测是,这是因为我从来没有实例化这个类,只是使用它的静态变量。我尝试创建一个实例,测试覆盖率达到%100。我该如何克服这个问题? 最佳答案 JaCoCo根据实际执行的字节码的百分比来衡量测试覆盖率。声明静态最终原语或字符串常量不会创建要执行的字节码,它

java - 为什么 Java 8 中的 lambda 表达式要求其内部使用的变量使用 "final"修饰符,但在使用方法引用时却不需要?

这个问题在这里已经有了答案:Whycanmethodreferenceusenon-finalvariables?(4个答案)关闭去年。考虑以下类(class):classFoo{voidhandle(Tt){System.out.println("handling"+t);}publicstaticvoidmain(String[]args){Listlist=newArrayList();list.add(1);list.add(2);Foof=newFoo();list.forEach(f::handle);//compilesfine//list.forEach(obj->f.

java - 如何将 catch finally 重组为 Java 8 中的一种方法?

Java8的新手,我想优化我的代码如下:publicResponsecreate(){try{...}catch(Exceptione){codeA;}finally{codeB;}}publicResponseupdate(){try{...}catch(Exceptione){codeA;}finally{codeB;}}我有很多方法使用相同的方式来捕获异常并最终执行相同的操作,是否可以用Java8中的方法替换下面的通用代码?这样我就可以优化使用此公共(public)代码的所有方法。}catch(Exceptione){codeA;}finally{codeB;}

java - 为什么要使 private static final Lists/Sets/Maps 不可修改?

我刚刚阅读了一位更有经验的程序员编写的一些代码,我遇到了以下问题:publicclassConsoleFormatterextendsFormatter{privatestaticfinalMapPREFIXES;static{Mapprefixes=newHashMap();prefixes.put(Level.CONFIG,"[config]");prefixes.put(Level.FINE,"[debug]");prefixes.put(Level.FINER,"[debug]");prefixes.put(Level.FINEST,"[trace]");prefixes.pu

java - 使用父类(super class) "protected final"方法为子类保留公共(public)代码

作为一个(迂腐的)初学者Java程序员,我想知道,将所有子类使用的公共(public)代码块移动到单独的protected(final)父类中的方法?诸如用通用值填充列表或通用过滤算法等任务...是否也可以使用protected静态方法?classA{protectedfinalListgetVariants(){...}protectedfinalListfilterResults(Listvariants){...}}classBextendsA{publicListdoSomethingUsefull(){ListcommonVariants=getVariants();...r

java - 创建对象时可以初始化final变量吗?

我们怎么可能在创建对象时初始化类的最终变量?谁能解释一下这怎么可能?... 最佳答案 您必须一次且仅一次初始化最终变量。对于实例变量,可以通过三种方式执行此操作:在构造函数中在实例初始化block中。当你申报的时候以下是这三者的示例:publicclassX{privatefinalinta;privatefinalintb;privatefinalintc=10;{b=20;}publicX(finalintval){a=val;}}在每种情况下,当您调用newX(...)时,代码将运行一次,并且无法再次调用其中任何一个,这满足了

java - 过度使用 final 会弊大于利吗?

为什么人们如此强调让类中的每个变量都成为“最终”变量?我不认为将final添加到私有(private)局部变量有任何真正的好处,或者真的将final用于常量以外的任何东西并将变量传递给匿名内部类。我无意挑起任何形式的口水战,我只是真诚地想知道为什么这对某些人来说如此重要。我错过了什么吗? 最佳答案 意图。修改您的代码的其他人不会更改他们不应该更改的值。如果编译器知道某个字段的值永远不会改变,则可以进行编译器优化。此外,如果类中的每个变量都是最终变量(如您在帖子中所指),那么您就有了一个不可变类(只要您不公开对可变属性的引用),这是实

java - 清理 finalize() 或 finally() 中的代码?

我一般认为资源清理是在finallyblock中完成的,最近我在一个类中发现了这个特定的代码片段,它覆盖了Object类'finalize()方法。protectedvoidfinalize(){try{In.close();Out.close();socket.close();}catch(Exceptione){//loggercodehere}}这是个好主意吗?finalize()相对于finally的优缺点是什么? 最佳答案 finallyblock只是一个始终在tryblock之后执行的代码块,即使出现异常也是如此。即它在