编译Java文件

时间:2013-06-11 18:15:37

标签: java

我正在为我的应用程序构建一个API,作为模型和控制器之间的中间层。 该模型包含所有数据和低级功能。我已经为API创建了一个新类,它使用了模型,但使用户更容易,并且不允许用户直接访问数据。

现在,我想阻止用户访问模型,让他只使用API​​中的函数。

我该怎么做?

据我所知,这可以通过指定方法或变量是private还是public来完成。问题是我有很多static个字段用于全局数据。我是否可以限制对静态字段的访问,以便只有API的私有函数才能访问它们?

3 个答案:

答案 0 :(得分:1)

在类中创建private static字段将确保该类中的ONLY函数可以访问这些字段。此外,如果重新实例化该类(又名new myClass();),则不会重新创建这些字段;它们的值将保持完整并且对于myClass的所有实例都是全局的。

答案 1 :(得分:0)

除了已经发布的答案:

这取决于“限制对静态字段的访问”的含义:

如果您想阻止他人无意中直接使用它们,请使用“私人”修改器。 但请记住,如果没有其他措施可以通过反射,人们仍然可以通过反射访问它们。

对于“static int foo”情况也是如此,如果你不密封包,因为人们可以很容易地将另一个类放入同一个包中,这个包将再次访问。

答案 2 :(得分:0)

如果您正在构建API,可能需要阅读本书Practical API Design, Confessions of a Java Framework Architect

  

方法优于字段最好使用方法(通常是getter和setter)来访问字段,而不是直接公开它们。

     

工厂优于构造函数当您公开工厂方法而不是构造函数时,可以促进API的未来发展。

     

让一切变得最终为了未来的发展,最好不要让子类化...让你的课程最终成功。

     

...