代码之家  ›  专栏  ›  技术社区  ›  User3

扩展类并在多个构造函数中处理最终变量

  •  0
  • User3  · 技术社区  · 6 年前

    private final float mIndicatorItemLength = DP * 4;
    

    public HorizontalCirclePagerIndicatorDecoration()
    

    引用为:

    public HorizontalCirclePagerIndicatorDecoration() {
        mIndicatorItemLength = DP * 4;
    }
    

    public HorizontalCirclePagerIndicatorDecoration(int colorActive, int colorInactive, int mIndicatorItemLength)
    

    public TPagerIndicator(int colorActive, int colorInactive) {
        super(colorActive, colorInactive, mIndicatorItemLength);
    }
    

    我的孩子班级签名如下:

    TPagerIndicator extends HorizontalCirclePagerIndicatorDecoration
    

    然而,我在这里得到一个错误:无法引用 TPagerIndicator.mIndicatorItemLength 在调用超类型构造函数之前。

    在父类中。走这条路对吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   LppEdd    6 年前

    mIndicatorItemLength )在Java中是不允许的。

    class HorizontalCirclePagerIndicatorDecoration {
       ...
       private final float mIndicatorItemLength;
    
       HorizontalCirclePagerIndicatorDecoration() {
          mIndicatorItemLength = DP * 4;
       }
    
       HorizontalCirclePagerIndicatorDecoration(
             final int colorActive, 
             final int colorInactive, 
             final int mIndicatorItemLength) {
          ...
          this.mIndicatorItemLength = mIndicatorItemLength;
       }
    
       ...
    } 
    

    class TPagerIndicator extends HorizontalCirclePagerIndicatorDecoration {
       TPagerIndicator(
             final int colorActive,
             final int colorInactive) {
          super(colorActive, colorInactive, 12.3F /* Explicit set */);
       }
    
       TPagerIndicator(
             final int colorActive,
             final int colorInactive
             final int mIndicatorItemLength) {
          super(colorActive, colorInactive, mIndicatorItemLength /* Input set */);
       }
    
       ...
    }