草庐IT

final_test

全部标签

Java - 如果我在 catch block 中返回,finally block 会被执行吗?

这个问题在这里已经有了答案:DoesafinallyblockalwaysgetexecutedinJava?(51个答案)关闭9年前。这就是我想要做的:try{//code}catch(Exceptione){returnfalse;}finally{//closeresources}这行得通吗?这是不好的做法吗?这样做会更好吗:booleaninserted=true;try{//code}catch(Exceptione){inserted=false;}finally{//closeresources}returninserted;

java - 哪个性能更好 : test ! = null or null != test

这个问题在这里已经有了答案:object==nullornull==object?(11个答案)关闭1年前。考虑以下两行代码if(test!=null)和if(null!=test)在性能方面,以上两种说法有什么区别吗?我见过很多人使用后者,当被问及他们说这是最佳实践时,没有充分的理由。

java - 智能 : activate Maven profile when running Junit tests

我已经声明了一些特定于Maven配置文件的属性。我的pom.xml的一部分:releasetruefoo.xmlcibar.xml当我通过IntelliJIDEA2016启动Junit测试时,我在使用“ci”Maven配置文件时遇到了一些问题。我通过“Maven项目”面板激活我的配置文件,然后开始测试。问题是“my.properties.file”属性值等于“foo.xml”,而不是“bar.xml”。我对命令行没问题(我可以使用“-Pci”标志)。我如何告诉IntelliJ使用“ci”配置文件?谢谢。 最佳答案 您应该将配置文件添

java - 如何: Run maven integration tests against a test environment (database)

我正在使用maven和maven-failsafe-plugin在集成测试生命周期阶段启动jetty。然后我对正在运行的webapp执行了一些(*IT.java)junit测试。这按预期工作。但是,我想连接到测试数据库以进行集成测试。我将它的url存储在${basedir}/src/test/resources/jdbc.properties当jetty插件运行时(jetty:run),它使用${basedir}/src/main/resources/jdbc.propertes相反。我尝试通过classesDirectory属性重新配置jetty插件以使用${project.buil

Java 内存模型 : Is it safe to create a cyclical reference graph of final instance fields, 全部在同一个线程中分配?

比我更了解Java内存模型的人可以证实我对以下代码已正确同步的理解吗?classFoo{privatefinalBarbar;Foo(){this.bar=newBar(this);}}classBar{privatefinalFoofoo;Bar(Foofoo){this.foo=foo;}}我知道这段代码是正确的,但我还没有完成整个happens-before数学运算。我确实找到了两个非正式的引用,表明这是合法的,但我有点担心完全依赖它们:Theusagemodelforfinalfieldsisasimpleone:Setthefinalfieldsforanobjectinth

java - final 字段的初始化顺序

考虑这两个类:publicabstractclassBar{protectedBar(){System.out.println(getValue());}protectedabstractintgetValue();}publicclassFooextendsBar{privatefinalinti=20;publicFoo(){}@OverrideprotectedintgetValue(){returni;}publicstaticvoidmain(String[]args){newFoo();}}如果我执行Foo,输出是20。如果我将字段设置为非最终字段,或者如果我在Foo构造函

java - 使用 final 成员处理构造函数中捕获的 Java 异常

我有一些难看的代码,想重构它:publicclassUdpTransportextendsAbstractLayer{privatefinalDatagramSocketsocket;privatefinalInetAddressaddress;privatefinalintport;/*booleandeadisprovidedbysuperclass*/publicUdpTransport(Stringhost,intport){this.port=port;InetAddresstmp_address=null;try{tmp_address=InetAddress.getByN

java - Hibernate 5.2.5.Final createSQLQuery() 方法已弃用

我在Hibernate中使用createSQL()方法在我的数据库中进行插入操作。我想做的是声明一条自定义SQL语句,以便我可以将MD5()函数应用于表上的字段。这就是为什么我不能简单地使用save(Object)方法。我从EclipseIDE收到警告说:不推荐使用QueryProducer类型的方法createSQLQuery(String)。尽管如此,插入操作仍按预期执行。我在项目中使用的当前Hibernate版本是5.2.5.Final。因此,问题是:是否有另一种方法可以在此版本的Hibernate中实现相同的目的,以消除烦人的警告?我也知道添加@SuppressWarnings

java - 为什么这个 static final 变量在单例中是线程安全的?

阅读这个网站,我找到了this:[The]lineprivatestaticfinalFooINSTANCE=newFoo();isonlyexecutedwhentheclassisactuallyused,thistakescareofthelazyinstantiation,andisitguaranteedtobethreadsafe.为什么保证线程安全?因为这个字段是final?还是出于其他原因? 最佳答案 因为它是最终的,是的。Final变量具有特殊的线程安全语义,因为保证其他线程看到final字段时至少处于其构造函数完

java - java中的常量变量和final变量有什么区别?

请帮助我理解Java中常量变量和final变量之间的区别。我对此有点困惑。 最佳答案 常量是概念,变量的属性。final是声明常量变量的java关键字。正如其他人指出的那样,从语义/语言的角度来看,表达式常量变量是一个矛盾修饰法,因此,我们可以争论它的正确性。引用specification,无论如何,我们可以阅读Avariableofprimitivetype[...],thatisfinalandinitializedwithacompile-timeconstantexpression(§15.28),iscalledacons