5

我有一个在两个 Eclipse 项目中使用的模型类(MVC 模式)。

我们称之为一个项目,它Producer是从流中捕获数据并将其存储到数据库中。有问题的模型类,例如ObjectModel,用于在序列化和存储在数据库中之前反序列化流以进行操作。

另一个项目,我们称之为Consumer,正在提取存储在数据库中的数据并在屏幕上可视化。它使用相同的模型类来反序列化存储的数据,以便在可视化应用程序中使用。

我计划将其放入一个 Eclipse 项目中,以便在和项目ObjectModel之间共享其源代码。但是,每个应用程序当前在同一个包中都有类,这些类利用 package-private 访问修饰符来获取和设置.ProducerConsumerObjectModel

有什么方法可以在多个 Eclipse 项目之间共享源代码,并且仍然使用共享源维护包私有访问?

更新:我在 Eclipse 项目之间共享代码时遇到了麻烦,这就是为什么我在发布之前不尝试这个的原因。终于让那部分工作了,并在这里写成另一个答案。

4

2 回答 2

1

只要 Producer 和 Consumer 项目中的类与 ObjectModel 在同一个包中声明,它就应该可以正常工作。

但是,您可能需要重新考虑您的设计,并在 ObjectModel 中提供公共访问器方法(getter 和 setter)。

于 2012-09-22T02:11:57.960 回答
1

查看上面的@GreyBeardedGeek 答案:

只要 Producer 和 Consumer 项目中的类与 ObjectModel 在同一个包中声明,它就应该可以正常工作。

您正在寻找 Java 中的 C++ 朋友。一般来说,这可能是错误设计的征兆。如果你的设计没问题,那么使用“包私有访问”是实现朋友的 Java 标准方式。如果您的课程在不同的项目中,它将在技术上有效......如果您认为您的设计还可以,也许您想考虑使用 *Heper 课程。例如:

public class SomeClass {
 void foo(){...
 }
}

public class SomeClassHelper {
 private SomeClass someClass;
 public SomeClassHelper(SomeClass someClass){
  //you can do it better this with some DI Framework,
  //for illustration purpose
  this.someClass=someClass;
 }

 public SomeClassHelper(){
  //for illustration purpose only
  this.someClass=new SomeClass();
 }

 **public** void foo(){
    //this is punch line
    someClass.foo();
  }

}

您应该将 SomeClassHelper 与 SomeClass 放在同一个包中,但 SomeClassHelper 可以位于不同的源文件夹或项目中。

于 2012-09-23T18:56:04.463 回答