草庐IT

java - 使用 If 子句包围 Logger 以避免冗余的 String 构造

我得到了在登录java时使用此语法的建议:if(logger.isLoggable(Log.FINE)){logger.fine("bla"+"bla"+"bla");}这样做的原因是为了避免在日志记录级别低于“FINE”时重复构造参数字符串。(在上面的示例中-5个冗余字符串对象。(“bla”X3、“blabla”和“blablabla”)。我想听听其他人对此做了什么,或者您是否认为这有必要。谢谢!! 最佳答案 一些较新的日志记录框架允许您将参数指定为参数,如果没有日志记录则不会评估它们。我找到的例子是LogBack,它是Log4j

java - 预期异常时避免空 catch block

我正在尝试使用SimpleDateFormat解析日期。由于我的服务采用多种日期格式,因此我采用了this方法:String[]formats={"yyyy-MM-dd'T'HH:mm:ss.SSSZ","yyyy-MM-dd'T'HH:mm:ss.SSS'Z'","yyyy-MM-dd'T'HH:mm:ss.SSS-HH:mm","EEEMMMddHH:mm:ssZyyyy"};for(Stringformat:formats){try{returnnewSimpleDateFormat(format).parse(dateString);}catch(ParseExceptione

java - 如何避免 GeneratedSerializationConstructorAccessor 问题?

我们有一个接收SOAP请求的Java应用程序,在收到大量请求后,我们注意到GC停止了世界以卸载大量GeneratedSerializationConstructorAccessor类。这是一个很大的性能影响。有谁知道如何避免这种情况或至少显着减少创建的GeneratedSerializationConstructorAccessor类的数量? 最佳答案 使用其中一个选项:-Dsun.reflect.inflationThreshold=30在将native访问器“扩展”为生成的访问器之前,增加通过构造函数/方法/字段的调用次数。默认

java - 编程到接口(interface) - 避免以后的转换

因此,据我所知,应该始终针对接口(interface)进行编程,如:Listlist=newLinkedList();所以,稍后在我的程序中我有:publicListgetIntegers(){returnlist;}publicvoidprocessIntegers(){//IneedanarraylisthereArrayListlist=(ArrayList)getIntegers();//canIdothisbetter,withoutacast?}我可以在这里遵循更好的模式或以某种方式避免转换吗?在这种情况下,转换看起来非常丑陋。谢谢。 最佳答案

java - 如何避免 Hibernate 中的旧式外部连接(+)?

我写过这样的HQL查询:SELECTaFROMAaLEFTJOINa.bwhere...Hibernate生成这样的sql查询:SELECTaFROMAaLEFTJOINa.bwherea.b_id=b.id(+)但是当我写这样的东西时:SELECTaFROMwherea.b.id>5它生成SQL:SELECTa.*FROMAbcrossjoinBbwhereb.id>5所以当我结合这些方法时,我收到Oracle错误:SQLError:25156,SQLState:99999ORA-25156:oldstyleouterjoin(+)cannotbeusedwithANSIjoins那

java - 避免多个 Singleton 实例?

这个问题在这里已经有了答案:WhatisanefficientwaytoimplementasingletonpatterninJava?[closed](29个答案)关闭8年前。我相信,当一个单例对象被序列化,然后被连续多次反序列化时,会创建多个单例实例。如何避免这种情况?

Window 上的 Java Swing pack() 未最大化它,如何避免这种情况?

我有一个窗口,因为我动态地更改了它的子项(有时我交换了JPanel),所以除了在窗口上调用pack()来显示新元素之外,我没有找到其他解决方案。否则它只会在我手动调整窗口大小时显示。问题在于,如果窗口最大化,在pack()之后它将不再是,这不是我可以给客户的。有什么线索吗? 最佳答案 首先,我希望您使用的是CardLayout用于面板交换,因为此功能内置于特定的布局管理器中。通常,您需要调用validate/revalidate和repaint在容器上刷新显示。另见:HowtoUseCardLayout

java - 为什么要避免 System.exit()?

我在AnthonyRizk的书BeginningBlackBerryDevelopment中读到,虽然System.exit()方法会退出应用程序,但建议避免这种情况,并在退出时通过关闭所有应用程序来正确清理应用程序屏幕代替。我的问题是,为什么要避免System.exit()? 最佳答案 这是一个非常有趣的问题!JavaSEAPI和BBJavaAPI的System.exit()行为不同:在JavaSEAPI中:终止当前正在运行的Java虚拟机。在BBJavaAPI中:终止当前正在运行的Java应用程序。另请查看CarolHamer和

java - 避免在 If 条件中使用文字

这部分代码在sonar中被pmd拒绝了:publicStringgetFoo(){Stringfoo=System.getProperty("foo");if(foo==null){foo=System.getenv("foo");}elseif(foo==null){foo="defaultFoo";}returnfoo;}它说“避免在If条件下使用文字”。谁能告诉我这有什么问题或这条规则试图产生什么影响? 最佳答案 为什么不使用:publicStringgetFoo(){Stringfoo=System.getProperty(

java - 为什么要避免单元测试中的条件逻辑以及如何避免?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭7年前。Improvethisquestion假设有以下类:publicclassProduct{privateStringname;privatedoubleprice;//Constructors,gettersandsetters}publicclassProducts{privateListproducts;//CRUDmethodspublicdoublegetTotalPrice(){//calculatesthepriceofa