在Java中访问辅助类的其他方法

时间:2014-12-31 16:46:31

标签: java android class

我在外部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

1 个答案:

答案 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