Java:我打算只覆盖的库方法的受保护或公共访问?
Posted
技术标签:
【中文标题】Java:我打算只覆盖的库方法的受保护或公共访问?【英文标题】:Java: protected or public access for library methods that I intend to override only? 【发布时间】:2015-03-06 23:50:11 【问题描述】:我正在编写一个框架库,其中有一些方法我只打算被覆盖,永远不会在库外调用。但是,将它们设为public
也没有安全风险。
我的印象是,在库中声明了要被覆盖的方法public
,而protected
仅在存在一些安全风险时使用?
如果通过公开它们没有可行的安全风险,是否有任何理由选择其中一个?
【问题讨论】:
我认为一般建议是使用protected
。如果有人希望它公开,他也可以将其公开,或者只是从同一个包中使用它。
【参考方案1】:
安全永远不是手头的问题,因为反射可以绕过包访问。 'protected' 是一种与人类交流的方式,即如果有人从类或其子类外部调用该方法,则该类并非旨在以合理的方式运行。
【讨论】:
【参考方案2】:这基本上是一个风格问题。我的经验法则是尽可能制定最严格的政策 - 即,更喜欢 protected
而不是 public
。如果将来您决定要公开这些方法,您可以随时将它们设为public
。但是,如果您以 public
开头,然后必须更改他们的签名,那么您就有可能破坏可能错误使用它们的其他人的代码。
【讨论】:
“如果您以pubic
和 […] 开头”请使用 public
,而不是 pubic
。 ;)
@MartinThorsenRanang 就拼写错误而言,这绝对是最令人尴尬的问题之一。感谢您指出了这一点。已编辑和修复。以上是关于Java:我打算只覆盖的库方法的受保护或公共访问?的主要内容,如果未能解决你的问题,请参考以下文章