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

在方法/构造函数中设置参数,使用getter/setter还是不使用getter/setter,哪种方式更好?

在方法/构造函数中设置参数,使用getter/setter还是不使用getter/setter,哪种方式更好?

在方法/构造函数中设置参数的方式是直接将参数作为方法/构造函数的参数传入,然后在方法/构造函数内部进行处理和赋值。这种方式简单直接,适用于参数较少且不需要进行额外的逻辑处理的情况。

使用getter/setter的方式是通过定义类的属性,并提供对应的getter和setter方法来访问和修改属性的值。这种方式可以对属性的访问和修改进行控制和限制,可以在getter和setter方法中添加额外的逻辑处理,例如数据验证、计算属性等。

对于哪种方式更好,取决于具体的需求和场景。下面是对两种方式的比较:

  1. 直接设置参数的方式:
    • 优势:简单直接,适用于参数较少且不需要进行额外的逻辑处理的情况。
    • 应用场景:当参数较少且不需要进行额外的逻辑处理时,可以直接设置参数的方式。
  • 使用getter/setter的方式:
    • 优势:可以对属性的访问和修改进行控制和限制,可以在getter和setter方法中添加额外的逻辑处理,提高代码的可维护性和可扩展性。
    • 应用场景:当需要对属性的访问和修改进行控制和限制,或者需要在getter和setter方法中添加额外的逻辑处理时,可以使用getter/setter的方式。

综上所述,选择哪种方式取决于具体的需求和场景。如果参数较少且不需要进行额外的逻辑处理,可以直接设置参数的方式;如果需要对属性的访问和修改进行控制和限制,或者需要在getter和setter方法中添加额外的逻辑处理,可以使用getter/setter的方式。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(Serverless):https://cloud.tencent.com/product/scf
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(Mobile):https://cloud.tencent.com/product/mobile
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(Blockchain):https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙(Metaverse):https://cloud.tencent.com/product/tencent-metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

对不起,我加入敌方战队了

通过添加注解的方式,不需要为类编写 getter/setter/equals 等方法,同时可以自动化日志变量。...Lombok 主要包含如下一些内容: val:类似于前端 js 的 var。 @NotNull:这个用于方法参数,可以自动校验方法参数是否为空。...@Setter:同上。 @ToString:这个注解用在类上,自动生成类的 toString 方法,可以做一些定制,比如不使用某个字段,不调用 getter 等。...@NoArgsConstructor:这个注解用在类上,会自动生成一个无参构造函数。 @AllArgsConstructor:这个注解用在类上,会自动生成一个包含所有参数构造函数。...生成的类和所有字段都设置为 final,所有字段都为 private,自动生成 Getter 但是没有 Setter,会生成初始化所有字段的构造函数

32210

Java设计模式:建造者模式之经典与流式的三种实现(四)

直接通过构造函数或大量的setter方法设置这些属性可能会导致代码的可读性和维护性下降。建造者模式通过提供一个建造者类来封装复杂对象的创建过程,使得客户端代码可以更加简洁和清晰地构建对象。...二、建造者模式的使用场景 当对象有多个构造函数参数时:如果一个类的构造函数需要多个参数,而这些参数中有些是可选的,那么使用建造者模式可以更加清晰地表达对象的创建过程,避免构造函数参数列表过长和混乱。...这种方式使得客户端代码更加简洁和易读。注意,在这个实现,Product 类的构造方法是私有的,以防止外部直接实例化。所有的属性设置都是通过 Builder 进行的。...工厂模式主要负责对象的创建和实例化,而建造者模式则关注于对象的构建过程和属性的设置实际应用,可以根据需要选择使用哪种模式或结合使用它们。...而流式建造者模式则通过链式调用的方式,提高了代码的可读性和编写的便捷性。 选择使用哪种建造者模式时,需要根据具体的需求和场景来判断。

9610

IDEA 2022 之 Lombok 使用 教程

对于这些格式固定的的代码,IDE也提供了自动生成的功能,但是无论是自动生成还是纯手动写,这些代码是实实在在的存在,有时候,看到一个类文件很长,其中却都是一些,没有任何技术含量的gettersetter...因为 Lombok 的引入后,java 文件使用 javac 编译成的字节码文件中就会包含 gettersetter 函数,但是源代码找不到定义,IDE 会认为这是错误,因此需要安装一个 Lombok...4.1 Lombok 使用注意 建议直接使用 @Data 这种大而全的方式覆盖太多的简化场景。 toString 场景建议使用 Lombok 的,建议使用系统自定义 ToString 里的方法。...常用注解 @Data :相当于@Setter + Getter + @ToString + @EqualsAndHashCode @NoArgsConstructor:自动生成无参数构造函数。...@AllArgsConstructor:自动生成全参数构造函数

15010

Python - 面向对象编程 - @property

gettersetter 方法 破坏类封装原则的基础上,操作实例属性 写过 java 的话应该知道,java 的类可以自动生成对属性的操作方法,一个是 get,另一个是 set(一般称为 getter...、setter 方法) python 虽然不能自动生成,但也可以自己写哦 class PoloBlog: # 构造方法 def __init__(self, name):...# 输出结果 小菠萝 新的小菠萝 这样跟 java 的写法就差不多了,但还是有点麻烦 property() 方法的诞生 可以实现在破坏类封装原则的前提下,让开发者依旧使用 对例对象.属性 的方式操作类的属性...用于删除属性的方法 doc:属性的说明文档字符串 代码栗子 # property() 函数 class PoloBlog: # 构造函数 def __init__(self, name)...,可以传参 # property() 函数 class PoloBlog: # 构造函数 def __init__(self, name, age): self.

28020

尝试Java,从入门到Kotlin(上)

要在Java实现类似的方法,需要额外将一个Class对象放到参数: T parse(String jsonStr, Class type) 这样Java才能使用这个type,在运行时使用反射的方式生成类型...Getter/Setter 面向对象哲学,字段属于实现细节,应该设为private使它隐藏在类的内部。但是实际,有很多字段需要直接访问和修改。...因此,应该将字段的访问封装的方法,即使只是很简单的访问和设置,也应该实现getter方法setter方法。...遵循这个规范很重要,以为很多常用库,比如Json序列化,会以getter方法作为字段存在的依据。 为了减少开发工作量,可以使用IDE自动生成getter方法setter方法。...另一个方案是使用Lombok,通过Data,GetterSetter等注解,让编译器在编译时自动生成getter方法setter

13130

Lombok超详解及其注解

​ 一、Lombok概述 以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString/构造方法;打印日志;I/O流的关闭操作等等,这些代码既没有技术含量...和@Getter 作用:为类的属性提供setter/getter方法位置:类上方或属性上方,属性上方则为属性生成setter/getter 方法类上方表示给该类下的所有属性生成setter/getter...方法 属性:设置settergetter访问权限//给类下的所有属性添加Setter/Getter@Setter@Getterpublic class User { //给id属性添加Setter...int age; private final String address = null;}看一看该类的结构:注:static修饰的变量生成gettersetter方法final修饰的变量只生成...,方法可以直接使用 位置:类上方注:针对不同的日志实现产品,有不同的日志注解,使用 @Log表示使用Java自带的日志功能,除了 @Log ,还可以使用@Log4j 、 @Log4j2 、 @Slf4j

16900

第二十九章:基于SpringBoot平台使用Lombok来优雅的编码

注意:如果你的属性Getter/Setter需要做特殊处理,那么直接使用原始方法实现即可,Lombok检查到存在自定义的方法后不会再做生成处理。...ToString 除了上述的Getter/SetterLombok还为我们提供了自动生成toString方法的注解@ToString,该注解的作用域仅仅是实体类上,我们修改实体类添加该注解,测试类调用...AllArgsConstructor Lombok还提供了全部参数构造函数的自动生成,该注解的作用域也是只有实体类上,因为只有实体类才会存在构造函数。...NoArgsConstructor 当然除了全部参数构造函数,Lombok还提供了没有参数构造函数使用方式与@AllArgsConstructor一致。...Data 我们使用@Data注解就可以涵盖@ToString、@Getter、@Setter方法,当然我们使用构造函数还是需要单独添加注解,下面我们修改实体类添加@Data注解代码如下所示: /*@Getter

55020

Scala 学习笔记之类

gettersetter的属性 2.1 Java gettersetter Java类,我们并不喜欢使用公有字段: public class Person{ public int age...; // Java推荐使用这种方式 } 更倾向于使用gettersetter方法: public class Person{ private int age; public int getAge...(对于私有字段而言,gettersetter方法也是私有的)  scalagettersetter方法分别叫age和age_=.使用的时候如下: val p = new Person p.age...主构造Scala,每个类都有主构造器.主构造器并不以this方法定义,而是与类定义交织在一起. (1) 主构造器的参数直接放在类名之后 class Person(val name:String...} } println语句是主构造器的一部分.每当有对象被构造出来时.上述代码就会被执行 (3) 通常可以构造器中使用默认参数来避免使用过多的辅助构造器 class Person(val name

41530

Vue3 源码解析(八):ref 与 computed 原理揭秘

getterOrOptions.set ) as any } computed api ,首先会判断传入的参数是一个 getter 函数还是 options 对象,如果是函数的话则这个函数只能是...getter 函数无疑,此时将 getter 赋值,并且 DEV 环境访问 setter 不会成功,同时会报出警告。...,会为 getter 创建一个副作用函数,并且副作用选项设置为延迟执行,并且增加了调度器。...,实例构造函数以及对 value 属性设置的 get 和 set 完成响应式追踪。...当我们在学会使用这些的同时,并能知其所以然一定能够帮我们使用这些 api 时发挥出它最大的作用,同时也能够让你在写出了一些不符合你预期代码的时候,快速的定位问题,能搞定究竟是自己写的不对,还是本身 api

1.2K30

delegates - 委托模式的简单实现

用法 delegates 基本用法就是将内部对象的变量或者函数绑定在暴露在外层的变量上,直接通过 delegates 方法进行如下委托,基本的委托方式包含: getter:外部对象可以直接访问内部对象的值...除了上面这种方式之外,还可以在外部对象上添加类似 jQuery 风格的函数,即: 函数参数的时候,获取对应的值 函数参数的时候,修改对应的值 const delegates = require('...几乎一模一样,不过使用的是 __defineSetter__,它可以已存在的对象上添加可读属性,其中第一个参数为属性名,第二个参数函数参数为传入的值: const obj = {}; obj....koa 使用 koa ,其核心就在于 context 对象,许多读写操作都是基于它进行,例如: ctx.header 获取请求头 ctx.method 获取请求方法 ctx.url 获取请求...这些对响应参数设置都得益于 koa context.response 的许多属性和方法都被委托了 context 上: // Koa 源码 lib/context.js delegate(proto

66210

这些极简的注解你都清楚吗

同样的规则适用于构造函数(任何显式构造函数都会阻止 @Data 生成一个),以及toString,equals和所有gettersetter。...但是,现在,参数使用lombok自己的@lombok.NonNull会导致您自己的方法构造函数只插入null-check语句。...你也可以类上使用 @Getter / @Setter ,在这种情况下,就会对该类的所有非静态属性生成 get and set 方法 你也可以通过设置 AccessLevel.NONE 禁用任何 get...你还可以toString 包含方法调用的输出。只能包含不带参数的实例(非静态)方法,为此,请使用@ ToString.Include标记方法。...如果标记为 @NonNull 的字段的参数为 null,那么构造函数将会抛出 NullPointerException。参数的顺序与字段的显示顺序相匹配。

1.5K20

你有没有使用过这些编程骚操作(一)- Lombok(Part A)

、@Setter注解 使用Lombok的注解,并查看编译后的class文件,理解Lombok的工作原理 增加entity包,新增Sku实体类,skuId属性上增加@Getter注解 public class...方法,skuPrice的setter方法 @Getter、@Setter直接支持设置访问级别,以及方法上或者属性上增加注解,skuName属性上和totalNum属性上增加注解 @Getter(value...toString方法,如果of和exclude同时存在,of的优先级大于exclude callSuper()是指是否调用父类的toString方法 doNotUseGetters设置是否使用getter...、setter、toString、equals和hashCode五个方法 @Val 弱语言变量,可以接受任何类型的参数 Product方法增加构造函数使用val定义变量并接受不同类型的数据 public...Product>(); productList.add(new Product()); } 重新编译Product类,查看编译后的文件定义变量都被正确赋值类型 @NotNull 非空检查,可以作用于构造函数参数

65210

今天 1024,为了 996,Lombok 用起来以及避坑指南

;注解构造方法参数上,则在构造的时候加入判空 @Cleanup 注解本地变量上。...注解类时为所有字段生成setter方法,注解字段上时只为该字段生成setter方法,同时可以指定生成的 setter 方法的访问级别 @Getter 使用方法同 @Setter,区别在于生成的是 getter...如果注解类上类实例创建后不可修改,即不会生成 setter 方法,这个会导致 @Setter 不起作用 @Builder 注解类上,生成构造器 @SneakyThrows @Synchronized...不用过多的去关注相应的模板方法,其中 getter/setter、toString、builder 均为模板代码,写着难受,写还不行,而且 java 14 已经开始计划支持 record, 也在帮我们从原生方面解决这种模板代码...,无参构造器无法处理 @NonNull,但在序列化/反序列化的还是需要提供无参的 当团队决定不再使用 Lombok 的时候,可以使用 Lombok 插件的 Delombok 一键去除, Refactor

63230

优雅的Java工具库Lombok

/setter方法,可标注类上,也可标注字段上。...标注类上表示所有的非静态(no-static)字段都会生成相应的getter/setter方法,标注字段上表示只为这个字段生成,且会覆盖标注类上的注解。可设置访问级别,默认为public。...Builder是一种解决包含数量巨大且繁杂的字段的类的一种构建方式。 假如一个类有几十个字段,那么该如何设计这个类呢? 方法一:将几十个字段都添加在构造函数。...简单粗暴,而且构造函数为字段初始化也能够保证对象能够正确创建。缺点就是几十个参数只会导致你创建对象时记错参数的位置,导致不必要的麻烦。 方法二:依赖注入。...Spring的核心功能之一就是依赖注入,借助这种思想,我们通过无参构造创建一个对象,然后通过setter方法设置必需的属性。

1.1K20

超级全面的 Lombok 注解介绍,学一波!

你还可以类上添加@Getter和/或@Setter注释。在这种情况下,就好像你使用该注释来注释该类的所有非静态字段一样。...@RequiredArgsConstructor为每个需要特殊处理的字段生成一个带有1个参数构造函数。...所有未初始化的final字段都会获取一个参数,以及所有未声明其位置的未标记为@NonNull的字段。 @AllArgsConstructor为类的每个字段生成一个带有1个参数构造函数。...可标注类或属性上,当然最实用的功能还是标注到类上。 标注到类上,chain属性设置为true时,类的所有属性的setter方法返回值将为this,用来支持setter方法的链式写法。...prefix设置需要省略的属性生成gettersetter方法时的前缀,且属性必须为驼峰式命名。

3.9K32
领券