4

我正在阅读这篇文章:

如何在 Java 中从另一个构造函数调用一个构造函数?

在java中从另一个调用一个构造函数

但我不知道我的代码有什么问题:

注意:只有我使用三个构造函数的一个调用......错误消息表示为消息使用///*...*/......

class SomeClass {
  private RandomAccessFile RAF = null;

  public SomeClass(String theName) {
    try {
      RandomAccessFile raf = new RandomAccessFile(theName, "r");
      this(raf); //call to this must be first statement in constructor
      SomeClass(raf); /*cannot find symbol
                        symbol:   method SomeClass(RandomAccessFile)
                        location: class SomeClass*/
      this.SomeClass(raf); /*cannot find symbol
                        symbol: method SomeClass(RandomAccessFile)*/
    } catch (IOException e) {}
  }

  public SomeClass(RandomAccessFile RAFSrc) {
    RAF = RAFSrc;

    //...
  }

  //...
}

有什么问题?

4

2 回答 2

0

委托给其他构造函数this 必须是构造函数的第一行。IOException我建议你从构造函数中重新抛出。就像是,

class SomeClass {
    private RandomAccessFile raf = null;

    public SomeClass(String theName) throws IOException {
        this(new RandomAccessFile(theName, "r"));
    }

    public SomeClass(RandomAccessFile raf) {
        this.raf = raf;
    }
}

您的另一个选择是复制功能(如果您想吞下异常),例如,

public SomeClass(String theName) {
    try {
        this.raf = new RandomAccessFile(theName, "r");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

但是你需要处理raf 可能存在的问题null

于 2016-03-17T03:59:23.050 回答
0

当您在另一个构造函数中调用一个构造函数时,它必须是第一条指令。

class SomeClass {
  private RandomAccessFile RAF = null;

  public SomeClass(String theName) {
    this(new RandomAccessFile(theName, "r")); 
  }

  public SomeClass(RandomAccessFile RAFSrc) {
    RAF = RAFSrc;

    //...
  }

  //...
}
于 2019-05-22T01:55:48.003 回答