0
import javax.swing.*;

class Person {
     public String name;

     public static void main(String[] args) {
         new Person().enter();
     }
     void enter(){
        Person a = new Person();
        String first = JOptionPane.showInputDialog(null,"Enter your first name");
        a.name = first;
        new la().a();
     }
}
class la{
     void a(){
        Person a = new Person();
        System.out.println(a.name);
    }
}

ご覧のとおり、ここで私がやろうとしていることは、入力からグローバル変数「name」を設定しJOption、後で他のクラスから新しい入力変数で「name」にアクセスできるようにすることです。後でクラスの動作はそのvar'name'に依存するため。これで、コンストラクターを介してこれらを関連するクラスに渡すだけでこの問題を回避できることがわかりましたが、この方法が可能かどうかを知りたいですか?

4

2 に答える 2

0

現在、クラスがパブリックであることを指定しないことにより、それをデフォルトとして設定しています。デフォルトはパッケージプライベートであるため、他のパッケージのクラスはこのクラスのパブリック変数にアクセスできません。

クラスをPublicとして宣言し、グローバル変数をPublicに設定すると、それらにアクセスできるようになります。

于 2012-08-17T15:01:25.720 に答える
0

あなたの例は、あなたが達成しようとしていることを達成しません。

で新しいインスタンスを作成し、それに新しいインスタンスPersonMain割り当ててから、の新しいインスタンスを作成しますla。これにより、独自のインスタンスが作成されます。Person

これらのさまざまなインスタンスの間に連立はありません。

public static void main(String args[]) {
    String first = JOptionPane.showInputDialog(null,"Enter your first name");
    // You should be checking the return result, but any way...
    Person person = new Person();
    person.name = first;

    La la = new La(person);

}

public class La {
    public La(Person person) {
        System.out.println(person.name);
    }
}
于 2012-08-17T15:04:57.223 に答える