首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

变量不能用作setter,因为它是final (枚举)

变量不能用作setter,因为它是final (枚举)。

在Java编程语言中,final关键字用于修饰变量,表示该变量的值一旦被赋值后就不能再被修改。在枚举类型中,每个枚举常量都是final的,因此不能用作setter方法。

枚举是一种特殊的数据类型,它定义了一个有限的值集合。枚举常量在声明时就被赋值,并且不能再被修改。由于枚举常量是final的,所以不能为它们定义setter方法来修改其值。

变量不能用作setter的原因是为了保持枚举常量的不可变性。不可变性是指对象一旦创建后,其状态就不能再被修改。这样可以确保枚举常量的值在整个程序执行过程中保持不变,避免了意外的修改和错误。

对于枚举类型的变量,可以通过getter方法获取其值,但不能通过setter方法修改其值。如果需要修改枚举常量的值,可以考虑重新定义一个新的枚举常量,或者使用其他可变的数据类型来代替枚举。

腾讯云提供了丰富的云计算服务和产品,包括计算、存储、数据库、人工智能等领域。具体推荐的腾讯云产品和产品介绍链接地址可以根据具体的应用场景和需求来选择,以下是一些常用的腾讯云产品:

  1. 云服务器(Elastic Compute Cloud,简称CVM):提供可扩展的计算能力,支持多种操作系统和应用场景。产品介绍链接:https://cloud.tencent.com/product/cvm
  2. 云数据库MySQL版(TencentDB for MySQL):提供高性能、可扩展的关系型数据库服务,支持自动备份、容灾等功能。产品介绍链接:https://cloud.tencent.com/product/cdb_mysql
  3. 人工智能平台(AI Platform):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等功能。产品介绍链接:https://cloud.tencent.com/product/ai
  4. 对象存储(Cloud Object Storage,简称COS):提供安全可靠的云存储服务,适用于各种数据存储和备份需求。产品介绍链接:https://cloud.tencent.com/product/cos

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和项目要求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Kotlin Primer·类与对象(上)

    4.3.1 open 修饰符 Kotlin 默认会为每个变量和方法添加 final 修饰符。...它是模块级别的访问权限。 何为模块(module),我们称被一起编译的一系列 Kotlin 文件为一个模块。...val ordinal: Int public override final fun compareTo(other: E): Int } 发现,其实在 Kotlin 中,枚举的本质是一个实现了...例如当一个值为有限集中的 类型、而不能有任何其他类型时。在某种意义上,他们是枚举类的扩展:枚举类型的值集合也是受限的,但每个枚举常量只存在一个实例,而密封类的一个子类可以有可包含状态的多个实例。...当 data 修饰后,会自动将所有成员用operator声明,即为这些成员生成类似 Java 的 getter/setter 方法。 本章就先介绍到这,下一章我们讲继承与组合,伪多继承与接口等内容。

    66420

    通过getter和setter方法访问和修改

    方法可以执行错误检查,比如检查数据是否合乎规范,输入的age是否小于0,直接对域操作则没这种优势 3.可细微划分访问控制:可以只设置域访问器getter,不设置域修改器setter,让用户只能读取,而不能修改...子类可以从它的父类那里继承方法和实例变量,并且可以重写父类的方法和增加新的方法。一般将通用的方法放到超类中,具有特殊用途的方法放到子类中。 特点: 不能多重继承。...只能继承非私有的成员变量和方法 当子类成员变量与父类成员变量重名时,子类覆盖父类。 定义为final的类不可继承,定义为final的方法不可以被重写。...DaoBaseDao dao = new SQLServerDao(); //针对SQLServer的接口实现,这里dao就是多态 dao.connect(); 再比如: 现实中,关于多态的例子不胜枚举...但注意:父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,它是无可奈何的;比如子类中增加的方法,父类引用无法调用。

    97330

    如何编写高质量的代码

    setter三元操作符的类型务必一致避免带有变长参数的方法重载少用静态导入避免为final变量复杂赋值break万万不可忘避免instanceof非预期结果基本类型不要让四舍五入亏了一方提防包装类型的null...常量、变量、验证码等中不要出现易混淆字母 i、l、1;o、0;2、z 枚举类中不要提供setter 没必要,而且危险 三元操作符的类型务必一致 不一致会导致自动类型转换,类型提升int->float-...总结:反序列化时final变量在以下情况下不会被重新赋值:1、通过构造函数为final变量赋值;2、通过方法返回值为final变量赋值;3、final修饰的属性不是基本类型)。...而静态内部类可以独立存在,即使外部类消亡了;3、普通内部类不能声明static的方法和变量,注意这里说的是变量,常量(也就是final static修饰的属性)还是可以的,而静态内部类形似外部类,没有任何限制...在Java中任何一个数组的类都是“[I”,因为Java并没有定义数组这个类,它是编译器编译的时候生成的,是一个特殊的类)。

    1K20

    Dart 学习之开发语言概览,带思维导图(二)

    // 因为p2是null,所以无法设置并且打印 // 但是使用了?.以后就不会报错了。 Person p2; p2?.name = 'jack'; p2?....String name; final int age; const Animal(this.name, this.age); } 实例变量 所有未初始化的变量均会被设置为null 所有实例变量均会隐式地声明一个...Getter 方法 所有 非 final 变量均会隐式声明一个 Setter方法 void main(List args) { Point p = Point(); print...setter,所以这个也要定义 String sayName(String name) => '$_name,你好。...使用enmu定义 每个枚举值都有index 使用values获取所有枚举 枚举不能成为子类 枚举不可以mixin 不可以实现一个枚举 不可以显示实例化一个枚举 使用枚举 void main(List<

    1.7K20

    一站式解决使用枚举的各种痛点

    如果变量值仅有有限的可选值,那么用枚举类来定义常量是一个很常规的操作。 但是在业务代码中,我们不希望依赖 ordinary() 进行业务运算,而是自定义数字属性,避免枚举值的增减调序造成影响。...int index; private final String name; } 但也正是因为使用了自定义的数字属性,很多框架自带的枚举转化功能也就不再适用了。...实现自定义枚举转换器 虽然这两个转换器不能满足我们的需求,但它也给我们带来了思路,我们可以通过模仿这两个转换器来实现我们的需求: 实现 ConverterFactory 接口,该接口要求我们返回 Converter...因此,能不能让 ORM 在映射的时候,直接把 Integer 类型的 type 映射成 CourseType 枚举呢?答案是可行的。...另外,在给前端输出 VO 时,默认情况下,还是要手动把枚举类型映射成 Integer 类型,并不能在 VO 中直接使用枚举输出。

    1.8K20

    十八、Hystrix配置之:全局配置和实例配置

    它是HystrixPropertiesChainedProperty的一个静态public内部类: HystrixPropertiesChainedProperty: public static abstract...public abstract class HystrixCommandProperties { ... // 非常多的成员变量HystrixProperty,每个都代表着一个属性,后面会逐个解释...forString().add(propertyPrefix + ".command." + key.name() + ".threadPoolKeyOverride", null).build(); 因为不能有全局配置...因为隔离策略只能有如下两个取值: HystrixCommandProperties: // 内部静态枚举类:执行时隔离的两种策略 // THREAD:在隔离的线程里执行run方法,并且使用线程池来限制并发的大小...---- 使用示例 HystrixCommandProperties是个抽象类,并不能直接使用。

    2.7K10

    【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题

    另外,如果类中含有final修饰的成员变量,是无法使用@NoArgsConstructor注解的。...如果是final变量,那就只会有get方法 @Getter @Setter public class Demo { private final int finalVal = 10; private...@Val 很强的类型推断 var注解,在Java10之后就不能使用了 class Parent { //private static final val set = new HashSet...并且不能使用在全局变量上,只能使用在局部变量的定义中。...见鬼啊, 我认为这是lombok的一个大bug,希望后续版本中能够修复 但是我们不能因为有这么一个问题,咱们就不使用它了。本文主要提醒读者,在使用的时候留心这个问题即可。

    3.2K20

    GOGO-java开发规范

    正例:枚举名字:DealStatusEnum,成员名称:SUCCESS / UNKOWN_REASON。----9. 【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。...反例:易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示“是”的变量: 类 A 中:public static final String YES = "yes"; 类 B...5) 类内共享常量:直接在类内部 private static final 定义。复制----5.【推荐】如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。...【推荐】setter 方法中,参数名称与类成员变量名称一致,this.成员名 = 参数名。在getter/setter 方法中,不要增加业务逻辑,增加排查问题的难度。我曾天真的认为这种黑魔法很酷。...【推荐】下列情况,声明成 final 会更有提示性:1) 不需要重新赋值的变量,包括类属性、局部变量。 2) 对象参数前加 final,表示不允许修改引用的指向。 3) 类方法确定不允许被重写。

    24330

    Java的基本知识

    有以下几点需要注意: 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何 符组合 关键字不能用作标识符...Java 枚举 Java 5.0引入了枚举枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。 例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。...这些保留字不能用于常量、变量、和任何标识符的名称。 注意:Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。...这些保留字不能用于常量、变量、和任何标识符的名称。...和 false,它是一个字面常量,不允许作为标识符使用。

    62640

    java编码规范

    【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。...反例:易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示“是”的变量:    类 A 中:public static final String YES = "yes";    类 ...5) 类内共享常量:直接在类内部 private static final 定义。 ---- 5.【推荐】如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。...【推荐】setter 方法中,参数名称与类成员变量名称一致,this.成员名 = 参数名。在getter/setter 方法中,不要增加业务逻辑,增加排查问题的难度。我曾天真的认为这种黑魔法很酷。...【推荐】下列情况,声明成 final 会更有提示性: 1) 不需要重新赋值的变量,包括类属性、局部变量。 2) 对象参数前加 final,表示不允许修改引用的指向。 3) 类方法确定不允许被重写。

    2.5K20

    About Kotlin-Kotlin中的类2About Kotlin(2)

    密封类从某种意义上说,它们是枚举类的扩展:枚举类型的值集也受到限制,但每个枚举常量仅作为单个实例存在,而密封类的子类可以包含多个实例并包含状态。这样又具备了枚举不具备的灵活性。...(未被final修饰)!...object{ var x:Int = 0 var y:Int =0 } println(adHoc.x+adHoc.y) } 这里有一点值得特别注意的的是: 匿名对象可以用作只在本地和私有作用域中声明的类型...//私有函数,所以其返回雷士的对象是匿名对象 private fun foo()=object{ val x :String="x" } //默认都是public final...//@JvmStatic 注解也可以应用于对象或伴生对象的属性, 使其 getter 和 setter 方法在该对象或包含该伴生对象的类中是静态成员。

    2.6K20

    Swift的属性,方法,下标脚本以及继承

    这里我们在调用其函数时才对dataList进行訪问,而訪问的时候再依据它是否创建过进行是否载入的决定。...计算属性 计算型属性通常不直接存储值,通过getter来获取值,setter来间接设置其它属性或者变量的值。...注意这里shared变量使用了classkeyword进行修饰,而结构体Inner中的变量使用了static修饰。这两者分别在类或者值类型中表示类型属性,全部实例共享这一属性。...你能够将仅仅读属性重写为可读写,可是不能将可读写(readwrite)重写为仅仅读(readonly)。...另外我们能够重写属性观察器,但不能够为仅仅读属性及已有setter的属性重写观察器。 同JAVA一样,若防止重写则用@final声明为终于版本号。

    87110

    Java基础15:深入剖析Java枚举

    由于枚举类型是导出数据类型,因此,必须先定义枚举类型,然后再用枚举类型定义枚举变量。  ...final 修饰,因此不能派生子类; 构造器默认使用 private 修饰,且只能使用 private 修饰; 枚举类所有实例必须在第一行给出,默认添加 public static final 修饰,...由于Java 不支持多继承,所以枚举对象不能再继承其他类。...同时,对把枚举用作Set和Map也提供了支持,即java.util.EnumSet和java.util.EnumMap。...它保证了枚举类型的不可变性,不能通过克隆,不能通过序列化和反序列化来复制枚举,这能保证一个枚举常量只是一个实例,即是单例的,所以在effective java中推荐使用枚举来实现单例。

    67300
    领券