【发布时间】:2015-08-02 13:41:03
【问题描述】:
我有一个库项目,其中包含两个包,分别是带有 class1 和 class2 的 package1 和 package2。 class1 有一些向最终用户公开的公共方法。我想在 class1 中添加一些只有 class2 可以访问的实用程序方法。我进行了很多搜索,但我找不到任何访问修饰符的方法来仅授予跨同一项目的不同包的访问权限。
有没有机会通过任何方式实现它?
更新(代码示例):
package1 中的 Class1:
package com.example.package1;
public class Class1 {
// This method should only be accessed by Class2, cannot made it public for
// every class
void performUtilityOperation() {
// internal utility
}
// other public methods...
}
package2 中的 Class2:
package com.example.package2;
import com.example.package1.*;
public class Class2 {
Class1 class1;
public void setClass1(Class1 class1) {
this.class1 = class1;
}
public void doSomeOperation() {
this.class1.performUtilityOperation(); // here this method is not
// accessible if not public
// do some other operations
}
// other public methods
}
【问题讨论】:
-
Java 语言甚至没有项目的概念。
-
受保护的方法具有跨包的可见性,但您必须
extendClass1fromClass2 -
您是否在寻找等效于 C++
friend的声明?请参阅有关罗密欧与朱丽叶的旧故事的以下美丽答案:-) stackoverflow.com/a/18634125/1857897 -
@user1803551 两个类都是公共的,具有非静态公共方法,我已经用类结构示例更新了这个问题。
-
@dedek,这是一个很好的java朋友类实现。但是由于我正在开发一个库,因此即使库用户无法使用该方法,他们仍然可以看到该方法。我什至不想让他们展示方法,这会让他们感到困惑。 :)
标签: java oop design-patterns access-modifiers