1

これに同意しない人はいますか?

JLabel lbl;
lbl = new JLabel ("a label");

と同等です:

JLabel lbl = new JLabel ("a label");

私はそうは思いませんか?

気をつけてください-これは次の質問に関連しています:

public class Test 
extends JApplet
{
    JLabel lbl;
    lbl = new JLabel ("a label");
    public void init() 
    {
    }
}

このコード(A)は、次のエラーを出します。

トークン";"の構文エラー、、が必要

ただし、このコード(B)は完全に機能します。

public class Test 
extends JApplet
{
    JLabel lbl = new JLabel ("a label");
    public void init() 
    {
    }
}

なぜこれが起こるのか考えていますか?これは、initメソッドに関係している可能性があります。解釈可能な理論ではなく、数学的に正確な説明を見るのを今でも楽しみにしています。どうもありがとう。アプレットは初めてです。PS:簡単にするために、パッケージのインポート(例:import javax.swing。*;)を省略しました。

4

3 に答える 3

2

このような無料の指示をクラスの本文に含めることはできません。クラス本体には、メソッド、フィールド宣言、コンストラクター、内部クラス宣言、静的およびインスタンス初期化ブロックを含めることができますが、このようなフリー命令を含めることはできません。

あなたができる

JLabel lbl;

{
    lbl = new JLabel ("a label");
}

しかし、それは醜いです。

于 2012-12-27T11:45:55.647 に答える
2

メソッドで使用する場合は、同じである必要があります。

public void setMethod() {
    JLabel lbl;
    lbl = new JLabel ("a label");
}
于 2012-12-27T12:26:27.653 に答える
2

アプレットやinit()メソッドとは何の関係もありません。メソッド本体またはブロック内にのみ命令を含めることができます(lbl = new JLabel ("a label");宣言なしは命令です)

于 2012-12-27T12:27:39.633 に答える