繁体   English   中英

在两个构造函数中初始化final变量

[英]Initialize final variable in two constructors

我有两个变量。 并且应该做两个构造函数。

 private int size;
 final private Class clazz;

第一:

public SomeConstr(int size) {
    if (size <= 0) {
        this.size = 0;
        IllegalArgumentException argumentException = new IllegalArgumentException();
        logger.log(Level.SEVERE, "", argumentException);
        throw argumentException;
    }
    else
        this.size = size;

    this.clazz = Device.class;       
    }
}

第二:

public ComeConstrSecond(int size, Class clazz) {
   this(size);

   if (clazz == null || !Device.class.isAssignableFrom(clazz)) {
         logger.log(Level.SEVERE, "");
         throw new IllegalArgumentException();
   }

   this.clazz = clazz; 
 }

当我在第二个构造函数中初始化this.clazz = clazz时,我遇到了一个像have been assigned to的问题。 如果我必须使用this(size)如何正确写入clazz初始化?

将您的构造函数链接起来 - 从具有部分信息的构造函数到具有所有信息的构造函数:

public SomeConstr(int size) {
   this(size, Device.class);
}

public SomeConstr(int size, Class clazz) {
    if (size <= 0) {
        IllegalArgumentException argumentException = new IllegalArgumentException();
        logger.log(Level.SEVERE, "", argumentException);
        throw argumentException;
    }
    if (clazz == null || !Device.class.isAssignableFrom(clazz)) {
        logger.log(Level.SEVERE, "");
        throw new IllegalArgumentException();
    }
    this.size = size;
    this.clazz = clazz;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM