• ベストアンサー

javaのstatic メソッドのthisについて

javaの『static メソッド』の中では、thisが使用できないようです(下記のコード参照)。 毎度、お世話になります。 Q1) このthisに代わる記述、方法はありますか? static void start_threadFFT(int sw_curve){ ..... new Thread(this).start(); .... } 以上、宜しくお願い申し上げます。

  • Java
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.1

ありません。 せいぜいインスタンス(この場合はthis)をstaticメソッドの引数にするくらいです。

関連するQ&A

  • static methodの引数thisについて

    javaの『static メソッド』の中では、thisが使用できないようです(再質問)。 毎度、お世話になります。 出来れば、下記のコードでthisの部分の変更をお教え頂けないでしょうか? 尚、この場合のthisは、myclsFFTクラスの中の、Thread(this)の引数と なっています(下記のコード参照)。 Q1) このthisに代わる記述、方法はありますか? static void start_threadFFT(int sw_curve){ ..... new Thread(this).start(); .... } 以上、宜しくお願い申し上げます。 ========================================== public class myclsFFT extends myDrawClass implements Runnable{ myclsFFT(){ } static void start_threadFFT(int sw_curve){ ..... new Thread(this).start(); .... } ...... } ==========================================

    • ベストアンサー
    • Java
  • Javaのメソッドについて

    Javaの参考書を見ていて分からない点があります。 Kadaiクラスで使用したcurrentThreadメソッドは、 Thread.currentThread()と書いてもthis.currentThread()と書いても 実行結果が同じになります。 currentThreadメソッドは静的メソッドなのに、 なぜthis.currentThread()でも良いのか分かりません。 this.currentThread()も静的メソッドなのでしょうか? class SampleThread{ public static void main(String[] args){ Thread t1=new Kadai(); t1.setName("Minimum"); //スレッド名を設定 t1.setPriority(Thread.MIN_PRIORITY); //優先順位を設定 Kadai t2=new Kadai(); t2.setName("Normal"); t2.setPriority(Thread.NORM_PRIORITY); Kadai t3=new Kadai(); t3.setName("Maximum"); t3.setPriority(Thread.MAX_PRIORITY); t1.start(); //プライオリティが最低のスレッドを実行 t2.start(); //プライオリティが普通のスレッドを実行 t3.start(); //プライオリティが最優先のスレッドを実行 } } class Kadai extends Thread{ public void run(){ Thread t=this.currentThread(); //スレッド情報を取得 System.out.println("スレッド名:"+t.getName()+" プライオリティ:"+t.getPriority()); } }

    • ベストアンサー
    • Java
  • mainメソッドと同じオブジェクト内のメソッドにはstaticを必ずつ

    mainメソッドと同じオブジェクト内のメソッドにはstaticを必ずつけなければならないのでしょうか? そのような記述を見掛けたのですが、もしこれが正しいという場合、 それは、なぜなのでしょう? java初心者ですが、どうぞ宜しくお願いいたします。 class MainClass{  //先頭のstaticに注目  static void sub(){   ~~  }  //mainメソッド  public static void main(String[] args){   sub();  } }

    • ベストアンサー
    • Java
  • private voidなメソッドはstatic コンテキストですか

    コンパイルエラーで、 「static コンテキストから参照することはできません」 と表示されます。 ソースにstaticという文字は有りません。 private voidなメソッドはstatic コンテキストですか? [Foo.java] import com.nttdocomo.ui.*; public class Foo extends IApplication {  public void start() {   Display.setCurrent(new MyPanel());  } } class MyPanel extends Panel {  private void e() {   Bar.DShow(Dialog.DIALOG_ERROR, "", "");  } } [Bar.java] import com.nttdocomo.ui.*; public class Bar {  public void DShow(int type, String title, String body) {   Dialog d = new Dialog(type, title);   d.setText(body);   d.show();  } }

    • ベストアンサー
    • Java
  • static 及びthisについて

    javaの勉強をしていて、下記のような簡単なプログラムを書きました。 interface Const{ int c1=85,c2=94,c3=72; } //コントロール&実装クラス public class TestInterface implements Const { void tsum(){ int total ; total = c1+c2+c3; System.out.println("Total : "+total); total = total/3; System.out.println("Average : " +total); } public static void main(String[] args) { this.tsum(); } } これについて2つ質問があります。 1.下から2行目this.tsum()でコンパイルエラーになりますが、理由がわかりません。 2.thisを使うのやめ、public static の前にコンストラクタ TestInterface obj = new TestInterface(); を追加し、 this.tsum()をobj.tsum() に変更したところ、obj.tsum()のところで、エラーになります。コンストラクタにstaticの修飾子をつけるとコンパイルされます。 どうして、staticをつけなければいけないのかわかりません。 基本的な質問で申し訳ございませんが、以上2点おわかりの方がいらっしゃいましたら、教えていただけないでしょうか。 よろしくおねがいします。

    • ベストアンサー
    • Java
  • java public static

    java言語の「public static」について javaで使われる「public static」はどこからでもアクセスできるという意味で間違ってますか? またstaticがつくことにより静的なメソッドになり コードを読み込む際、複数のthreadになってしまうこともありますでしょうか? 意味が通じてなかったらスミマセン。

    • ベストアンサー
    • Java
  • JAVAのマルチスレッドの共有変数についての質問

    JAVAのマルチスレッドの共有変数についての質問です。 スレッドを2つ作ってその2つのスレッド共有の配列を作りたいのですがどうすれば良いのでしょうか。 コードは以下のとおりです。 public class testes extends Thread { int n; int a[]={10,10}; public testes(int n){ this.n = n; } public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ testes t1 = new testes(0); testes t2 = new testes(1); t1.start(); t2.start(); } public void run(){ a[n] =n; System.out.println(a[0]+","+a[1]); } } 実行すると(0,10)もしくは(10,1)が表示されます。 このとき(0,1)と表示するにはどうすれば良いのでしょうか。

  • staticなフィールドをstaticじゃないメソッドで使うには?

    いつもお世話になっています。よろしくお願いします。 javaで、staticなメインメソッドからも、staticじゃないメソッドからも1つの メンバ変数(フィールド)を処理したいと思います。 private static String nr; というフィールドを宣言しました。 (staticであるmainメソッドの中で使えるようにstaticで宣言しようと思いました。) 次に、 private void Kensaku() { このstaticではないメソッドの中でString nrを使って処理を行いたいです。 } 初歩の初歩なことを質問してすみませんが、調べても分かりませんでした。 どうか、よろしくお願いします。

    • ベストアンサー
    • Java
  • メインメソッドのstatic

    javaでstaticは静的という意味があると思うのですがメインメソッドにも使われていますよね? public static void main(String[] args) publicはどこからでもアクセスできるという意味だったと思うのですが メインメソッドにstaticがついている意味などはあるのでしょうか? 素朴な疑問です。

    • ベストアンサー
    • Java
  • Javaの初期化メソッドについて

    こんにちは。Javaの初心者です。 Javaの初期化メソッド(initメソッド)についてなのですが、処理を記述しても実行してくれません。 恐らく使い方が間違ってるかと思われるのですが、ネットで調べてもあまり検索結果がでてこなかったので、質問させてもらいました。 以下サンプルコード import java.lang.*; public class Test { static int a; public void init() { a = 10; } public static void main(String[] args) { System.out.println(a); } } 実行してみても、「0」と表示されるだけで、「10」と表示してくれませんでした。 どこかコードが間違えてるのでしょうか? それとも初期化メソッドはアプレット用であってアプレットで使わないと意味がないというものなのでしょうか? 因みに関係ないかと思われますが、グローバル変数は自動的に初期化される(0が代入される)ということは知っています。 ご教授の方、よろしくお願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう