java - Final String mainViewPaths[]={}; 有什么用吗?

标签 java

当我1年前开始学习Java时。作为一个 C 背景的人,我发现 Java 中的很多东西都是严格的,比如由于无限循环而无法到达的语句等等。

那么,变量声明final String mainViewPaths[]={};有什么用处吗?我们可以用这个空数组引用做什么?我们甚至无法重用该变量,因为它被标记为final。它不会导致任何编译器错误。我问这个问题是因为我认为 Java 开发人员将所有可能无用或误导的内容放在一边。

最佳答案

mainViewPaths 变量这样的空数组可以用作 Null Object

In object-oriented computer programming, a Null Object is an object with defined neutral ("null") behavior.

想象一下这个场景:

  • 有些变量是通过引用 mainViewPaths 变量来初始化的,例如

    String loginViewPaths[] = mainViewPaths; 
    String homeViewPaths[] = mainViewPaths;
    
  • 源代码中有很多地方可以访问 ViewPaths 变量,例如:

    public String toString() {
        return mainViewPaths.toString();
    }    
    
    for(int i = 0; i < mainViewPaths.length; i++) {
        // iterate over all the mainViewPaths elements
    }
    
  • 如果 mainViewPaths 变量不是用空数组初始化的,而是简单地用 null 初始化的,那么在上面的代码中,在访问 mainViewPaths 变量之前应该有一个检查 mainViewPaths 变量是否为 null,因此代码应如下所示:

    public String toString() {
        return mainViewPaths != null ? mainViewPaths.toString() : null;
    }    
    
    for(int i = 0; i < mainViewPaths == null ? 0 : mainViewPaths.length; i++) {
        // iterate over all the mainViewPaths elements
    }
    
  • 因此,拥有像 mainViewPaths 变量这样的 Null 对象 可以节省大量样板代码。

关于java - Final String mainViewPaths[]={}; 有什么用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16969576/

相关文章:

c# - C# 中的 Java 的 search()、get() 和 size()

c# - Linq like for Java

java - Jolokia 防止 Tomcat 关闭

java - 从 JList 中获取多个选定项

Java:Swing PropertyChangeSupport

java - 在运行时将组件添加到 jpanel

java - 动态发生异常后运行一些逻辑

java - Maven 模块 + 构建单个特定模块

java - 如何将 JDBC 连接从 Tomcat 实现转换为 Jetty?

java - Spring RestTemplate GET 请求没有给出正确的响应