5

inString他のクラスで変数を取得する必要があります。これどうやってするの?

public class main {
    public static StringBuffer inString;


    public static void main(String[] args) {
        inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. ");
        inString = new StringBuffer(inString.toString().replaceAll(" +", " "));
        }
}

だから私System.out.println(main.inString);は自分の Textcl.class で使用しようとしましたが、 null.

4

4 に答える 4

4

次の方法でアクセスできます。 は、変数が宣言されmain.inStringmainいるクラスの名前です。public static

于 2013-04-14T14:06:19.447 に答える
3

コメントでRobert Kilarが正しく指摘しているようにinStringが初期化されないため、nullになります。

クラス名を使用して静的変数を参照します。

例 ClassName.変数名. あなたの場合

    main.inString 

メインクラスを実行します。実行すると inString がクラスのコンストラクターで初期化されます。これで、以下のように Myclass で同じものを参照できます。

public class main {
public static StringBuffer inString;

public main()
{
inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. ");
inString = new StringBuffer(inString.toString().replaceAll(" +", " "));
new MyClass();
}
public static void main(String[] args) {
    new main();
    }
}

MyClass で static 変数を参照します。

class MyClass {

public MyClass() {
    System.out.println("............."+main.inString);// refer to static variable
}
}

クラスのコンストラクターに変数を渡すこともできます。

public class main {
public  StringBuffer inString;

 public main()
  {
    inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. ");
    inString = new StringBuffer(inString.toString().replaceAll(" +", " "));  
    new MyClass(inString);
 }
public static void main(String[] args) {
    new main();

    }
}

次にマイクラスで

 public class MyClass
 {
        public MyClass(StringBuffer value)
        {
          System.out.println("............."+value);
        }
 } 

リンクを確認してください @なぜ静的変数は悪とみなされるのですか?

于 2013-04-14T14:07:51.017 に答える
2

クラスのフィールドを静的にしたので、クラス名を使用してアクセスします。

main.inString
于 2013-04-14T14:09:45.683 に答える
1

JavaBeansを使用してそのフィールドの 1 つとして格納し、そのために getter と setter を使用します。

JavaBeans は、プロパティを持つ Java クラスです。プロパティはプライベート インスタンス変数と考えてください。これらはプライベートであるため、クラスの外部からアクセスできる唯一の方法は、クラス内のメソッドを使用することです。プロパティの値を変更するメソッドはセッター メソッドと呼ばれ、プロパティの値を取得するメソッドはゲッター メソッドと呼ばれます。

public class VariableStorage implements Serializable  {

    private String inString;

    public String getInString() {
        return inString;
    }

    public void setInString(String inString) {
        this.inString = inString;
    }
}

以下を使用して、mail メソッドで変数を設定します。

VariableStorage variableStorage = new VariableStorage();
variableStorage.setInString(inString);

次に、オブジェクトのシリアル化を使用してこのオブジェクトをシリアル化し、他のクラスでこのオブジェクトを逆シリアル化します。

シリアル化では、オブジェクトは、オブジェクトのデータと、オブジェクトの型およびオブジェクトに格納されているデータの型に関する情報を含む一連のバイトとして表すことができます。

シリアル化されたオブジェクトがファイルに書き込まれた後、ファイルから読み取り、逆シリアル化できます。つまり、オブジェクトとそのデータを表す型情報とバイトを使用して、メモリ内にオブジェクトを再作成できます。

このチュートリアルが必要な場合は、 Java でのシリアル化 を参照してください。

于 2013-04-14T14:12:45.050 に答える