我正在开发一个
Java Api来做事情(秘密,呃,他们).
有没有办法隐藏类,以及API的内部结构?
我到现在为止发现:
>使用内部类(丑陋的方式,我不想把全部放在类文件中)
>所有类在一个包中,以便我可以使用“包”-visibilty(也丑陋,我需要更多的包)
例:
--- package net.my.app; //this is the Public Access class MyPublicClass{ public void somePublicFunction(){ //access to not visibil classes } } --- package net.my.app.notvisible: //this is what i want to hide class MyNOTPublicClass{ ... } ---
有任何想法吗?
谢谢!
解决方法
>使用界面来定义你的
应用程序
>创建主入口点以访问服务,仅返回接口
>我不会打扰实际隐藏实现类.你永远不会真的将它们隐藏在Java中,那些技术上有兴趣的人可能只是用一个调试器启动你的应用程序.例如,不提供公共构造函数
应用程序
>创建主入口点以访问服务,仅返回接口
>我不会打扰实际隐藏实现类.你永远不会真的将它们隐藏在Java中,那些技术上有兴趣的人可能只是用一个调试器启动你的应用程序.例如,不提供公共构造函数
关于这个评论:
Sean,would you elaborate a little
more on your answer? …
实现我的第二个项目符号的一种方法就是使用一个服务查找类,例如
public class Lookup { private static final Foo foo = new FooImpl(); public static Foo getFoo() { return foo; } }
Foo是一个接口,FooImpl是一个实现类(如果要强制它不能被客户端实例化,它可以是私有的)