[解決済み] パラメータを指定して実行可能?
2022-04-19 01:31:24
質問
パラメータを受け取るRunnableが必要なのですが、そのようなRunnableが実際には存在しないことは知っています。
これは、私のアプリの設計の根本的な欠陥、または私の疲れた脳のメンタルブロックを指している可能性があるので、私はここで次のようなことを達成する方法についていくつかのアドバイスを見つけることを期待しています。 なし OOの基本原則に反している。
private Runnable mOneShotTask = new Runnable(String str) {
public void run(String str) {
someFunc(str);
}
};
上記のようなことを実現するにはどうしたらいいか、何かアイデアはありませんか?
どのように解決するのですか?
さて、私が最初にこれを投稿してから約9年が経ちますが、正直なところ、Javaはその後何度か改良を加えています。私のオリジナルの答えを以下に残しておきますが、その中にあることを人々が実行する必要はありません。9年前なら、コードレビューの際に、なぜそうするのか疑問を持ち、多分承認したでしょうし、そうでないかもしれません。最新のラムダが利用可能な今、時代遅れのアプローチ(公平に見て、そもそも怪しげですが...)を推奨するような投票数の多い回答は無責任です。現代のJavaでは、そのコードレビューはすぐに却下され、これが提案されたことでしょう。
void foo(final String str) {
Thread t = new Thread(() -> someFunc(str));
t.start();
}
前回と同様、そのスレッドを有意義に処理するなどの詳細は、読者への練習として残しておく。しかし、単刀直入に言えば、ラムダを使うのが怖いなら、マルチスレッドシステムをもっと怖がるべきでしょう。
オリジナルの回答、ただそれだけです。
メソッドの中ですぐにクラスを宣言することができます
void Foo(String str) {
class OneShotTask implements Runnable {
String str;
OneShotTask(String s) { str = s; }
public void run() {
someFunc(str);
}
}
Thread t = new Thread(new OneShotTask(str));
t.start();
}
関連
-
[解決済み] Javaでパラメータの型の横にある3つの点は何を意味するのですか?
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Javaにおける "implements Runnable "と "extends Thread "の違いについて
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み] 整数の左側にゼロを埋め込むにはどうしたらいいですか?
-
[解決済み] JavaにおけるRunnableインターフェースとCallableインターフェースの違いについて
-
[解決済み】Thread start()とRunnable run()の違いとは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
java の例外が発生しました java
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
Dateが型に解決できない問題を解決する
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
[解決済み】Javaスレッドにパラメータを渡すにはどうすればいいですか?
-
[解決済み] Javaでメソッドのパラメータをfinalと宣言するのはパフォーマンス的に問題がありますか?