我主要是一名c / C ++ / objective-C程序员,目前在Android应用程序上使用Java。我的问题很简单:我想要一个实用程序函数,最好不要与我可以从项目中的任何地方调用的任何类相关联(#include包含某种必要的?)。
我知道我可以创建一个类的公共静态函数并将其作为Class.someFunction();
调用。我想someFunction();
我不确定这在java中是否可行,或者它的语法是什么。
答案 0 :(得分:14)
通过使用静态导入,您可以通过在要使用它的每个文件中添加以下导入来实现相同的“效果”:
import static x.y.Class.someFunction; // or x.y.Class.*;
...
// some code somewhere in the same file
someFunction();
但是,Java中的所有方法必须是类的一部分。静态导入只是让你假装(简要)否则。
P.S。这也适用于静态字段。
答案 1 :(得分:3)
您可以使用static import:
import static com.example.MyUtilityClass.*; // makes all class methods available
// or
import static com.example.MyUtilityClass.myMethod; // makes specified method available
你没有经常看到这种情况,因为如果过度使用它会导致代码难以调试(参见上面链接的最后一段)。
这是一个related question,关于什么时候建议使用它。
答案 2 :(得分:1)
此外,遵循编程最佳实践,您应该在某个实用程序类中定义所有这些常用的常用功能,您可以在其中定义将要使用的函数或字段(可能是常量 - 即静态和最终属性)/在API中的不同位置调用。
虽然,您仍需要导入Utility类。 另外,在API层次结构中最顶层的父类中定义此类功能,这样您甚至不必导入该类。
希望这会有所帮助。 感谢.... !!!
答案 3 :(得分:0)
Yeap import static ..
例如:
import static java.lang.Math.max; // Allowing to use max method anywhere in the source
class SomeClass {
int m = max( 1, 2 );// m now is 2 due t Math.max( int, int )
}