1 名前:デフォルトの名無しさん mailto:sageteoff [2017/09/29(金) 17:53:25.24 ID:XnizQSCA.net] Java初心者のためのスレッドです。 ※前スレ Java入門・初心者質問スレ Part.4 mevius.2ch.net/test/read.cgi/tech/1498828456/
367 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 01:16:09.26 ID:ImI1HNcW.net] 俺だったらPositiveNumberみたいなジェネリッククラスを作るか、@positiveみたいなアノテーション作る
368 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 01:51:11.96 ID:eddodMAs.net] >>354 ありがとう >空のオブジェクト作って後でsetter使 >って入れるのも微妙だし 私もそう思ったのですがコンストラクタで例外を投げるのは良くないというような
369 名前:意見をどこかで目にしたので聞いてみました >>358 ふむふむ 個人的にはそもそも作らせないって方が好みな感じがします 調べてみます情報ありがとう [] [ここ壊れてます]
370 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 02:19:42.12 ID:sRaOGV/D.net] コンストラクタとセッタに同じことを示す文が複製されるのもちょっと良くないな
371 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 03:04:30.08 ID:nQXUW6Dj.net] >>352 クソ?しかし API にも new した時に例外出すやつ沢山あるわけだが、そういうのは全部クソ?
372 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 07:16:59.94 ID:fX/oTiYO.net] >>361 コンストラクタで最初に値をセットして後から変更できないようにsetterは持たせないというつもりでした (フィールドをfinalにしているのはそのためです)
373 名前:デフォルトの名無しさん [2017/10/30(月) 07:22:42.37 ID:b9ZBDRTb.net] >>356 オブジェクト作る前にValidatorクラスでチェックするだけ
374 名前:デフォルトの名無しさん [2017/10/30(月) 07:24:54.59 ID:b9ZBDRTb.net] >>362 全部クソ。 オブジェクトの責務をわかっていない。
375 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:14:47.50 ID:JH+/yPWP.net] インスタンス変数(やクラス変数)は そのオブジェクトに付属するデータだから コンストラクタなどでデータチェックの責務を オブジェクト自身に持たせるのはおかしくない ただしチェックが複雑化したときに 責務を委譲するのもアリ
376 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:43:10.77 ID:5RpC60IR.net] >>366 そのただしが問題 検証はシステムの関心ごとだから 集約するべきでオブジェクト毎に持つものじゃない コンストラクタはオブジェクトを初期化するという 特別な処理であってここでデータチェックが必要になるのは 責務の分離ができてないシグナルみたいなもの staticメソッドでtryCreateという名前なら100歩譲ってオーケーだ
377 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:54:32.49 ID:5RpC60IR.net] 負の値を持たせたくないのは業務の要件なんですよ!!
378 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:55:34.55 ID:JH+/yPWP.net] >>367 >検証はシステムの関心ごとだから >集約するべきでオブジェクト毎に持つものじゃない 責務を分離するのは重要だがそのオブジェクトの 規模が大きくなって複雑化するにつれて分けていくもの たとえば生成の責務をファクトリに分離してもいいが 何でもかんでも全部ファクトリにする必要はない だからコンストラクタでチェックしてもいいし バリデータみたいのに分離してもいい
379 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:56:23.29 ID:5RpC60IR.net] 思わず激昂してしまいましたがとにかく小生が言いたいのはコンストラクタで例外投げるのおかしいですよということなんです
380 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:00:29.54 ID:5RpC60IR.net] >>369 どっちでもいいなんていうそんな優柔不断で玉虫色な考えに真実があるわけない、あなたは思考を放棄しているに等しい、ここにはこういう値しか保持したくないんです、立派な業務要件でしょうが!! じゃあその要件をまとめましょうよ、システムの関心ごととして切り出しましょうよ
381 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:01:41.86 ID:4hMzyEUs.net] >>368 業務要件で例外処理を考えてるってなかなかおもしろいね
382 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:04:21.57 ID:5RpC60IR.net] >>372 どういうこと?
383 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:06:06.45 ID:5RpC60IR.net] もっと具体的にちゃんと説明して 小生良い事言ってるからそれちゃんと説明して
384 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:12:06.74 ID:JH+/yPWP.net] >>371 いやそれは極端でしょ OOPの要素はどれも使い分けじゃないの? 複雑化したら切り出すが抽象化にはキリがないので IF文を全部ポリモーフィズムにするわけでもないし 最初から全部デザパタにするわけでもない
385 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:17:39.73 ID:5RpC60IR.net] >>375 ifの話じゃないだろ なんでもかんでも一緒にするな 極端なのはそなたの方 こなたが言いたいのはとにかくコンストラクタでチェックするのおかしくないですかってこと
386 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:21:09.70 ID:JH+/yPWP.net] >>376 コンストラクタでチェックするのはおかしくない JavaのAPIでやってるくらいなんだから むしろやるなって方が押しつけ
387 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:22:44.13 ID:5RpC60IR.net] コンストラクタでチェックして例外投げるのは ようわからんけどオブジェクト作ってみるわー でけへんかったわーゲヘヘーと言ってるようなもの 文明人のやることじゃない アサートを使うべき アサートは本番では動かさないからね 検証は専用のオブジェクトでやりましょう
388 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:25:45.46 ID:5RpC60IR.net] >>377 アホかお前は、お前はアホか JavaのAPIははっきり申し上げてクソでござる クソがやってるから大丈夫なんだとはならんだろうが どこがクソかはお前に任せるよ
389 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:46:48.33 ID:JH+/yPWP.net] アサートでもいいが例外投げてもいい つーかコンストラクタで例外投げるのが大問題なら Javaの言語仕様でできないようにするだろ…… 普通に考えて2ちゃんの一個人より Java(API)のやり方の方がいいわ
390 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:01:28.68 ID:5RpC60IR.net] >>380 ファイナライザでは例外投げないようにしましょう というのがベストプラクティスだけど言語仕様ではできるでしょうに 言語仕様ってその程度のものですよ コンストラクタでも例外投げるのやめましょうよ 2chネラーだから信用しないっていうのは権威主義的というか誰が言ってるかより中身で判断していただきたい、小生絶対良い事言ってるから!!
391 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:21:49.81 ID:0VAyPn/2.net] どっちがキチガイかは一目瞭然だな ありがとう
392 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:37:40.45 ID:5RpC60IR.net] それでええんか? 議論って考えを広げるためにあるんやで キチガイとレッテルを張っておしまいでほんとにええんか? 小生が可哀想だと思わない?罪悪感を感じない?お前のお母さんもお前には優しい人に育ってほしいと思ってたのじゃないか?
393 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:38:44.40 ID:5RpC60IR.net] ありがとうの後にはございますを付けろ、それが礼儀だ
394 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:39:13.84 ID:5RpC60IR.net] 礼儀正しく優しい人になって欲しい
395 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:46:46.93 ID:5RpC60IR.net] コンストラクタでデータチェックしない人になって欲しい
396 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 12:29:49.28 ID:ich1HAGc.net] >>378 何が悪いか分からん。 オブジェクトの生成失敗も業務メソッドの実行失敗も、中断すべき状況になったら例外飛ばして何が悪いのか。 コンストラクタで例外飛ばすなって話はC++ならメモリの回収がややこしくなるんで一利あるけど、JavaやC#なら問題ない。
397 名前:デフォルトの名無しさん [2017/10/30(月) 12:30:44.96 ID:FeUZMDfY.net] >>365 オブジェクトの責務とは?
398 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 12:38:10.73 ID:OufZdVP7.net] 遡及IDは嘘つかないな ソノトキ何をしたかよりもソノアト何をしたかが一目瞭然である 便利でよろしい
399 名前:デフォルトの名無しさん [2017/10/30(月) 12:38:19.13 ID:FeUZMDfY.net] >>368 なんというか、それそのものは Java 自体の問題のようにも思えるね。 つまり、unsigned が型として用意されてないからとか、PASCALみたいに数値の範囲を指定した新たな型を作れないからとかね。 まあそういう数値型のクラスを自作してしまえば良いだけかも知れないが。
400 名前:デフォルトの名無しさん [2017/10/30(月) 12:47:31.30 ID:FeUZMDfY.net] >>386 そんなにそれを求めるなら最初からそれができない新言語作れば? 大丈夫。君にも作れるよ。実装までできなくても言語仕様考えてネットで晒してフォーラム作って議論してまとめ直してから作ってくれる人募集すればその内なんとかなるだろう。全てを君が作る必要はない。
401 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 12:53:44.32 ID:6Zg8+NGr.net] Google Apps Scriptで www.pre-practice.net/2017/10/line-bot_22.html?spref=tw ここを参考にLINEBOTを作っていて、 文章中の特定の文字列に反応して返答するようにしたのですが、 else if (strpos(input_text, "寒い") !== false ) { reply_text = "もう冬だね"; } これを挿入しても反応してくれません。 何がいけないのでしょうか教えてください。 あと質問場所が適切でなければどこで聞けばいいか教えてください お願いします。
402 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 13:41:37.04 ID:3rz3HBcW.net] たまに生成されたクラスファイルが分割されることがあるんですがどういう条件で起きるんですかね? ファイル容量の問題かと思いきや大きいものでも分割されてなかったり…
403 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 13:52:19.55 ID:4hMzyEUs.net] >>393 1ファイルに複数のクラスを書いてるんじゃない?
404 名前:391 mailto:sage [2017/10/30(月) 14:17:58.64 ID:6Zg8+NGr.net] >>392 これがPHPというのがわかりました スレ汚し失礼致しました。
405 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 15:15:46.44 ID:y0GY6LFV.net] >>393 インナークラスの悪寒… $付いてない?
406 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 15:50:40.06 ID:3rz3HBcW.net] >>395 ,396 色々調べてみたらどうもシリアライズ可能なクラス?というのが原因みたいでした… お手数おかけしました
407 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 18:18:23.77 ID:sRaOGV/D.net] >>363 final見逃してただけだった それなら尚更コンストラクタだね
408 名前:デフォルトの名無しさん [2017/10/31(火) 08:25:04.95 ID:OmcraJl8.net] >>360 範囲外の入力値エラーだろ private、つまりクラス内では、戻り値でエラーを示すが、 public、つまりクラス外では、例外でエラーを示す なぜなら、クラス内をコーディングしているのは、普通は同じ会社だから、 その会社内で規定したエラー値を使っても、見落としが少ない でも、クラス外の場合は、クラスをコーディングした会社と、異なる会社が使うから、 そのクラス内で規定したエラー値を使っては、いけない。 なぜなら、他社の人は、クラスのドキュメントを読まずに、クラスを使うから つまり、クラス外部の人に対しては、絶対にエラーが起こるように、例外を使う クラス内をコーディングする人と、そのクラスを使う人は、 異なる会社を想定している。 他社の場合は、クラスのドキュメントを読まないことを想定すべき 「スッキリJava」にも書いてある。 クラスを使う側と、フレームワークなど、他社が使うクラスを作る側の、 コーディングの違い。 他社を想定している場合は、全く違う この辺は、品質管理をやってないと知らないはず
409 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 08:35:40.63 ID:BBLfUUwS.net] >>399 どうしてもスッキリの宣伝をしなきゃ気が済まないようだな その一節がなけりゃいいのに
410 名前:398 mailto:sage [2017/10/31(火) 09:49:23.34 ID:OmcraJl8.net] 「スッキリJava」では、クラスの責務を、明確に分けている 前半は、クラスを使う側の知識で、 上級編はフレームワークなど、他社が使うクラスを作る側の知識 フレームワークを作る側では、検査例外を使って、コンパイルエラーにしないと、 ドキュメントを読まずに実行した客が、実行時エラーを起こして、 電話をかけてくるから、商売にならない 本を読んで、実行時エラーを起こした客が、出版社に電話をかけてくるだろ。 それと同じで、商売にならない だから例外にして、その例外をキャッチしない人は、実行できないようにする サポート契約をしない、無料相談の客をはじかないといけない。 無料で見積もりさせる客も
411 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 12:09:41.25 ID:QuyL7alo.net] 経営の話か
412 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 21:22:09.98 ID:BSBih/VQ.net] javaでWebアプリ作ってるのですがグラフ表示をしたいです jfreechartとかchart.jsとか出てくるんですがおすすめとかってありますか?
413 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 21:22:56.96 ID:BSBih/VQ.net] 質問スレと間違えましたすみません。
414 名前:デフォルトの名無しさん [2017/11/02(木) 02:18:26.07 ID:BShD5IWlq] JavaでWEBアプリ作りたいんだが、やっぱJSP+サーブレットってやつをやるべき? DBの処理(クエリとか)はサーブレットで、JSPは結果表示のみ、みたいに分ける方がいいの?
415 名前:デフォルトの名無しさん [2017/11/02(木) 15:08:48.76 ID:BShD5IWlq] WEBプログラミング板ってのがあるんすね。すま
416 名前:350です mailto:sage [2017/11/03(金) 17:28:51.99 ID:AmIWbkAj.net] >>381 しばらく2ちゃんを見れない状況だったので亀レスとなってしまいましたが、コンストラクタで例外投げるのが良くない理由をできれば聞きたいです
417 名前:デフォルトの名無しさん [2017/11/03(金) 17:36:15.65 ID:lQ0XoM3e.net] >>407 責務の分離ができてない証拠だから
418 名前:デフォルトの名無しさん [2017/11/03(金) 17:39:40.36 ID:lQ0XoM3e.net] コンストラクタっていうのはオブジェクトを初期化する特別な処理を書くところ 渡された値をそのまま何の加工もせずにフィールドにお納めするのが義務なんです
419 名前:デフォルトの名無しさん [2017/11/03(金) 17:42:31.79 ID:lQ0XoM3e.net] どうしても例外を投げたいならtryCreateというスタティックメソッドを作って 例外投げますよ作れないかもしれないですよということをメソッド名で 陽に示すべきだ、この処理は検証も含んでいますよと示すべきだ なぜならば検証も含むからだ、オブジェクトを作るメソッドなのにだ
420 名前:デフォルトの名無しさん [2017/11/03(金) 18:39:37.30 ID:lQ0XoM3e.net] FileStreamもコンストラクタで例外を投げるが あの設計も大間違いだから コンストラクタでリソース確保しようとするのが完全に間違ってる closeの処理でリソースを解放するならばリソースを確保するのはopenだ openの責務をFileStreamは持つべきでそれはオブジェクトを初期化する コンストラクタとは役割が根本的に100憶パーセント異なるわけ
421 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 19:04:39.65 ID:9CXEo34m.net] >>409 何もしなかったら意味ないだろ…… 直通のゲッターセッターと同じただのお飾り
422 名前:デフォルトの名無しさん [2017/11/03(金) 19:18:22.44 ID:lQ0XoM3e.net] >>412 フィールドを初期化するという大事な処理がある セッターは代入だから、初期化じゃないから
423 名前:デフォルトの名無しさん [2017/11/03(金) 19:40:27.12 ID:lQ0XoM3e.net] UI -> アプリ(バリデータ) -> ドメイン -> DAO レイヤーはこのように分けてドメインから先にバリデーションのコードを持ち込んではいけない オブジェクトをクリーンに保つためのベストプラクティス
424 名前:デフォルトの名無しさん [2017/11/03(金) 19:47:48.30 ID:lQ0XoM3e.net] バグがないように引数をチェックするという目的でやるなら アサートを使うべきだ ただしアサートを使うのは開発時のみで本番コードには含めない 本番コードで引数チェックが必要になるようならそれは 業務要件として抽出するべきだ
425 名前:350です mailto:sage [2017/11/03(金) 20:10:50.22 ID:AmIWbkAj.net] なるほど 405~410まではなんとなくわかりました 411, 412は私の経験or勉強不足でいまいち理解できませんでした でも、解説してくれてありがとう
426 名前:デフォルトの名無しさん [2017/11/03(金) 20:17:00.78 ID:lQ0XoM3e.net] >>416 ありがとうの後にはございますだ それが礼儀だ
427 名前:デフォルトの名無しさん [2017/11/03(金) 20:19:43.27 ID:EWAV0hJA.net] なるほど。わかった。スレが過疎って来たらコンストラクタで例外の話を出せば書き込みで溢れてスレが活性化するのだな。 時折反論を書きありがとうの後にございますを付けなければなお良いと。
428 名前:デフォルトの名無しさん [2017/11/03(金) 20:21:29.16 ID:lQ0XoM3e.net] 僕が活性化しちゃうおおお
429 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 21:17:51.19 ID:xnvXDnsB.net] またキチガイか
430 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 21:35:59.49 ID:Ro85MhDs.net] コンストラクタに不正なもの渡された場合に例外を出すことが なぜいけないのかについては1ミリも説明されてなくて草
431 名前:デフォルトの名無しさん [2017/11/03(金) 21:41:52.50 ID:lQ0XoM3e.net] >>421 責務の分離ができてない証拠だから 100ミリくらい説明してますけど 10メートルですよ
432 名前:デフォルトの名無しさん [2017/11/03(金) 21:42:46.79 ID:lQ0XoM3e.net] 違うわ1,000ミリの間違いね
433 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 21:52:44.52 ID:9CXEo34m.net] むしろ初期化の異常で例外を投げるのは コンストラクタの責務だろ なぜならコンストラクタの引数で渡されたデータから インスタンス変数(やクラス変数)を初期化するわけだから 情報エキスパートの原則からして データの処理はデータを持ってるオブジェクトが行うのが原則 ただ処理を全部抱え込むと肥大化するから 他に委譲することは構わない newの代わりにファクトリを使ったりするのと同じ しかしそれは「newを使うな」ではない 「外部に委譲してもいい」のであって 「コンストラクタで例外を投げてはいけない」ではない
434 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 22:00:57.69 ID:Ro85MhDs.net] >>422 責務を理解できてない典型だね 君がそういう規約で開発するのは勝手だけど それをベストプラクティスだからとか言って 他人に押し付けるのはよくないよ
435 名前:デフォルトの名無しさん [2017/11/03(金) 22:01:56.36 ID:lQ0XoM3e.net] >>424 ベストプラクティスってそういうものだよ こういう実装もできるけどこっちの方が好ましいよねっていうものだから そういう意味で言ってるわけよ たとえばModel View ControllerのアーキテクチャがあるけどViewに Modelのコードも全部書きまくっちゃってもいいわけよ でも分離するのが好ましいだろ、そういう意味で言ってるわけよ その真意をくみ取って欲しいわけよ コンストラクタでデータチェックヤラナイのが好ましいわけよ え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ
436 名前:デフォルトの名無しさん [2017/11/03(金) 22:02:38.01 ID:lQ0XoM3e.net] >>425 理解できてないことを1ミリも説明してないじゃん 話にならないよ
437 名前:デフォルトの名無しさん [2017/11/03(金) 22:03:47.06 ID:lQ0XoM3e.net] 自分の考える責務の分離はこうっす 自分こう思うっすとはきはきと説明できないかね 若さが感じられない
438 名前:デフォルトの名無しさん [2017/11/03(金) 22:42:06.17 ID:lQ0XoM3e.net] 説明を求められたら言葉を失ってしまうみなさん
439 名前:デフォルトの名無しさん [2017/11/03(金) 22:47:53.53 ID:L9/pWClM.net] どんなに外部でチェックしてもインスタンス生成に失敗することはあるわけで、 そういうときに失敗を通知する手段は例外しかないわけで、 コンストラクタで例外を投げてはいけないとする方が問題だ。
440 名前:デフォルトの名無しさん [2017/11/03(金) 22:49:18.72 ID:lQ0XoM3e.net] モデルに存在するべきコードがコントローラに存在するものをファット・コントローラと言うけれども バリデータに存在するべきコードがコンストラクタに存在するものをファット・コンストラクタと呼んで クラスの生活習慣病に位置付けるのはどう? 徐々にシステムを蝕んでいきます コーディングの習慣を見直しましょう
441 名前:デフォルトの名無しさん [2017/11/03(金) 22:52:55.66 ID:lQ0XoM3e.net] >>430 どんなに外部でチェックしてもインスタンス生成に失敗するときは例外投げて良い そんなのケースバイケースだろ、柔軟に対応しろよ
442 名前:デフォルトの名無しさん [2017/11/03(金) 22:53:28.36 ID:lQ0XoM3e.net] ベストプラクティスっていうのは柔軟っていう意味もありまぁす!
443 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 00:31:14.87 ID:FdHKGPou.net] 入力値チェックは、MVC のビューでやるけど、 ドラクエ10 の記事によると、 通信データの500バイトに、1バイトは間違っているから、 通信データは、絶対に信用しちゃいけない。 必ずサーバー側でも、チェックすべき 途中のルーターが、データが間違っていても、データを破棄せず、 間違ったデータで、パリティを再計算して送ってくるから、 正常なデータのように見える
444 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 01:00:49.14 ID:O0AU1SEY.net] サーバーが受け取ったデータが外部入力なんだから それをチェックするのは当たり前 ユーザー入力と同じ 境界の外から入ってきたデータを どのレイヤーでチェックしてエラーハンドリングするかということと モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に 例外を投げるかどうかは関係はしてるが種類の違う問題 という話をしてる
445 名前:デフォルトの名無しさん [2017/11/04(土) 02:59:59.82 ID:Wr8YwoWe.net] できれば不正値はコンパイル時にエラーになって欲しいものではあるな。 不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。 I/O絡みのエラーは実行時じゃないとわからないから別としてね。 (指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)
446 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:21:09.10 ID:4V8ohWTX.net] javaってできることが多すぎて勉強しんどい
447 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:35:59.26 ID:32ZzWJzG.net] >>434 へー、チェックサムも独自に仕込むのかな
448 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:37:10.99 ID:32ZzWJzG.net] >>435 事前条件ってまさにアサートの領分じゃん
449 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:49:44.67 ID:die+TITB.net] >>437 C++より楽
450 名前:デフォルトの名無しさん [2017/11/04(土) 08:55:38.30 ID:KxJ3WBAq.net] モデルの引数を間違えてるっていうのはバグなのでー 開発時に分かればよいことなのでー アサート使うべきだよねー コンストラクタをぶくぶくと太らせる理由にはならぬよ メタボリッククラスから脱却してスマートクラスにしよう
451 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 13:21:03.20 ID:O0AU1SEY.net] >>439 Javaの場合はアサートって言うとビルトインのassertをさすからね 事前条件なら自動的にアサート使えとはならないよ それともコンストラクタでは ExceptionではなくErrorを投げるべきって言いたいのかな?
452 名前:デフォルトの名無しさん [2017/11/04(土) 13:36:25.85 ID:KxJ3WBAq.net] >>442 何言ってんだおめー assert使うべきで 例外を投げるべきじゃない
453 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:21:29.77 ID:1M0jr43T.net] javaなら、コンストラクタで例外スローでいいでしょ。
454 名前:デフォルトの名無しさん [2017/11/04(土) 17:10:27.14 ID:KxJ3WBAq.net] >>444 でも設計的に大間違いですよそれ コンストラクタの使い方完全に間違ってますよ
455 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:42:41.33 ID:cKuNjw8p.net] >>445 あほ
456 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 13:12:43.81 ID:z+9Dn5/C.net] 以下のコードをideoneで実行できません。(ブラウザとしてエラーが発生) どなたか理由を教えてもらえないでしょうか? import java.lang.reflect.*; class RefSamp { public int times = 0; public RefSamp(int t) { this.times = t; } public void hello(String msg) { this.hello(msg, this.times); } public void hello(String msg, int t) { System.out.println("Hello, " + msg + " x " + t); } } public class Main { public static void main(String[] args) throws Exception { Class clazz = RefSamp.class; Constructor<?> cons = clazz.getConstructor(int.class); RefSamp rs = (RefSamp) cons.newInstance(256); Field f = clazz.getField("times"); f.set(rs, 2); System.out.println(f.get(rs)); Method m = clazz.getMethod("hello", String.class, int.class); m.invoke(rs, "refrection!", 128); boolean pubc = Modifier.isPublic(clazz.getModifiers()); boolean finm = Modifier.isFinal(m.getModifiers()); } }
457 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 14:11:12.97 ID:0YSHLKzk.net] 初心者じゃないんだろ35歳 自分で調べろ
458 名前:遊園地 mailto:sage [2017/11/05(日) 14:27:53.28 ID:FPjW0d5Z.net] 読むの面倒だから、エラー文も上げて。
459 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 14:34:37.57 ID:k/LyUYN/.net] ideoneは知らんけどリフレクションはjavaセキュリティマネージャ動いてたら実行できないからそれじゃねーの
460 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 17:40:17.18 ID:2ZrTuY5p.net] 35歳に親切にすると君の職場に現れて付きまとわれるぞw
461 名前:444 mailto:sage [2017/11/05(日) 18:22:30.39 ID:z+9Dn5/C.net] >>448 決めつけるなよ。それに初心者認定したのはあんたらだろ? >>450 レスありがとうございます。 ideoneではなにかしらそういう安全装置が働いているということですね。
462 名前:デフォルトの名無しさん [2017/11/05(日) 18:54:33.30 ID:qSskq3Yv.net] 釣りでエラーが発生と言ってるだけだろ https://ideone.com/yLwAJh
463 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 18:59:33.63 ID:0YSHLKzk.net] まず質問の仕方がおかしいんだよなぁ ここは学校じゃないし、相手は先生じゃない 質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない もっと相手に伝わるように質問しろ
464 名前:444 mailto:sage [2017/11/05(日) 19:41:51.63 ID:z+9Dn5/C.net] >>451 たひんで >>453 OSなど実行環境の違いによるんですかね…。 >>454 それはその通りだと思うけど、あんたは親切な人だったの?
465 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 19:45:10.05 ID:/i0gfJYB.net] 何この変なの? どっかのコテハンか?
466 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 19:46:54.84 ID:PoYQIzOm.net] >>453 のリンク見てもエラーが出てるんだよな? 正直エスパーしようにも限界
467 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 20:07:50.04 ID:2ZrTuY5p.net] もうそいつに触れるのはよせ