【问题标题】:Compared to C#, Java's final is similar to const or readonly [duplicate]与 C# 相比,Java 的 final 类似于 const 或 readonly [重复]
【发布时间】:2011-08-16 07:17:29
【问题描述】:

想知道如果与 C# 相比,java 的 final 更类似于哪个? const 还是只读?

【问题讨论】:

  • 可能更类似于sealed
  • @Henk 关于添加到方法和类定义,那么是的。 Java 在这方面有点重载了含义。

标签: c# java


【解决方案1】:

有趣的问题,

Java 的 final 关键字暗示了几件事:

  • 您只能分配一次值
  • 您必须在构造函数中分配变量,或作为声明的一部分

C# 的readonly 关键字应用基本相同的限制。

为了完整性-让我们看看const

  • 作为声明的一部分,您只能为其分配一次
  • 它本质上是静态的——对于你的类的所有 N 个实例,只有其中一个实例

所以——我会说 final 更类似于 readonly。

-- 丹

【讨论】:

    【解决方案2】:

    readonly,因为就像在 C# 中一样,final 只能设置一次,包括在构造函数中。

    【讨论】:

      【解决方案3】:

      Java 的 final 关键字实现了 C# readonlyconst 关键字的两种情况。

      C# 只读

      public Employee
      {
        private readonly string _name;
        public Employee(string name)
        {
            this._name = name;
        }
      }
      

      Java 最终版(只读)

      public class Employee
      {
        private final String name;
        public Employee(String name) {
          this.name=name;
        }
      }
      

      C# 常量

      public class Circle
      {
         private const float Pi = 3.14F;
      }
      

      Java 最终(常量)

      public class Circle 
      {
         private final float pi = 3.14F;
      }
      

      【讨论】:

      • Java final (const) 不是真的... consts 在 C# 中默认是 static
      猜你喜欢
      • 2013-02-08
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 2023-03-27
      • 2012-10-01
      相关资源
      最近更新 更多