首页 > 解决方案 > 有没有办法阻止客户端从实例调用静态方法?

问题描述

基本上,我想防止我的工厂方法被链接。

即,我不想要类似的东西

Circle.createCircle(x,y).createCircle(y,z).createCircle(1,2)

所以我想让我的工厂方法只能从类调用,而不是从实例调用。

标签: javastatic

解决方案


不可能; 它内置在语言规范中,您可以从静态方法所在类型的表达式中调用静态方法。

但是,不要担心。这是阳光下的每一根棉绒都会警告的事情。如果你试图让你的 API 防白痴,那么整个宇宙都会密谋反对你并发明一个更好的白痴。你赢不了那场战斗。担心 API 设计会导致您的用户误入歧途或不必要地复杂地使用。不要担心尝试停止使用任何 3 周毕业后的程序员一眼就能认出的用法,这显然不是 API 的意图或直接的粗略代码。


推荐阅读