Java实用程序类

public final class SomeUtilityClass {
    public static final String SOME_CONSTANT = "Some constant";

    private SomeUtilityClass() {}

    public static Object someUtilityMethod(Object someParameter) {
        /* ... */

        return null;
    }
}

现在,随着接口中的静态方法在Java 8中,我最近发现自己使用了实用程序接口模式:

public interface SomeUtilityInterface {
    String SOME_CONSTANT = "Some constant";

    static Object someUtilityMethod(Object someParameter) {
        /* ... */

        return null;
    }
}

这允许我去掉构造函数,以及许多关键字(publicstaticfinal)是在接口中隐式的。

这种做法有什么坏处吗?在实用程序接口上使用实用程序类有什么好处吗?

小川小川提问于
圣才程序互联网回答于

不应该使用接口。接口不能有私有常量和静态初始化器。

public class Utility {

    private Utility() {}

    public static final Map<String, Integer> MAP_CONSTANT;
    static {
        Map<String, Integer> map = new HashMap<>();
        map.put("zero", 0);
        map.put("one", 1);
        map.put("three", 3);
        MAP_CONSTANT = Collections.unmodifiableMap(map);
    }

    private static String PRIVATE_CONSTANT = "Hello, ";

    public static String hello(String name) {
        return PRIVATE_CONSTANT + name;
    }
}

回答过的其他问题

没有身体的POST

圣才程序互联网
到目前为止,我发现实际触发请求的唯一方法是调用HttpURLConnection.getInputStream(),即使没有响应或者您不关心它: HttpURLConnection c= (HttpURLConnection) new URL("https://host.com...... 展开详请

WordPress左导航

圣才程序互联网
已采纳
永远不会修改核心文件! 现在已经不在了,可能有一些插件可以帮到你,但我最终不熟悉任何插件。添加管理员项目的典型方法是使用add_menu_page()和add_submenu_page()功能。他们相对直接使用。 此外,作为一个方面说明,当您添加自定义文章类型有register...... 展开详请

从Firebase数据库IOS检索信息时出现问题

圣才程序互联网
**For creating database structure** `override func viewDidLoad() { var ref: DatabaseReference! ref = Database.database().reference...... 展开详请

VBA过滤超过2个标准

圣才程序互联网
我通过颜色过滤手动排除了2个以上的标准。如果您的表没有定义填充,则此代码将起作用。 ActiveSheet.Range("A1:CU" & lrow).AutoFilter Field:=9, Criteria1:=Array("RB", _ "RC", "RG"), ...... 展开详请

尝试通过查询datacontext返回键/值对时无法转换对象错误

圣才程序互联网

将指标声明更改为简单的对象,然后从查询结果中删除.enumerable(或.toList)。

PHP preg_replace仅限名字

圣才程序互联网

这对我有用。

$string = preg_replace('/O[^\s]/', 'E', $string);

关于作者

所属标签

扫码关注云+社区