我在外部HelperClass
转移了一些我最常用的方法:
package com.example;
public final class HelperClass {
public static int dp_to_px(int dp) {
final float scale = MainActivity.getAppContext().getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
}
目前我以这种方式访问它们:
package com.example2;
import com.example.HelperClass;
...
int px = HelperClass.dp_to_px(10);
relativeLayout.setPadding(px, px, px, px);
...
我很好,但有没有办法写
import com.example.HelperClass.dp_to_px;
int dp = dp_to_px(10);
这样您只需要导入所需的方法,而不是整个HelperClass
。
答案 0 :(得分:4)
静态导入就是你想要的
import static com.example.HelperClass.dp_to_px
价:
静态导入构造允许非限定地访问静态 成员没有继承包含静态的类型 成员。相反,程序也会导入成员 个别地:
import static java.lang.Math.PI;
或集体:
import static java.lang.Math。*;
一旦导入静态成员,他们就可以 没有资格使用:
double r = cos(PI * theta);
静态 进口申报类似于正常的进口申报。 正常的导入声明从包中导入类, 允许它们在没有包装资格的情况下使用,静态 import声明从类中导入静态成员,允许它们 没有经过资格认证的。
那么什么时候应该使用静态 进口?非常谨慎!只有在你不喜欢的时候才使用它 声明常量的本地副本,或滥用继承( 常量接口反模式)。换句话说,当你使用它时 需要经常访问一个或两个类的静态成员。如果 你过度使用静态导入功能,它可以使你的程序 不可读和不可维护,用所有的方式污染它的命名空间 您导入的静态成员。您的代码的读者(包括您,一些 你写完之后几个月)将不知道哪个类是静态成员 来自。从类中导入所有静态成员即可 对可读性特别有害;如果你只需要一两个 成员,单独导入它们。适当使用,静态导入 通过删除的样板,可以使您的程序更具可读性 重复课名
https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html