有没有办法在 Java 中声明一个“友好”的方法?

Posted

技术标签:

【中文标题】有没有办法在 Java 中声明一个“友好”的方法?【英文标题】:Is there a way to declare a method "friendly" in Java? 【发布时间】:2010-12-22 19:12:49 【问题描述】:

我知道属性可以设置publicfriendlyprivate来指定其可见性。

有没有办法可以声明friendly 方法?我希望它只能从同一包的类的对象中访问。

谢谢你,这里的初学者:(。

【问题讨论】:

【参考方案1】:

通过不输入可见性修饰符,Java 使用包私有范围

查看以下article

编辑:正如 cmets 中所述,没有办法将方法标记为“友好”。但是对于您的需要,package-private 就足够了。

【讨论】:

虽然,如果我们以 C++ 的方式理解“友好”,那就不完全一样了。 是的,没错——但似乎这个范围就足够了,因为 Sergio 只希望“它只能从同一包的类的对象中访问。”【参考方案2】:

只是不要指定可访问性 - 默认为“包可见”或“默认访问”。不幸的是,没有办法明确地做到这一点。

注意protected的访问不仅是继承相关的,还包括同一个包中的其他类型。 (这对我来说总是有点奇怪,但没关系。)

详情请参阅Java Language Specification section 6.6。

【讨论】:

令大多数人意想不到的是,受保护的限制比包/默认少。 我对此感到很惊讶。如果我理解它,即使子类位于不同的包中,从超类继承的类仍然可以访问其受保护的属性。这实际上是有道理的:)【参考方案3】:

这可以通过在方法声明中省略 public/private 来实现。该方法是隐式公开的,但只能在同一个包中访问。

【讨论】:

【参考方案4】:

是的 - 不要放置任何修饰符。简单的

String myString;

Here你可以看到每个可见性修饰符的语义。

【讨论】:

【参考方案5】:

什么都不说,默认是包可见性。

【讨论】:

【参考方案6】:

在 Java 中,您具有公共、受保护、包和私有可见性。包可见性也称为默认值,因为您通过省略其他关键字来指定它。

【讨论】:

【参考方案7】:

如果您不指定任何访问修饰符,则该方法将是“package-private”,这听起来像是您想要的。

【讨论】:

以上是关于有没有办法在 Java 中声明一个“友好”的方法?的主要内容,如果未能解决你的问题,请参考以下文章

java中啥是友好变量和友好方法

Java 反射:按声明顺序获取字段和方法

有没有办法为 S4 参考类声明公共和私有方法?

有没有办法告诉浏览器为与地址栏中不同的 URL 添加书签?

JAVA中protecte和友好类型变量的区别

在 Java 中声明一个 unsigned int