2

このイラストが私の質問を明確にすることを願っています:

class someThread extends Thread{
        private int num;
        public Testing tobj = new Testing(num); //How can I pass the value from the constructor here? 

        public someThread(int num){ 
            this.num=num;
        }

        void someMethod(){
            someThread st = new someThread(num);
            st.tobj.print(); //so that I can do this
        }   
    }
4

2 に答える 2

6

1 つには、public フィールドを持つことは、IMO を始めるのに悪い考えです。(あなたの名前も理想的ではありません...)

必要なのは、インラインではなくコンストラクターで初期化することだけです。

private int num;
private final Testing tobj;

public someThread(int num) {
    this.num = num;
    tobj = new Testing(num);
}

(最終的にする必要はありません-できる限り変数を最終的にすることを好みます...)

もちろん、num他に何も必要ない場合は、フィールドとしてはまったく必要ありません。

private final Testing tobj;

public someThread(int num) {
    tobj = new Testing(num);
}
于 2013-01-03T20:10:13.723 に答える
1

コンストラクターでオブジェクトを初期化しないのはなぜですか??

 public Testing tobj ; //How can I pass the value from the constructor here? 

        public someThread(int num){ 
            this.num=num;
            tobj  = new Testing(this.num);
        }
于 2013-01-03T20:10:08.810 に答える