-2

オブジェクトで値を渡すことができず、メインメソッドから値を渡すことができるように、コンストラクターで値を初期化する方法は?

  class ex
    {
        int a,b;
        ex()
        {
            this.a=b;  
        }

        public static void main(String args[])
        {
            //here we pass the values to that consructor ex
            ex obj=new ex();
        }
    }
4

3 に答える 3

3

2つの引数を受け入れるオーバーロードされたコンストラクターを作成します。

public ex(int a, int b) {
   this.a = a;
   this.b = b;
}

public static void main(String...args){
 ex obj = new ex(1,2)
}

mainメソッドから渡す必要のあるオブジェクトから値を渡すことはできません

私が正しく理解している場合は、mainメソッドから引数を渡し、コンストラクターでそれらを初期化する必要があります。オブジェクトの作成中に引数をコンストラクターに渡すだけです。

于 2012-11-19T13:54:58.867 に答える
0

新しいオブジェクトの宣言中に初期化値を表示したくない場合は、コンストラクターからセッター メソッドを呼び出すことができます。

参照用に以下のコードを参照してください。


class Testcl {

int a,b; Testcl(){ setValues(1,2); } private void setValues(int a, int b){ this.a=a; this.b=b; } public static void main(String [] args){ Testcl test = new Testcl(); System.out.println("a : " + test.a + " b : " + test.b); }}
于 2012-11-19T14:18:13.700 に答える
0

最初に言うことは、これは実際に「機能する」ということです...エラーなしでコンパイルおよび実行されるという意味で。

    int a,b;  // default initialized to 'zero'

    ex() {
        this.a=b;  // assigns 'zsro' to a.
    }

しかしもちろん、それは何も達成しません...なぜならaすでに zeroその時点にあるからです。

これで、メソッドは、コンストラクターが戻ったにand/orフィールドmainに何かを割り当てることができます。しかし、(純粋な Java 1では) コンストラクターが呼び出される前にゼロ以外の値を取得する方法はありません...それがあなたが求めているものである場合。abb

a実際的な解決策は、コンストラクターにb引数を追加することです。


1 - 非純粋な Java ソリューションは、コンストラクターのバイトコードを「モンキー アラウンド」して、「必要な」ことを実行することです。しかし、それはかなり恐ろしいことであり、恐ろしい解決策が戻ってきてあなたを噛む傾向があります.

于 2012-11-19T14:24:18.227 に答える