0

JAVAを使うのは久しぶりです。

別のクラスでメソッドを使用するために、インスタンス変数を作成しようとしています。

しかし、「コンストラクターBBは未定義です」というエラーメッセージが表示されます

何か助けはありますか?

public class AA implements CC { //this is the class where I am trying to create an instance variable

        public int Get() {
        throw new IllegalStateException("Please implement me.");
        BB fifo = new BB(); // this is where I am declaring.
    }
}

また、FIFOLock クラスの署名があります。

public class BB implements DD {
       public int Get() {}
}
4

6 に答える 6

2

あなたの声明BB fifo = new BB();は前にあるべきです

throw new IllegalStateException("Please implement me.");

于 2012-10-08T06:24:11.080 に答える
1

なぜそのエラーメッセージが表示されるのかわかりませんが、問題は、コードを記述していることが実行できない場所である可能性があります(例外をスローした後)

例外を削除するか、メソッドの最後に配置することをお勧めします。

ところで、私はあなたcamelCaseがメソッドに使用UnsupportedOperationExceptionIllegalStateException、オブジェクトがメソッドを使用できないことを意味する状態にあると言うように使用することをお勧めします。つまり、別の紛らわしいエラーです。

また、ロックが組み込まれているので、FIFOロックFIFOLockを使用することをお勧めします。new ReentrantLock(true);

于 2012-10-08T06:25:39.473 に答える
1

クラスで1引数のコンストラクターまたは任意のn引数のコンストラクターを宣言する場合は、独自に0引数のコンストラクターも宣言する必要がありCompilerます。

クラスで他のコンストラクターが宣言されていない場合、コンパイラーはデフォルトのコンストラクターのみを追加します。

したがって、以下を使用する場合:- 、既存のコンストラクターに加えて、BBクラスでパブリックコンストラクターBB obj = new BB()を宣言します:-

public BB() {
}

public BB(String arg) {  // Whatever constructor you have declared
}

または、クラスを変更できない場合は、1引数コンストラクターを使用してインスタンスを作成します。-

 public int Get() {
    BB fifo = new BB("rohit"); // this is where I am declaring.
    throw new IllegalStateException("Please implement me.");
 }

:-throwインスタンス作成行の後にステートメントが必要です。そうでない場合、コードはCompile..ではありません。UnreachableCode

于 2012-10-08T06:25:49.380 に答える
0

デフォルトのコンストラクターを追加し、次のようにします。

public class BB implements DD {
BB()
{
}

       public int Get() {}
}
于 2012-10-08T06:24:44.297 に答える
0

BBクラスに以下を追加してください

   public BB() {
    }

デフォルトのコンストラクター/引数なしのコンストラクターを作成せずに、クラスでパラメーター化されたコンストラクターを使用したと思われます。クラスにデフォルトのコンストラクターがある場合は、他のクラスからもアクセスできるようにします。BBBBpublic

于 2012-10-08T06:25:59.620 に答える
-1

あなたが持っていると言ったようにpublic BB (String name) { mt = name}

コードで上記について言及しておく必要があります。

次に、クラス AA でクラス BB のインスタンスを次のように初期化する必要があります。

BB b = new BB("Vivek");

すなわち。引数として文字列を使用します。

そして、 throwステートメントのBB b = new BB("Hello");前に配置します。

于 2012-10-08T06:36:24.350 に答える