gpt4 book ai didi

java - 如何让一个方法被某些类调用,而其他类不能调用?

转载 作者:行者123 更新时间:2023-12-01 18:06:05 24 4
gpt4 key购买 nike

有一个名为ClassA的类,它有一个名为FunctionA的公共(public)函数。

还有一个名为ClassB的类,它需要使用FunctionA,并且它不是ClassA的子类。

第三个名为ClassC,FunctionA不应该被ClassC调用,它不是ClassA的子类。

另外,ClassB和ClassC之间不是继承关系。

是否有提供一些解决方案?或者是否有合适的设计模式?

感谢您的帮助。

最佳答案

您可以将 ClassAClassB 放在同一个包中(将 ClassC 放在另一个包中)并使用 package-private(或default)方法FunctionA的访问修饰符。

这个解决方案是最简单的,仅使用 JLS specs (适用于任何语言级别和任何 JVM 实现):

Example 6.6-4. Access to Package-Access Fields, Methods, and Constructors

If none of the access modifiers public, protected, or private are specified, a class member or constructor has package access: it is accessible throughout the package that contains the declaration of the class in which the class member is declared, but the class member or constructor is not accessible in any other package.

处理问题的其他方法 - 反射、代码生成等 - 更加复杂、有缺陷且缓慢

PS:也可以将方法 FunctionA 保留为公共(public)并将您的应用程序分解为两个模块。在第一个模块中,您应该放置 ClassAClassB ,并在第二个 ClassC 中。第一个模块可以使用第二个模块作为依赖项,但第二个模块不应访问第一个模块。这种方式更适合复杂的应用程序,我建议使用 Maven 或 Gradle 等构建工具来处理这种面向依赖图(对于大型应用程序可能非常棘手) )

关于java - 如何让一个方法被某些类调用,而其他类不能调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36305705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com