使用新的vs创建对象
在执行任务期间,我看到其他开发人员,他们使用@AllArgsConstructor(access = AccessLevel.PRIVATE)创建了一个类,该类使该类的构造函数私有.然后,他们使用代替创建一个对象. 使用new和of创建之间有什么区别?
最佳答案
随着时间的流逝,很明显的是,由于您没有在调用中命名参数,因此,如果可选值具有相同的类型,则很难使用各种方法来创建对象.
一个(相当愚蠢的)示例是Person类,该类可能仅允许指定名字或姓氏.在这种情况下,以下构造函数将无法工作:
第一个很好,但是其他两个存在冲突,并且无法解决,因为您无法命名构造函数或参数. 使用静态工厂方法可以在必要时命名方法:
不需要命名时,将使用的通用名称.仍然可以以重载构造函数的相同方式来重载,例如您可能还具有:
尽管工厂方法并不常用,但如果认为必要,工厂方法也可能返回子类. 对于接口,这样的工厂方法对于实例化实现接口的对象非常方便,而不是将工厂方法放在不同的类中. 在使用接口静态方法之前,JDK实现了Arrays.asList(…)来创建显式给定对象的列表.通过将接口静态方法引入该语言,该方法现在(也)在List接口本身上以List.of(…)的形式实现. 此外,他们还为Set.of(…)和Map.of(…)添加了便捷方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 简单介绍区分applet和application的方法
- 【Android工具类】验证码倒计时帮助类CountDownButtonHelpe
- Java并发编程:CountDownLatch与CyclicBarrier和Semaphore的
- 更改Java中的默认按钮,使其看起来更好
- 为什么我的JavaFx应用程序在我的RaspberryPi上运行时没有框
- Comet 67E: ffort
- java – Spring Boot管理日志中重复的AsyncRequestTimeoutE
- shiro实战系列(三)之架构
- java – 为什么我们必须为@SuppressWarnings使用中间变量(“
- 是否有与Java ConcurrentHashMap等效的c#