在Child Class中使用Super Class的Enums

时间:2014-10-07 01:48:52

标签: java enums

我的基类声明了一个枚举,并声明了该枚举类型的字段。

public abstract class Format {

    ...

    /**
     * compression types
     */
    public static enum CompressionType {
        /**
         * no compression
         */
        NO_COMPRESSION,
        /**
         * RLE8 compression
         */
        RLE_8,
        /**
         * RLE4 compression
         */
        RLE_4
    }

    /**
     * compression type of the image
     */
    public CompressionType compressionType;
    ...

我想要一个Format类的子类来为该字段设置一个值。

public class Bitmap extends Format {
        ...
        // get compression type
        String cType = data[offset+30];
        if(cType.equals("00"))
            // this is what I want to do
            super.compressionType = NO_COMPRESSION;
        ...

有办法做到这一点吗?我尝试过使用super.NO_COMPRESSION,但这不起作用,我尝试过最直观的事情,但这也不起作用。

2 个答案:

答案 0 :(得分:4)

应该是这样的:

this.compressionType = Format.CompressionType.NO_COMPRESSION

或者

this.compressionType = CompressionType.NO_COMPRESSION

如果static导入Format.CompressionType.NO_COMPRESSION,您甚至可以执行以下操作:

this.compressionType = NO_COMPRESSION

答案 1 :(得分:3)

使用枚举名称限定枚举。所以使用

CompressionType.NO_COMPRESSION

Format.CompressionType.NO_COMPRESSION

如果不在儿童班。