- 1 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 21:15:23.40 ID:3TSUYd8+.net]
- プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 (p)ttp://www.wikiroom.com/java/?path,classpath ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 ・String に == は使うな。equals() を使え。※ 質問時の心得 ・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。 ・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。 前スレ ★★Java質問・相談スレッド178★★ [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1466119015/
- 412 名前:デフォルトの名無しさん mailto:sage [2017/01/05(木) 20:47:02.76 ID:Dua5hrmJ.net]
- >>402
Connection.Response#cookie()で取れるんじゃないの?
- 413 名前:デフォルトの名無しさん mailto:sage [2017/01/05(木) 20:48:26.91 ID:Dua5hrmJ.net]
- 実際にはHttpConnection.Response#cookie()なのかな
- 414 名前:デフォルトの名無しさん mailto:sage [2017/01/06(金) 02:12:14.55 ID:fLo719uv.net]
- >>404
まじかサンキュー
- 415 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 16:41:35.76 ID:3K1tpc29.net]
- 選択したhtmlファイルの文字列をswingでつくったツール上に表示させたいんだけどどうすればできる?
htmlのパーサはjsoupを使っている
- 416 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 16:45:32.99 ID:w01jaJnp.net]
- HTMLファイルはそのままで表示ができるが
javax.swing.JEditorPane クラス
- 417 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 16:49:20.19 ID:w01jaJnp.net]
- 自分でレンダリングするのは難しそう
news.mynavi.jp/articles/2007/04/27/webrenderer/
- 418 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 17:01:10.12 ID:3K1tpc29.net]
- >>408
htmlのまま表示させるんじゃなくて
- 419 名前:カ字列だけを抜き出して表示させたいんだ []
- [ここ壊れてます]
- 420 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 17:13:32.98 ID:w01jaJnp.net]
- その通りやれば
- 421 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 17:21:43.04 ID:apvQMz4T.net]
- >>407が言う文字列とは何を指すのか
- 422 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 17:46:31.57 ID:w01jaJnp.net]
- 自分が何をやりたいのか言葉に書けないレベルなのだからほっとけ
- 423 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 18:00:18.94 ID:3K1tpc29.net]
- 学校の課題だからあんま詳しくかいたら駄目かなと思っただけなんだけど
やりたいことは 単体テストの結果を出力したhtmlファイルと、もとのjavaファイルに変更を加えた後にさっきかいたhtmlファイルの内容を期待出力にした回帰テストの結果を出力したhtmlファイル この2つのhtmlファイルの文字列をツール上に表示させてかつ相違がある箇所をハイライトしたい
- 424 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 18:13:44.86 ID:w01jaJnp.net]
- 自分でやれ、今までのレスは無し
- 425 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 18:16:39.88 ID:3K1tpc29.net]
- まぁそりゃそうだわな
ありがとう
- 426 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 21:12:20.05 ID:21kcp9Ol.net]
- 別に全部教えろって言ってるわけじゃないんだろうしちょっとくらいアドバイスやってもいいと思うけどな
jsoupは使ったことないけどパーサがあるなら普通にstring型で出力すればいいんじゃないの?
- 427 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 22:55:57.29 ID:EMY/V/Hn.net]
- ArrayList<Integer> a;
ArrayList<Integer> f() {return a;} List<Integer> g() {return a;} // OK List<Object> h() {return a;} // ダメ いつからこのg()みたいなのおkになったの? ジェネリクスの変性どうのというよりこれは単に Derived d; Base g() {return d;} っていう風にとらえるだけのことで 実型パラメータ(一個目の例でのInteger)は無視しておkなの?
- 428 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 23:12:50.86 ID:4lT0hUL1.net]
- >>418
そうじゃなくて、型引数のIntegerを含めて Derived と Base の関係なんだよ ArrayList<E> は List<E> を実装しているので、 E を Integerで特殊化した ArrayList<Integer> は List<Integer> を実装していることになる
- 429 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 23:22:43.32 ID:D5DrwE40.net]
- >>417
アホ担当に命ずる、頑張ってね
- 430 名前:デフォルトの名無しさん mailto:sage [2017/01/07(土) 23:36:30.44 ID:BeSWRGfA.net]
- >>419
ありがとうございます! 激分かりやすかったす!
- 431 名前:デフォルトの名無しさん [2017/01/08(日) 08:55:52.77 ID:zIZ7V1fq.net]
- コンソルに以下のように出力させたいです。
ttp://pastebin.com/3p6kxw4D ソースは以下にあります。 ttp://pastebin.com/S1vbuyaG // dont select the current item and proceed next for (int i = 0; i < names.size(); i++) { System.out.print(
- 432 名前:デフォルトの名無しさん [2017/01/08(日) 08:59:30.89 ID:zIZ7V1fq.net]
- }
何故か途切れた。 上記の処理が表示の要因なのですが、どうやったら階段見たく表示されるのでしょうか? 以上、よろしくお願いいたします。
- 433 名前:デフォルトの名無しさん mailto:sage [2017/01/08(日) 13:23:22.35 ID:J5aNntpx.net]
- >>423
String.formatでぐぐる
- 434 名前:デフォルトの名無しさん [2017/01/08(日) 21:06:09.52 ID:Bubf9Yrg.net]
- サーブレット/JSPの勉強中なんですが、マルチスレッドを意識するとどういう設計・実装をするべきか分からなくなります。
とりあえずクライアント1台では正常に動いてるんですが、スレッドセーフなのかどうなのか自信が持てません。 ガイドラインや設計の資料があれば教えてください。
- 435 名前:デフォルトの名無しさん mailto:sage [2017/01/08(日) 21:10:25.10 ID:6Rfsv7h0.net]
- >>425
初心者はスレッドセーフかどうかを心配する必要があるような設計をしてはいけない DBとローカル変数以外は使うな
- 436 名前:426 mailto:sage [2017/01/08(日) 21:21:20.77 ID:6Rfsv7h0.net]
- 誤解のないように言っておくと、参照のルートは必ずローカル変数でなきゃいけないという意味ね
クラスのインスタンスを作って使うのは構わないが、リクエストをまたがって保持しようと考えてはいけない
- 437 名前:デフォルトの名無しさん mailto:sage [2017/01/08(日) 22:17:11.61 ID:c5pY166L.net]
- >>422-423
2chのバグだろう 書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。 " の代わりに、\" とエスケープすれば、どうだろう? それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった >>425 素人がマルチスレッドなんて、何十年も早い。 Rubyを作った、まつもとゆきひろでさえ、やったことないのに マルチスレッドで共有変数があれば、即終了!
- 438 名前:デフォルトの名無しさん [2017/01/09(月) 20:32:39.79 ID:bKumwacY.net]
- 何十年ってこたなかろうw
- 439 名前:デフォルトの名無しさん mailto:sage [2017/01/10(火) 07:57:30.67 ID:btyz1q/N.net]
- ローカル変数のStringBuilderを全部StringBufferに書き換えてる奴を見て、なんかげんなりしたことあるよ
- 440 名前:デフォルトの名無しさん mailto:sage [2017/01/10(火) 08:13:39.45 ID:anKjrvQ4.net]
- スレッドセーフという言葉が独り歩きしてるんだよなあ
スレッドセーフはアプリ全体として結果的に実現されるもので、 細かい操作やメソッドがそれ単独でスレッドセーフかどうかというのはあまり意味がない StringBufferのappendメソッドがスレッドセーフでもsb.append(…).append(…)はスレッドセーフじゃないんだから Java初期のスレッドセーフ信仰が生んだ悪習
- 441 名前:デフォルトの名無しさん mailto:sage [2017/01/10(火) 08:36:52.77 ID:duWLWLTR.net]
- 誰もレビューでガツンと言ったらんからそういうことになる
必要のないnull代入とかカーゴカルトプログラミングそのもの
- 442 名前:デフォルトの名無しさん mailto:sage [2017/01/10(火) 09:20:04.28 ID:z7ojWcoj.net]
- スレッドセーフという言葉が良くないよな
実際以上に安全安心な印象を与える 単に「直列化されている」とかでいいのに
- 443 名前:デフォルトの名無しさん mailto:sage [2017/01/10(火) 09:47:13.45 ID:a7VQBoIR.net]
- 直列化はJavaの公式ドキュメントがシリアライズの訳語として使ってるから無理じゃね?
- 444 名前:デフォルトの名無しさん mailto:sage [2017/01/10(火) 12:26:54.61 ID:100jHo+a.net]
- 順番待ちか
- 445 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 08:48:34.11 ID:Adq7JLti.net]
- 排他してなくても結果的に直列化されてるように見えれば問題ないわけだから、一番適切なのはDB用語のserializableかなあ
Javaだとシリアライズと被るから無理だけど
- 446 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 09:53:08.77 ID:Knkf8nBH.net]
- Mutexとか
- 447 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 11:13:29.01 ID:qHX7/jxt.net]
- class Global {
static Object lock = new Object(); } class CL { void f() { synchronized (Global.lock) { } } } こういうグローバルなオブジェクト用いて排他制御ができるということだけど どんなときでもこのGlobalクラス作っておけばスレッドセーフが作れるという認識で良い? 「おまじない」という認識で良い?
- 448 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 12:37:52.68 ID:LZHP+E6Z.net]
- お前はプログラミングするな
- 449 名前:デフォルトの名無しさん [2017/01/11(水) 12:47:25.22 ID:2fyLF58e.net]
- おまじないするな
- 450 名前:デフォルトの名無しさん [2017/01/11(水) 14:50:57.49 ID:hzMZkzGq.net]
- >>438
lockオブジェクトはMutexの役割で使うので、排他したいリソースをsynchronizedブロック内で使えばいい 問題なのは実現の仕方ではなく使いどころ 例えば3個のリストを個々に排他したいけど、リスト間では排他する必要がないのであれば、 synchronized(list1) { } synchronized(list2) { } みたいに排他したいオブジェクトのMutex lockを取得(実際にはMoniterの取得)すればいいのでグローバルのlockObjectを用意する必要はない ただ、先の書き込み内容からしてもう少し勉強してから使ったほうがいいと思いますよ
- 451 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 14:57:57.65 ID:0dcMUO4e.net]
- 排他は必要なところに必要なだけすればいいよ
逆に言うとそれを把握せずにぼんやり スレッドセーフだの何だのやっても無意味
- 452 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 20:56:40.05 ID:9JRTsez2.net]
- Javaはスレッドに頼りすぎ
Javaの外に目を向けると、近年は非同期IOと継続渡しを活用してシングルスレッドで作るスタイルが流行り せっかくJavaにもラムダが入って継続が書きやすくなったことだし、Javaでも非同期プログラミングが普及すればいいのに
- 453 名前:デフォルトの名無しさん mailto:sage [2017/01/11(水) 21:16:47.74 ID:0B2zc1Af.net]
- parallelストリームは便利だよねCPU100%にしたい人向け
- 454 名前:デフォルトの名無しさん [2017/01/11(水) 21:40:13.25 ID:N/Vxl167.net]
- akka良いよ
- 455 名前:デフォルトの名無しさん [2017/01/12(木) 09:30:07.93 ID:us5ONQNv.net]
- いやしかしマルチスレッドはあると便利だよ。非同期入出力でもメインの処理の邪魔をせずに裏でバッファから送信だのバッファに受信だのできるしね。
まあ、そういうのがほとんどないGUI画面で人間との対話ばかりならあまり必要ないかも知れないけどね。人間は一度に一つの事しかできないから。 ゲームとかだマルチスレッドで書いた方が楽になるのはあるかな?
- 456 名前:デフォルトの名無しさん mailto:sage [2017/01/12(木) 09:38:52.01 ID:2R6CrnF4.net]
- イベント処理で全部済むならnginxが裏でワーカースレッド8個とか16個とか持ってるのはなぜ
- 457 名前:デフォルトの名無しさん mailto:sage [2017/01/12(木) 09:43:22.06 ID:gDCHiAoV.net]
- >>447
マルチプロセスで全部済むならインプロセスのマルチスレッドなんていうデリケートな仕組みを使う必要はないだろ 済むかどうかはケースバイケースだけど
- 458 名前:デフォルトの名無しさん mailto:sage [2017/01/12(木) 09:46:01.67 ID:RGf+hnFO.net]
- GUIでマルチスレッド普通に使うだろ
何か処理要求するごとにウィンドウ全体が固まるとかクソアプリじゃん
- 459 名前:デフォルトの名無しさん [2017/01/12(木) 10:33:11.00 ID:us5ONQNv.net]
- その処理が終わってからでないと次の処理ができない場合はマルチだったとしてもせいぜい「しばらくお待ちください」出すぐらいのものだ。固まってんのと同じ。
- 460 名前:デフォルトの名無しさん mailto:sage [2017/01/12(木) 12:26:58.59 ID:gDCHiAoV.net]
- 非同期プログラミングならユーザーコードがシングルスレッドでも固まらないよ
Ajaxなんかリクエストの最中に固まったりしないでしょ プログラミングモデルとしてマルチスレッド&同期モデルと継続&非同期モデルのどちらが優れてるかどうかは自分で判断すればいいけど、 さすがに今時知らないのはヤバイぞ
- 461 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 08:17:11.76 ID:NQh6x04N.net]
- >>450
途中でキャンセルもできない糞アプリ作んな >>451 非同期なんてそれしか使えない時にやむを得ず使うもんだよ 知らないのは無知だと思うがむやみやたらに使うのはバカ
- 462 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 08:26:17.63 ID:NMRw63WY.net]
- >>452
おまえ個人の開発ポリシーを他人に押しつけないで 迷惑だから
- 463 名前:デフォルトの名無しさん [2017/01/13(金) 08:41:31.37 ID:nVxQCvXm.net]
- 非同期タスクはマルチスレッドを使っての同期タスク実行の抽象度高めただけでしょ
非同期IOだって大抵のOSの非同期IO用システムコールのパフォーマンスは糞だからマルチスレッドで裏で同期IOで実行して非同期に見せかけてる。 抽象度が高いおかげで未熟なプログラマによるマルチスレッドでの間違い(データ競合など)を少なくする事ができるし、スレッド間でむやみに変数を共有させない事によって実装もシンプルになる。 長々書いたけどまとめると非同期タスクで済むことをむやみにマルチスレッドで実装する方がバカ
- 464 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 09:14:53.53 ID:WGrJXBVd.net]
- Javaは伝統的に「非同期APIなんか要らんスレッド使え」でやってきたから
今更移行するのは難しいだろうな Androidは非同期処理多いから移行しやすいだろうけど、サーバーが非同期になる日はなかなか来ないだろう
- 465 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 12:30:19.65 ID:NQh6x04N.net]
- >>453
個人の開発ポリシーだと思ってるところがバカっぽい w
- 466 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 12:34:33.36 ID:xEiCBlzV.net]
- >>456
あ、ごめん 即座に罵倒するようなヤツとは関わらないって決めてるので後は独りで勝手に盛り上がってください
- 467 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 13:06:07.65 ID:TryNDMwR.net]
- 自分が日頃使っている言語以外の一般常識を何も知らない奴がいるのは別にJavaに限ったことではないが、
VB厨やペチパーなんかと違ってJava屋は自分達がスタンダ
- 468 名前:ードだと信じてて自覚がない奴が多いから厄介 []
- [ここ壊れてます]
- 469 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 13:40:08.05 ID:7t+hNZnh.net]
- なんかあったのか?
- 470 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 16:53:41.20 ID:i/Nl3uZN.net]
- マルチスレッドや並列分散系ぜんぜんわからんのだけどどうやって勉強すればいい?
学生のころに習ったコンシステンシモデルとかいうのがまったく理解できないんよね
- 471 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 17:04:17.84 ID:YYdJyp6W.net]
- 餌がきたぞー
- 472 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 17:48:11.19 ID:J1Dr1Cwv.net]
- まず服を(ry
- 473 名前:デフォルトの名無しさん mailto:sage [2017/01/13(金) 20:06:56.93 ID:TZ1yXK65.net]
- >>454
> 非同期タスクはマルチスレッドを使っての同期タスク実行の抽象度高めただけでしょ 全然違う > 非同期IOだって大抵のOSの非同期IO用システムコールのパフォーマンスは糞だからマルチスレッドで裏で同期IOで実行して非同期に見せかけてる。 アホか デバイスは(プロセッサに比べて)遅いからデバイスにコマンド投げて応答があるまで待つんじゃなくて元のスレッドを実行してるだけ マルチスレッドになんてなってない > 抽象度が高いおかげで未熟なプログラマによるマルチスレッドでの間違い(データ競合など)を少なくする事ができるし、スレッド間でむやみに変数を共有させない事によって実装もシンプルになる。 実際に組んだことないだろ? フレームワークないと結構辛いしそれなら普通にマルチスレッドで組んだ方がいい > 長々書いたけどまとめると非同期タスクで済むことをむやみにマルチスレッドで実装する方がバカ そもそも使いどころが違う >>457 恥をかきたくないならその方がいいと思う 賢明な判断
- 474 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 01:48:26.36 ID:i/zar2z9.net]
- 横からだけど.NETはCPUの機能(忘れた)とスレッドプールで>>454見たいにしてるって記事はあったよ
463 が何に噛み付いてるかわからないけど
- 475 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 08:17:34.42 ID:0tIyFjNU.net]
- SpringもPlayも完全非同期で作れるけどね
JavaはNIOのゴミのようなAPIのせいでノンブロッキングIOが使いにくいから糞面倒だが
- 476 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 09:19:00.94 ID:yS+ngl8t.net]
- 非同期はなんの役に立つの?
- 477 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 09:39:38.38 ID:zmTeKxXB.net]
- >>466
スレッドを消費することなくリクエストを並列でたくさん捌ける GUIアプリで長い処理をやるときにいちいちスレッド立てて同期取るような面倒なことをしないでUIスレッド上でやっちゃっても固まらない
- 478 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 09:41:45.41 ID:yS+ngl8t.net]
- >>467
後半はどうでもいいとして、前半のトレードオフは?
- 479 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 09:44:34.61 ID:yS+ngl8t.net]
- 100個のタスクを並列に処理することで説明して
- 480 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 09:45:05.98 ID:zmTeKxXB.net]
- >>468
Javaは非同期APIが全般的に使いにくい&充実してないから単純に開発がめんどくさい フレームワーク側のサポートも必須だがJavaは遅れてる
- 481 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 10:26:59.85 ID:0tIyFjNU.net]
- >>469
C#の例だけどこの記事がわかりやすい https://blogs.msdn.microsoft.com/tsmatsuz/2012/05/08/asp-net-mvc-async/
- 482 名前:デフォルトの名無しさん [2017/01/14(土) 11:11:08.12 ID:Q3G32+hm.net]
- 100個も同時実行したらCPUコア数一桁の普通のコンピューターだと効率落ちるだけだよな
IOでもネットワークだと相手に迷惑だし、ディスクならランダムアクセスになって遅くなる
- 483 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 12:33:47.60 ID:LDRAWf8F.net]
- >>470
それが説明かアホ
- 484 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 12:35:16.51 ID:LDRAWf8F.net]
- >>471
MS厨な了解、以下スレチということで
- 485 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 12:42:46.41 ID:DO73KmNH.net]
- そりゃ無理ですね
馬鹿だから一日も我慢できずに煽りに反応すると思いますよ
- 486 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 12:55:04.44 ID:QoXdCSFA.net]
- うっせハゲ頭ちんちん!
とりあえず煽られてないけど言ってみた
- 487 名前:デフォルトの名無しさん [2017/01/14(土) 15:05:00.83 ID:LKjMj2Iy.net]
- ちんちんの話ですか?
- 488 名前:デフォルトの名無しさん [2017/01/14(土) 18:52:08.71 ID:qxTRl4/L.net]
- enumの定義ってコンストラクタでは記述できない?
stateListをstaticにするのに何か抵抗があるから。 出来れば変数定義箇所は余りゴリゴリ書きたくない。 import java.util.List; public class A { /**static */List<String> stateList; // 他の変数も数多くdoSomething内部で処理として使用する enum MenuList { AAA { void doSomething() { stateList.add(
- 489 名前:デフォルトの名無しさん [2017/01/14(土) 18:53:58.14 ID:qxTRl4/L.net]
- enum MenuList {
AAA { void doSomething() { stateList.add("Aaaaaaaa"); }}, BBB { void doSomething() { stateList.add("Bbbbbbbb"); }}, CCC { void doSomething() { stateList.add("Cccccccc"); }}; abstract void doSomething(); } public A() { } void setState(MenuList state) { state.doSomething(); } }\"
- 490 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 20:40:01.89 ID:MyC8V23n.net]
- switchでいいだろそんなもん
手段と目的を履き違えるな
- 491 名前:デフォルトの名無しさん [2017/01/14(土) 21:01:56.60 ID:qxTRl4/L.net]
- リファクタリング勉強してたらsetState()でswitch使うよりいいんじゃないかと思ったから。
引数の数が多くなるとバグの温床になりやすいと書かれていた。
- 492 名前:デフォルトの名無しさん [2017/01/14(土) 21:03:41.25 ID:LKjMj2Iy.net]
- こう?
enum MenuList { AAA("Aaaaaaaa"), BBB("Bbbbbbbb"), CCC("Cccccccc"); public final String msg; private MenuList(String msg) { this.msg = msg; } } void setState(List<String> stateList, MenuList state) { stateList.add(state.msg); }
- 493 名前:デフォルトの名無しさん [2017/01/14(土) 21:46:21.86 ID:qxTRl4/L.net]
- >>482
すみません。stateList.add("Aaaaaaaa");などは他の変数など使用しますという意味で書きました。 よって、実際には以下のようなコードをstateパターンみたく書きたいです。 void setState(MenuList state) { // 現在のコ0ド switch (state) { case AAA: hoge1(); hoge2(); break; case BBB: hoge3(); break; .... という風に分岐で処理を記述しているのをenum内部で書きたいと思っています。 その際、enum内部で使う他のグローバル変数をstaticにしないと記述できないみたいなのです。 他のグローバル変数はstaticにせず、enum MenuListを定義する方法はないでしょうか? 書けるか分からないけど理想は、enum MenuList;と定義してコンストラクタ内部で MenuList = 定義したMenuList();みたいに書きたいです。 あまりstaticの使い方が分からないなどが理由です。
- 494 名前:デフォルトの名無しさん mailto:sage [2017/01/14(土) 22:18:15.64 ID:Z4YPx582.net]
- >>483
https://ideone.com/thGKsr よーわからんがこう?
- 495 名前:デフォルトの名無しさん [2017/01/14(土) 22:45:55.75 ID:6eo6VXz3.net]
- だいたい単にJavaはJavaはなんて言ってるやつがいるけど、どういう構成のシステムのことを言ってんのかわからんw
- 496 名前:デフォルトの名無しさん [2017/01/14(土) 22:48:37.75 ID:6eo6VXz3.net]
- Javaしか分からないプログラマって異様にマルチスレッドにこだわったりするのも変。
マルチプロセスの方がいい場合でもなぜかマルチスレッドにしたがる。
- 497 名前:デフォルトの名無しさん [2017/01/14(土) 22:52:18.81 ID:qxTRl4/L.net]
- >> 484
そう!そんなコードです。 これでsetState()内部でswitchを使用せずに保守性も上がると思います。 ありがとうございます!助かりました。
- 498 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 00:55:48.40 ID:cnFoYVJO.net]
- >>486
お前はJavaスレで何を言っているんだ?
- 499 名前:デフォルトの名無しさん [2017/01/15(日) 01:48:42.60 ID:OwCHVx6x.net]
- JavaスレだからといってJava以外も知ってる人が居ないわけじゃないよね
- 500 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 09:04:54.58 ID:rUeODzII.net]
- >>486
結論からいうと、488のようにJavaに閉じ籠りたい子が多いから。 スレッドだとJavaの枠組みから出なくていいからそれはそれで楽なんだよ
- 501 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 09:20:31.71 ID:vkigWSlF.net]
- ꧁ ꧂ 。
- 502 名前:デフォルトの名無しさん [2017/01/15(日) 20:27:17.97 ID:0Ag5G2kH.net]
- >>487
enum の中でやらないで EnumMap に処理を書いたクラスのインスタンス(例えば Runnable のインスタンス) 突っ込んでおいてそこから引っ張り出して実行すればいいような気がするが。 ま、どっちでもいいのかな?
- 503 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 20:33:46.95 ID:itmwtKVV.net]
- >>485
お前はなんでここにいる?
- 504 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 22:43:00.61 ID:3ZZvF1jZ.net]
- 煽るため
- 505 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 01:32:32.42 ID:0qyxTvqH.net]
- ꧁ ꧂ 。
- 506 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 10:30:39.54 ID:CwAqvFXp.net]
- ぱたぱたぱた
- 507 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 12:48:08.62 ID:6pMMhvrL.net]
- まあ涼しい
てか寒いわ!
- 508 名前:デフォルトの名無しさん [2017/01/16(月) 15:47:20.84 ID:7FNzXcKk.net]
- Javaでできるかどうか分からないことがあって、
たぶんできるはずだと思ってググるも、キーワードが分からない。 色々考えながら色々キーワードを試したが、出てこない。 そもそもできることなのかどうかも分からない。 ここで質問しようとも思ったが何か癪だから調べ続けたらやっと出てきた。 基礎からきっちり勉強していれば調べるまでもなく知ってるような内容だった。
- 509 名前:デフォルトの名無しさん [2017/01/16(月) 16:22:11.49 ID:7FNzXcKk.net]
- Java
sssp://o.8ch.net/nahv.png
- 510 名前:デフォルトの名無しさん [2017/01/16(月) 16:27:01.66 ID:OjZkdWCf.net]
- 質問いいですか?
- 511 名前:デフォルトの名無しさん [2017/01/16(月) 16:30:09.80 ID:OjZkdWCf.net]
- https://twitter.com/t4ny_/status/820892316990722048
このツイートの画像のエラーなのですが 間違っているところ教えていただけないでしょうか?
- 512 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 16:31:57.00 ID:B5rWKi6Q.net]
- 新言語Jabba
|

|