• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:static methodの引数thisについて)

staticメソッドの引数thisについて

このQ&Aのポイント
  • javaの『static メソッド』の中では、thisが使用できないようです
  • myclsFFTクラスの中のThread(this)の引数の代わりの記述方法はあるのか?
  • 本記事では、staticメソッドの中でthisを使用する代替手段について探求します

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

classとは定義だけで実体がありません。 new演算子を使うことで、始めて実体ができます。 同じclassに幾つもnewを行うことができます。 すると、newの度に別々の実体が発生します。 この一つ一つをインスタンスと言います。 従って、クラス内のstatic属性でない変数は同じ 名前でもインスタンス毎に値が異なります。 thisとは現在の自分自身を指すインスタンスのことです。 staticは最初から唯一の実体が存在するという意味です。 従って、static属性の関数はインスタンスという観念が なく、class内のインスタンス変数(staticのない変数)は インスタンスを識別する方法が無いので扱えません。 インスタンス本体であるthisも当然ですが扱えません。 解決手段としてはこのstatic関数を呼び出すインスタンス関数が インスタンスを渡すことです。関数の引数でインスタンスを渡す ことは可能だからです。 void outfunc(int sw_curve) { //呼び出す側のインスタンス関数 start_threadFFT(sw_curve,this); } static void start_threadFFT(int sw_curve,myclsFFT xxx){ ..... new Thread(xxx).start(); .... }

bakabon_X
質問者

お礼

notnotさん以外は、有意義な回答でありました。 その内容はまだ十分把握していませんが、再度読み返してみます。 貴方の答え以外にも、良い回答があると思いますが、代表して ベストアンサーにさせて頂きます。 今後とも、宜しくお願いします。

その他の回答 (5)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.6

>私はjavaの初心者ですから、簡単明瞭に記述して頂かないと対応できません。 >つまり、コードの記述が出来ません。 では#4の回答のメソッド static void start_threadFFT(int sw_curve,myclsFFT xxx) を呼ぶとき第2引数は何を指定するつもりなんでしょうか。 myclsFFT.start_threadFFT(sw_curve, new myclsFFT()); としますか? ただ、これだとstaticメソッドにする意味がないです。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.5

>thisの替わりは、xxxx でした。 >xxxxの内容は差し控えますが、他の方から明快な回答をえました。 #4の回答なんでしょうけど、その意味はわかってるんでしょうか? 私はそれと同じ事、 http://okwave.jp/qa/q8917477.html の#1で書いてるんですけど。

bakabon_X
質問者

補足

wormholeさんへ notnotさんの下記の回答について私はコメントさせて頂きました。 『どこかもっと前の段階で方向が狂っていると思われますので、最初から考え直した方が良いです』 私はjavaの初心者ですから、簡単明瞭に記述して頂かないと対応できません。 つまり、コードの記述が出来ません。 既に、回答を得ましたのでその結果として、貴方の回答の意味は理解していますし、 そもそも、質問の趣旨が、そのものずばりの回答を得ることでした。 幾ら正しい解答でも、回答者に、的確、明確にわからないと質問者の目的は達成 されませんし、再質問もできません。 私は、簡単明瞭な回答を期待しています、ただ貴方の回答につきましては、感謝はしても、 批判や文句は言いません。 上記の、『何処かが狂っている』との回答があり、当方も多少気分が悪くしている次第です。 何度も申しますが、下記の回答に納得できない所がありますので、コメントの 投稿をした次第です。 『どこかもっと前の段階で方向が狂っていると思われますので、最初から考え直した方が良いです』 以上

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>質問者が、無知であるとか、考え方が間違っている等の解答は、無意味です。 質問者にとって、最適なアドバイス(これこれの点について理解が足りないので勉強するべき)をしています。 「理解するつもりは無い。当面の答えだけ教えて」というのが質問者の情況ならおっしゃることもうなずけますが、デジタルライフカテゴリならともかく、ここは技術者向けのカテゴリなので、特に記述が無ければ質問者はIT技術者であると仮定して回答しています。 「理解するつもりは無い。当面の答えだけ教えて」ということであれば、質問文にその旨書いていただけると助かります。

bakabon_X
質問者

補足

notnot さま 私は、貴方の講釈を聞きたいのではありません。 書きましたように、thisについて質問しています。 『勉強しなさい』と言う様な、助言は、貴方が、私の質問に答えて初めて言えると思います。 『考えなおしなさい』と言う様な、全く無意味です。 今回の質問に関しましては、貴方の知識不足といわざるを得ません。 既に、私は正解を得ています。 貴方も相当な自信家の様ですから、回答をお願いします、その上で、再度 考えて、システムの批判、助言をお願いします。 以上、お気に障りましたら、お許しください。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

>出来れば、下記のコードでthisの部分の変更をお教え頂けないでしょうか? #1でも書かれいますが、thisとは何なのかstaticメソッドとは何なのか勉強しなおしましょう。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

スタティックメソッドとは何か、thisとは何かを理解していればこういう質問は出てこないはずです。 どこかもっと前の段階で方向が狂っていると思われますので、最初から考え直した方が良いです。

bakabon_X
質問者

補足

無意味な回答はやめましょう。 つまり、回答としましては、 yyyyであると明言すべきです。それが出来なけば、回答はしないほうが良いと思います。 質問者が、無知であるとか、考え方が間違っている等の解答は、無意味です。 thisの替わりは、xxxx でした。 xxxxの内容は差し控えますが、他の方から明快な回答をえました。

関連するQ&A