与 C# 相比,Java 的 final 类似于 const 或 readonly [重复]

Posted

技术标签:

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

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

【问题讨论】:

可能更类似于sealed @Henk 关于添加到方法和类定义,那么是的。 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

以上是关于与 C# 相比,Java 的 final 类似于 const 或 readonly [重复]的主要内容,如果未能解决你的问题,请参考以下文章

类似于 Oracle PL/SQL 块中的 finally Block (JAVA)

JAVA和C#相比哪个更好学?它们各用于啥领域的软件开发?

C# readonly vs Java final

java是不是有类似于C#属性的东西? [复制]

JAVA的三个部分知识点 其中C#语言便是类似于J2SE

Java的Final和C#的Const,Readonly比较分析(转载)