1

理解できないエラーがあります:

class MyClass1 {
  private class MyClass1Internal(a: Int, b: Int, c: String, d: String)
  def method1 = {
    // doing something
    new MyClass1Internal(1, 2, "3", "4")
  }
}

エラー

private class MyClass1Internal escapes its defining scope as part of type MyClass1.this.MyClass1Internal
[error]   def method1 = {
[error]       ^

それは何ですか、どうすればそれを取り除くことができますか?

4

2 に答える 2

6

MyClass1InternalMyClass1はプライベートであるため、外部からアクセスすることはできませんがmethod、(パブリックであるため) このクラスの外部でインスタンスを返すため、その定義スコープが壊れます。

プライベートとして定義methodすると、このエラーが修正されるに違いありません。ネストされたクラスを非公開にすることもできます。

もう1つ、他のコードがそのクラスで動作できるようにしたいが、インスタンス化できないようにしたい場合は、次のようにコンストラクターをプライベートにし、クラスをパブリックにします。

class MyClass1 {
  class MyClass1Internal private[MyClass1](a: Int, b: Int, c: String, d: String)
  def method1 = {
    // doing something
    new MyClass1Internal(1, 2, "3", "4")
  }
}
于 2013-06-05T21:47:59.707 に答える