zoukankan      html  css  js  c++  java
  • 第19条:接口只用于定义类型

    当类实现接口,接口就充当可以引用这个类的实例的类型。因此,类实现了接口,就表明客户端可以对这个类的实例实施某些动作,为了其他任何目的而定义接口是不恰当的。

    有一种常量接口,它不包含任何方法,只包含静态的final域,每个域导出一个常量,使用这些常量的类实现这个接口,以避免用类名来修饰常量名:

    public interface PhysicalConstants {
        static final double AVOGADROS_NUMBER = 6.022e23;
        static final double BOLTZMANN_CONSTANT = 1.380e-23;
        static final double ELECTRON_MASS =  9.109e-31;  
    }

    这是对接口的不良使用,类在内部使用这些常量,是实现细节,不应该将实现细节暴露到该类的导出API中。

    导出常量的几种方案:

    1.如果常量与某个现有的类或者接口紧密相关,就应该把这些常量添加到这个类或者接口中,如Integer和Double,都导出MIN_VALUE和MAX_VALUE常量。

    2.如果常量被看作枚举类型,就应该使用枚举类型。

    3.否则,应该使用不可实例化的工具类来导出这些常量 :

    public class PhysicalConstants {
        private PhysicalConstants() {};
      
        static final double AVOGADROS_NUMBER = 6.022e23;
       static final double BOLTZMANN_CONSTANT = 1.380e-23;
        static final double ELECTRON_MASS =  9.109e-31;
    }

    通过类名.常量名来引用这些常量,如果大量利用工具类导出的常量,可以利用静态导入机制,1.5后才有。像import static 包名.工具类名.*;这样。

  • 相关阅读:
    Linux常用快捷键
    如何Oracle 数据库备份与恢复
    Linux常用命令解释
    转摘:商业智能BI的演绎型需求和归纳型需求BI三维框架之内容维研究
    PHP中const的使用
    PHP中define的使用
    Apache配置正向代理与反向代理
    正向代理
    JAVA System.getProperty()参数
    PHP查找当前URL文件扩展名
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5705886.html
Copyright © 2011-2022 走看看