草庐IT

java - 嵌套对象最佳实践

引用嵌套对象的最佳做法是什么?假设我有以下内容:classOuter{privateInnerAinnerA;//gettersandsetters}classInnerA{privateInnerBinnerB;//gettersandsetters}classInnerB{privateStringsomeString;//gettersandsetters}在我的Controller或服务类中,我需要检查InnerB类的someString字符串变量以确保它不为null或不为空,所以我这样做:if(getOuter().getInnerA().getInnerB().getSom

java - 在 Java 代码中避免大量 "if (obj != null)"的最佳方法是什么?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Howtoavoid“!=null”statementsinJava?分享你的想法..

java - 使用后将 "null"分配给每个应用程序中的对象

您是否总是在达到对象的范围后将null分配给对象?或者您是否依赖JVM进行垃圾回收?无论长度如何,您是否为所有类型的应用程序都这样做?如果是这样,这总是一个好习惯吗? 最佳答案 除非您有非常具体的原因,否则没有必要将对象显式标记为null。此外,我从未见过应用程序在不再需要时将所有对象标记为空。垃圾回收的主要好处是内在的内存管理。 关于java-使用后将"null"分配给每个应用程序中的对象,我们在StackOverflow上找到一个类似的问题: https:

java - 在分配给 null 之前检查变量是否为 null?

与空检查相比,变量赋值是否昂贵?例如,是否值得在将foo赋值为null之前检查它是否不为null?if(foo!=null){foo=null;}或者这是什么都不担心? 最佳答案 这是一个微优化(并且可能由编译器处理)。别担心。通过专注于您的程序实际算法,您将获得更大的返回。Weshouldforgetaboutsmallefficiencies,sayabout97%ofthetime:prematureoptimizationistherootofallevil.--DonaldKnuth

java - 有没有更简洁的方法来编写这段 Java 代码?

lookup返回的foo可能是null。这就是为什么我试图通过首先返回nullif来避免在null值上调用foo.getFooStr()foo是null。但是有没有更好(更简洁)的写法呢?publicstaticStringgetFooStr(Stringinput){Foofoo=lookup(input);if(foo==null){returnnull;}returnfoo.getFooStr();} 最佳答案 您有两个问题:是否有更好的代码编写方式,以及是否有更简洁的代码编写方式。关于更简洁,这可能有效:publicstat

java - 为什么 FindBugs 显示冗余空检查警告

if(first!=null&&second!=null&&!first.equals(second)){//notnull¬equal}elseif(first==null^second==null){//notbothnullandnotbothnotnull//(first==null&&second!=null)||(first!=null&&second==null)}else{//bothnullorequal}FindBugs提示elseif(first==null^second==null){...} 最佳答案

java - JSP 标签属性在传入 null 时从父作用域继承变量?

我最近遇到一个问题,将null传递到自定义JSP标记会导致标记上升范围并将变量解析为父JSP中同名的变量。这在Java/JSP/JSTL中是预期的吗?有什么方法可以覆盖此功能而不必重命名我的变量以避免命名冲突?例如一个JSP文件:调用此标记文件(testTag.tag)的:Ismodelempty?我看到的是,尽管model.testModel在JSP中为null,但在标记model中notnull并且它实际上解析为model在JSP中表示的对象!?如果有帮助,我正在使用SpringMVC3。 最佳答案 您确定${model.tes

java - getResourceAsStream() 仅在 jar 文件中时返回 null

我知道同一个问题已经被问过很多次了,但是浏览所有已经发布的答案我找不到解决方案。首先,这是我在项目中遇到问题后用来测试问题的代码:InputStreamtest;System.out.println(this.getClass());System.out.println(("classpathis:"+System.getProperty("java.class.path")));test=getClass().getResourceAsStream("/pairs/images/100/back/back1.png");if(test==null){System.out.printl

java - 为什么 HashMap#resize 实现如此复杂?

看完sourcecode在java.util.HashMap#resize中,我对某些部分感到非常困惑-即当某些bin具有多个节点时。else{//preserveorderNodeloHead=null,loTail=null;NodehiHead=null,hiTail=null;Nodenext;do{next=e.next;if((e.hash&oldCap)==0){if(loTail==null)loHead=e;elseloTail.next=e;loTail=e;}else{if(hiTail==null)hiHead=e;elsehiTail.next=e;hiTai

java - 空合并运算符的替代方案

使用Java,安全地访问像这样的深层嵌套引用a.b.c.d.e,我们通常必须在每个级别指定null检查或包装在Optional中并使用orElse()。(与Kotlin/C#等语言不同,其中a?.b?.c?.d?.e或类似作品。我想知道以下辅助方法是否是一个合理的替代方法:publicTvalueOrNull(Supplierexpression){try{returnexpression.get();}catch(NullPointerExceptione){returnnull;}}这可以安全地与value=valueOrNull(()->a.b.c.d.e)一起使用。注意:我知道