当前位置: 首页 > 知识库问答 >
问题:

什么是开放财产?为什么我不能把它变成私有财产?

盖晋
2023-03-14

静态编程语言中的属性和开放属性有什么区别?下面的代码抱怨我声明setter私有,Intellij说开放属性不允许私有setter。什么是开放属性?

@RestController
open class ParameterController {

  @Autowired
  lateinit var parameterRepository: ParameterRepository
    private set //error


}

为什么上面的代码无效,而这个代码有效?

open class ItemPrice{

    lateinit var type: String
        private set // ok

}

编辑:我使用的是spring-allopen插件,将类显式标记为open并没有什么不同。

共有1个答案

秦俊友
2023-03-14

什么是开放式物业?

一个开放属性,意味着它的 getter/setter(?) 不是最终的。另一方面,它的获取器

在kotlin中,除了接口、注释类、密封类、枚举类、变量、可变属性支持字段和参数之外,所有内容都使用最终关键字声明,但不可变变量

由于allopen插件将使所有属性

但是,如果打开属性,则打开的属性不能使私有 setter,例如:

//v--- allopen plugin will remove all `final` keyword, it is equivalent to `open`
open var value: String=""; private set
//                         ^--- ERROR:private set are not allowed

因此,您必须显式将该属性设为final,例如:

//v--- makes it final explicitly by `final` keyword
final var value: String =""; private set
 类似资料:
  • 问题内容: 我遇到了JavaFX API中似乎很奇怪的东西:实现,但不是。 这是什么原因呢?我有点想法,这全都源于Java固有的协变和逆变问题,因为泛型是通过擦除 愚蠢地 实现的,以保持与字节码的向后兼容性。但是同时实现 和 会出现什么问题呢? 问题答案: 它 不能同时 实现。 为此,它需要在使用泛型的接口中实现每种方法的两个版本。让我们举一个例子: 在幕后,擦除意味着可以简化为: 那么,什么将实

  • 我正试图从图中的窗体向表插入子层,但为什么不能使用where呢?

  • 问题内容: 我正在研究TypeScript中私有成员的实现,但我感到有些困惑。Intellisense不允许访问私有成员,但是在纯JavaScript中,仅此而已。这使我认为TS无法正确实现私有成员。有什么想法吗? 问题答案: 就像类型检查一样,成员的隐私仅在编译器中强制执行。 私有属性被实现为常规属性,并且不允许类外的代码对其进行访问。 为了使某些东西真正成为类的私有对象,它不能成为该类的成员,

  • 本文向大家介绍什么是财务会计周期?,包括了什么是财务会计周期?的使用技巧和注意事项,需要的朋友参考一下 会计过程是一个过程,它不断记录和处理公司的财务交易。它可以识别,分析和记录公司的日常交易。早先,它是手动输入的,这需要花费大量时间,并且出错的机会很高。 计算机化有助于减少数学错误并节省准备财务图表的大量时间。如今,使用了新的软件,该软件减少了人工工作,并最大程度地减少了错误。 会计期间从会计年

  • 两者之间有什么区别 静态归属[作者:作者] 当static bongsto=Author保留在Books域中时,对数据库没有影响。但是,静态bongsto=[author:author]创建了对author类的反向引用,并且在DB中还有author_id列。因此,实际只使用静态bongsto=Author所做的事情。这是在grails文档(http://grails.github.io/grail

  • Android Studio给了我一个弯弯曲曲的说法,我应该/可以把它变成一个lambda。我刚回到我的Android系统。 这是弯曲的“对象:PopupMenu.OnMenuItemClickListener”