1 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 20:27:10.93 ] プログラミング言語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 ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド ★★Java質問・相談スレッド161★★ toro.2ch.net/test/read.cgi/tech/1364006637/
2 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 21:20:32.65 ] Javaが理解できない万年雇われ3流PGの老害は見苦しいからもう沸いてくんなよ
3 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 21:24:53.90 ] 細かいことだが、老害というのは 老いたことが害なのではなく、 老いた者が量産され社会のバランスを 欠いている様が害という考えだ
4 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 21:25:42.23 ] クソスレ発見
5 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 21:32:42.98 ] Javaは三日で習得した だが次の三日で見限った
6 名前:前スレの991 [2013/06/09(日) 21:32:53.13 ] 前スレの >>995 さん >>996 さん C的というよりC++的なコードありがとうございます。 ちょっと最近C/C++やって無かったので思い出しながらコード見たんですが で、>>996 さんのコード見て Zow *dive(Zow * zow2) { zow2=new Zow(); } Zow * const zow=new Zow(); dive(zow); をちょっと改変して Zow *dive(Zow ** zow2) { *zow2=new Zow(); } Zow * const zow=new Zow(); dive(&zow); っていう動作(C++ならコンパイルエラー)をJAVAで実装するのは 無理って事ですか?
7 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 21:33:16.14 ] はい無理です
8 名前:KUSO KOTE mailto:sage [2013/06/09(日) 21:38:36.37 ] >>6 Javaには参照渡しが無いので直接的には無理。 代わりに要素数1の配列を使うのがよくあるうんこコード。 Zow[] zow = new Zow[]{new Zow()};
9 名前:KUSO KOTE mailto:sage [2013/06/09(日) 21:42:08.64 ] 間違えた。わすれて。 >C++ならコンパイルエラー)をJAVAで実装
10 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 22:04:36.22 ] >>6 こんなかんじ? ideone.com/9g1M3D
11 名前:前スレの991 mailto:sage [2013/06/09(日) 23:10:00.47 ] >>10 わざわざありがとうございます。 一応 setZow(Zow z)が抜けてたので補完して・・・ まぁ、質問しまくって、俺みたいな馬鹿で中途半端な知識量でも private finalの部分は一応わかっていました。 (たぶん、私にわかりやすくと思い書いて頂いたと存じます) 自分の疑問だったのは、static finalのインスタンスをメソッドが なぜ変更されないのかが疑問だったので。 前スレの>>987 さんの説明の参照の値渡し。 っていう説明とC++で書いた例のソースを見してもらって理解しました。
12 名前:デフォルトの名無しさん mailto:sage [2013/06/10(月) 10:49:48.70 ] Oracle、Java向けタイムゾーン更新ツールの無償提供を打ち切る ttp://developers.slashdot.jp/story/13/06/09/0635243/
13 名前:デフォルトの名無しさん mailto:sage [2013/06/10(月) 11:09:46.69 ] グローバルワイドな一流人材はUTCしか使わないから無問題。 どうしてこう、政治家は歴制度をいじりたがるかね
14 名前:デフォルトの名無しさん mailto:sage [2013/06/10(月) 13:19:08.13 ] UTCでしか業務しないエンドユーザーは 世界の一握りしかいないのだが、 その限られた顧客しか相手にしない>>13 は 無問題なのだろう
15 名前:デフォルトの名無しさん mailto:sage [2013/06/10(月) 16:07:52.19 ] >>13 =キチガイ
16 名前:デフォルトの名無しさん mailto:sage [2013/06/10(月) 20:38:21.34 ] >>1-15 =クソスレ住人
17 名前:デフォルトの名無しさん mailto:sage [2013/06/10(月) 21:03:38.04 ] ム板のどのレス見ても井の中の蛙大海を知らず的なレスばかり この世のどのプログラマも自分が携わった分野しか知らないんだから 業界全体を知った風なこと言う奴ってどうかしてるわ >>13 とか>>14 のことね
18 名前:14 mailto:sage [2013/06/10(月) 21:06:58.37 ] >>17 お前だけには言われたくないわ
19 名前:デフォルトの名無しさん mailto:sage [2013/06/10(月) 21:22:26.57 ] おまえらみんな自分のしたレスをもっと冷静になって客観的に見るんだ!自分がいかに恥ずかしいレスをしているか!
20 名前:デフォルトの名無しさん mailto:sage [2013/06/10(月) 21:24:34.79 ] 他人事のようにというふうにあなたはおっしゃったけれども、私は自分自身を客観的に見ることはできるんです。あなたとは違うんです。そういうことも併せ考えていただきたい
21 名前:桃白白 ◆9Jro6YFwm650 [2013/06/11(火) 01:49:56.40 ] >>20 福田さんだ、この人ぜったい福田さんだ。
22 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 05:56:22.68 ] >>17 自己紹介乙
23 名前:デフォルトの名無しさん [2013/06/11(火) 10:17:04.90 ] 教えてください。 java.lang.Threadクラスのsleepで使っている、システムタイマーと java.util.Timerで使っているシステムタイマーは同じものですか?
24 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 11:17:32.73 ] 違うんじゃね?java.lang.Thread#sleep()は、たぶんタイムゾーンもうるう秒もシカトする
25 名前:23 [2013/06/11(火) 11:23:07.16 ] >>24 java.util.Timerでシステム時刻を変更すると処理がとまる可能性がある という記事を見つけて、対策をしないといけないのですが、そうなると Thread.sleepはどうなんだろうとおもって。
26 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 12:15:19.31 ] 猪瀬のせいで、多摩川超えると処理が止まるとか、それはやだなぁ
27 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 18:49:21.32 ] >猪瀬のせいで は?
28 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 20:11:09.31 ] >>25 API 仕様からはそのような挙動は 許されないように想えるんだけど、 バグなの?
29 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 21:39:40.47 ] イマドキのOSをネットに繋いで普通に運用していたら、 システム時刻なんてしょっちゅう変更されているはずなのだけれど?
30 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 21:49:33.63 ] JavaSEがCookieやSSLを実装している以上、時計あわせはジャバラーの義務っ カレンダで試用制限とかしてるアプリ職場に押しつけられると、 カレンダ偽装する奴が増えてトラブルになるんでやめろー
31 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 22:27:30.64 ] >>29 どうせ時刻逆転のケースだろ 近代的オペレーティングシステムで 普通それはない
32 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 23:40:51.41 ] 関数の計算結果を自動的にグラフ作成し 画像として ホームページなどに表示する手順などを解説している サイトや著書などを知ってる方おりましたら おすすめをお願いします。
33 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 00:21:15.97 ] 三角関数や対数程度でいいのなら「Processing」でアマゾンぐぐれー
34 名前:デフォルトの名無しさん [2013/06/12(水) 00:28:24.66 ] サーバーでgnuplotでも動かせばいいじゃない Javaで調べるとまずアプレットが出てくると思うけどそれだけはやめとけ
35 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 00:42:51.42 ] ・HP掲載のJavaとJavaScriptを勘違いして質問している ・HP掲載のJavaAppletでの表示の話 ・サーブレットの動的HPの作成の画像作成の話
36 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 00:44:22.00 ] JAVAのGUIアプリでグラフ画像とHTML自動生成の話という可能性も微レ存
37 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 01:18:33.60 ] グラフならd3かhighchartだな今なら。
38 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 01:38:51.62 ] 質問するところを間違ってしまったみたいで申し訳ないです >>33 >>34 >>35 >>36 >>37 ありがとうございます 早速Amazonにあった本や論文などを学校の図書購入希望 やキャットで検索や閲覧希望ぶち込みました。
39 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 04:18:35.20 ] Java Platform Standard Edition 7 ドキュメント docs.oracle.com/javase/jp/7/ このドキュメントのダウンロードのzipとか無いの?昔は日本語ドキュメントをダウンロードできた気がしたんだけど
40 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 04:23:23.32 ] そもそも何で日本語だけこんなに贔屓にするんだろう?日本顧客が結構金蔓なのか?
41 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 04:24:07.53 ] まさか日本政府が要求してたり?
42 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 05:36:13.30 ] IT後進国の馬鹿な日本ぐいしかもうJava使ってる国が無いんだろう
43 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 06:22:38.99 ] 日本GUI
44 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 06:38:49.80 ] なぜオーバーライドをデフォルトにしたのですか? 継承先にこのメソッドを破壊された場合はどうしようなどと考えるとテスト項目を作るのが億劫です
45 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 07:04:45.00 ] そういうOOPのノウハウの多くはそもそもJava開発で蓄積されたものだからだろ 例えば後付けで追加された@Overrideなんか明らかに設計失敗の証拠で、 本来なら後発のC#と同じくoverride修飾子を付けないとコンパイルエラーとするべきだった 昔は継承は既存コード再利用のための強力な仕組みだとか言ってたけど Javaによって色々問題点が明らかになって今は大分考え方が変わったからな
46 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 07:17:29.26 ] >OOPのノウハウの多くはそもそもJava開発で蓄積されたものだからだ JAVA信者の基地外っぷりもここまでいくと 人としてやばい
47 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 07:24:36.07 ] 「継承先にこのメソッドを破壊された場合はどうしよう」などと悩むのはどんな ケースだろう? オーバーライドされたり派生クラスで実装が与えられたときの振る舞いを注意深く 扱うのはprotectedかabstractなメソッドぐらいであって、その他publicなメソッド についてはあまり気にしないけれどもなぁ。 いくらオーバーライドを禁止したところでデコレーター使えばいくらでもpublic メソッドの実装なんて差し替えられるわけだし。
48 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 07:26:43.77 ] オーバライドって元々は、既存コードは変更しないというルールの下で 既存コードが変更できないなら上書きすればいいじゃないという考え方が基本だから 後から勝手に何でもかんでもオーバライドできたほうがいいわけ 今ではそういうやり方は糞と考えられてるが
49 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 07:32:15.56 ] >>47 publicメソッドを同じクラス内から呼んでる場合があるだろ?
50 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 08:10:24.00 ] とりあえずコンストラクタからpublicメソッド呼ぶのやめい
51 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 11:55:50.72 ] なんで?
52 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 12:17:51.42 ] 親クラスプログラマにしてみれば、 コンストラクタぐらい目の行き届くとこでやって欲しいし、 子クラスプログラマにしてみれば、 自分のコンストラクタ始まる前にインスタンスメソッド呼ばれても困る PMD使えばまとめて検出できるよ
53 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 12:50:33.87 ] 消えろじゃヴぁ
54 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 13:16:22.61 ] 仕事のない糞言語から目の敵にされる我らがJAVA様
55 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 13:52:48.75 ] ピーターの法則: 組織において有能な人間は昇進しより高い能力を求められ、無能になったところで昇進が止まる ゆえに組織のいたるところ無能な人間で満たされる これを人間からソフトウエアに置き換える たとえばWindows, たとえば C,Java これらは有用と評価され普及度を高め、クソと評価されるあたりで普及が止まった これらに対し、社会経験のない中二病、もとい、お子さまは 世の中はクソで満ちあふれている、俺が何とかしなければと情熱を燃やすのである なお、それが非常にうまく行った場合、結局は上の行程を繰り返すのみ
56 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 14:52:03.59 ] Windowsって普及止まったの?CEのこと?
57 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 20:04:01.93 ] >>52 C++最高というわけですね
58 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 20:11:05.29 ] 真のプロフェッショナルはクラス利用者の勝手な継承を許さないようにコーディングする どうしても継承したい場合はユーザーが自分でラッパーを書いてそれを継承しなければならないように作る
59 名前:デフォルトの名無しさん mailto:sage [2013/06/12(水) 23:57:31.36 ] 初心者向けの本で、 > 継承の仕組みを利用した書き方を、『差分プログラミング』とも呼びます なんて読んだことがあるけど…。 差分で済むから継承、なんてやってたら、is-a関係がとんでもないことになるよね…。 まずは全てのクラスをfinal & イミュータブルにするのが基本。 状態変化を持つクラスだけ、1つずつアクセス範囲を検討するのが良いんだろうな。
60 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 00:10:46.99 ] なぜC系言語しかやってこなかった人は意味も無くpublicにするのだろうか 外から見える分得だと思ってるんだろうか 例え将来的にpublicに使うとしても、もしその瞬間には必要ないのなら時がくるまで閉じておけ。社会の窓を。
61 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 00:18:52.52 ] >>55 Windows8は止まることなく退化を続けてるよ。 >>52 別に子クラスが仕様を満たしてなかろうと、親クラスが壊れるわけじゃないからいいだろ。親クラスのここを通って、ここのサブルーチンを…とか言ってる奴じゃないかぎり。
62 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 00:25:46.46 ] 昔ながらの品質保証部とかが 「外部から観測できない手続きは禁止」 とかいってprivateを毛嫌いしてるんじゃね?
63 名前:デフォルトの名無しさん [2013/06/13(木) 00:52:11.93 ] >>48 のような考え方で作ろうとしたら必然的にprivateフィールド禁止になるぜ 親クラスは変更しない前提だからカプセル化する必要もない 実際、サブクラスの自由度のためにフィールドは全部protectedにするという 規約はそう珍しくないし
64 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 05:37:23.14 ] protectedなフィールドが一番使用頻度が低いなぁ。 publicかprotectedなアクセサがあれば十分だと思うのだけど。フィールドを裸単騎で 子孫クラスに晒す必要性が殆ど無い。 privateでないフィールドはpublic static finalぐらいしか普段は作らない。
65 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 05:49:06.23 ] 老害はカプセル化の意味も知らないんだろうか
66 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 06:38:24.62 ] アクセサさえ通してればカプセル化だと思ってる>>64 みたいな奴は非常に多いよね
67 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 06:56:19.19 ] 必要条件と十分条件の区別も十分につかない>>66 みたいな奴も非常に多いよね。
68 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 07:12:53.36 ] 既存クラスは変更せず、必要な変更はオーバライドによって行うという条件なら フィールドはとりあえずサブクラスから好きに触れるようにしないと仕方ない という話に対して、アクセサ使えばいいと言うのは的外れだろう 結局片っ端からアクセサで公開することになり問題の本質は変わらん
69 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 07:27:31.01 ] 派生でオーバーライドやり放題だと全部パブリックと大差ない やろうと思えば基底を無視して全部上書きも出来るのだから それでは基底を引数に受けとるメソッドはどうやってテストすればよいのか 膨大な量になるぞ 派生が作られるたびに今まで作って来た基底を引数に受けとるメソッドを追加でテストしなければならない
70 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 07:33:48.09 ] >結局片っ端からアクセサで公開することになり ならないよ。 子孫クラスに対して実装の詳細を隠すことも知らないのであれば、とりあえず クラスの設計をする手を止めて既存の有名どころのライブラリやフレームワーク のJavaDocでも色々読んだ方が良い。 protectedフィールドで内部状態を子孫にガンガン公開している実装なんて どれほどあることやら。protectedはabstract methodと同様に継承によって機能 拡張できるポイントとして慎重に、かつ詳細なドキュメントと共に定義されて いるのが殆どだと思うが。
71 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 07:38:42.12 ] >>69 基底クラスのメソッドにこのメソッドは○○しなければならないと明記しておいて、 受け取る方のメソッドには引数として受け取ったインスタンスのメソッド××を呼び出すと明記しておく。 テストでは受け取る方のメソッドが××を実際に呼び出してるかどうかテストすりゃOK。
72 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 10:15:53.42 ] メソッドのオーバーライドを出来ないようにしろで終わる話なのに オーバーライド出来るケースの話を延々とするチンパンジー達
73 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 10:46:11.91 ] カプセル化と継承による機能変更は両立するものではない
74 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 13:54:02.01 ] アグリゲーションとコンポジットの違いがあるからには、private一点張りじゃなくて、protectedが必要なこともある。
75 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 15:47:20.50 ] publicがオブジェクトの使用者向けのAPIであるようにprotectedはクラスの 開発者向けのAPIの一部だから。 finalでないpublicフィールドの公開がまずあり得ないようにfinalでない protectedフィールドの公開もあまり無い。protectedフィールドを再代入 出来る形で子孫クラスに公開したところで、再代入したら何が起こるかは 詳細にドキュメントに書くか、あるいは親クラスのソースを遡って影響範囲 を検討する必要がある。大抵便利でも安全でもないので普通に避ける。 実装の詳細に関する知識を共有した見知った範囲の人間がコードを弄る際の 手抜き程度しか出番は無いと思う。 protected finalも、例えばハンドラ等のオブジェクトを子孫クラスに触ら せる場合はフィールドよりゲッター使った方が色々便利なのであまり出番が。 使用者には公開しないプリミティブ型や文字列の不変値ぐらいか。
76 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 16:27:36.93 ] どうして基地外ほど長文を書きたがるんだろう
77 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 17:19:55.61 ] フィールド全部protectedとかprivate禁止とかありえんだろ。
78 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 19:22:14.27 ] リスナーとかデザパタ実装するならオーバーライド便利やねん てかそういうときだけしか使わんけどねん
79 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 19:24:39.46 ] >デザパタ実装するなら この考え方がまさにJAVAドカタ
80 名前:デフォルトの名無しさん mailto:sage [2013/06/13(木) 20:27:32.83 ] privateだと舐めるな! こっちにはリフレクションがあるんだぞ!
81 名前:デフォルトの名無しさん mailto:sage [2013/06/14(金) 04:33:21.59 ] ドカタはリフレクション使えないから心配ない。
82 名前:デフォルトの名無しさん mailto:sage [2013/06/14(金) 05:03:36.73 ] リフレクションは設計崩壊の産物 ダイナミックキャスト並みに要らない
83 名前:デフォルトの名無しさん mailto:sage [2013/06/14(金) 05:34:38.03 ] ドカタがリフレクション使う必要は無いけれどもドカタでも使えるものを作るには リフレクションも必要なんだよ。比較的真面目な話として。 フレームワークのAPIとしてはキャストやリフレクションが不要な綺麗な設計に なっているのに対してフレームワークの実装中ではjava.reflectやCGLIBの類を ガンガン使っているのは割と普通。 アノテーションとかも定義済みのを使っているうちはリフレクション不要だけど 自前で定義し始めると簡単なリフレクションを使う必要があるよね。
84 名前:デフォルトの名無しさん mailto:sage [2013/06/14(金) 06:05:24.94 ] フレームワーク実装したこともない奴がフレームワーク実装の話をするチンパンジースレ 難読化もできないしな
85 名前:デフォルトの名無しさん mailto:sage [2013/06/14(金) 19:34:43.32 ] Javaの基礎の本と、Eclipseの本でいいのがあったら教えてください
86 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 00:59:36.75 ] プラグインありきのeclipseなのに、それ系の本買う奴ってマジで馬鹿だと思う あんなもん直観的にわかるだろ。まぁ俺も昔1冊買ったことあるけど
87 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 01:19:43.22 ] >>85 かっこいいやつ タイトルは覚えてないが自分がこれから使うバージョンを解説したものを選べ >>86 じっくり機能を把握したいじゃん♪ 3000円越える本は図書館にリクエストを出すという手がある。
88 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 01:39:47.29 ] if文の書き方なんですが、 if( !(src.equals(dst))) { 〜〜 というのと、 if( src.equals(dst) == false ) { 〜〜 というの、どちらが慣習的に普通なんですか? 不毛な質問でごめんなさい。
89 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 02:04:17.88 ] 慣習じゃなくてjavaでオブジェクトの比較を行うとき その2つは判定方法が違うんですけどー(プリミティブ型は除く) equalsはオブジェクトが同じなら真を返すけど ==は生成されたインスタンスが違えばオブジェクトの中身が同じでも偽になる
90 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 02:49:28.95 ] >>88 boolean型なら、どっちでも動作は変わらないんだけどね。 前者が極めて一般的。 あえて後者を使っていた場合「すごく複雑な論理演算の結果、falseなんだぞ!」という強い意図を表してる。 コードの読み手は、そこに何かトリッキーな仕掛けがあるんじゃないかと疑うのよ。 だから、ごく普通のif文では if(xxx == false) とか if(xxx == true) は使わないな。
91 名前:デフォルトの名無しさん [2013/06/15(土) 02:52:24.79 ] !だと見落としのミスが増えそうな印象 (事実、俺はよく見落とす)
92 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 03:53:50.62 ] 一般的とかそういう感覚じゃねーから
93 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 05:01:16.96 ] 気持ち悪いならnot_equalsでも作れ
94 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 07:11:23.97 ] javaの初心者です。 質問さして下さい。 オブジェクトの比較で == を使うときって、そのインスタンスのハッシュ値が同等の時だけtrueですか? また、 eaualsを使うときは、そのインスタンスの中身さえ同じならばtrueですか? どなたかご教示ください。
95 名前:94 mailto:sage [2013/06/15(土) 07:12:47.96 ] あ、88さんも同じ質問してたみたいですね。 すみません。
96 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 07:19:25.24 ] 質問さしてください。 javaをある程度学んで、NetBeensってやつで メニューとJTextAreaをペタってはって、JFileChooserでファイルを選んで File file = filechooser.getSelectedFile()で Fileのインスタンスを得て、JTextAreaに表示するだけって事をしたいんですが JTextAreaの変数(ここではtxtareaとします) txtareaのどのメソッドを選んで、どういう処理をしていけばいいんでしょうか しょうもない質問ですが、ご教示ください。
97 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 08:27:38.96 ] >>94 >>89
98 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 08:40:34.35 ] >>96 ttp://www.javadrive.jp/tutorial/jfilechooser/index5.html
99 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 08:46:12.36 ] テキストエリアの一部の文字だけ文字色やフォントを変えることは出来る? 自分で文字位地と長さ調べて別のテキストエリア貼らなきゃダメかな
100 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 08:49:26.88 ] 質問する奴は名前欄に番号書けよ・・・ 同じ奴なのか別人なのかわからん
101 名前:94 mailto:sage [2013/06/15(土) 10:57:25.36 ] すいません。 >>89 を見たんですが 自分の書いた>>94 の考え方でも良いのでしょうか 良ければ、良いと、違うなら、違うと どなたか、答えてくれませんでしょうかお願いします。
102 名前:桃白白 ◆9Jro6YFwm650 [2013/06/15(土) 11:49:32.63 ] >>101 すこし違う。 ==はReference Equality Operators。 つまり、参照同じ演算子。 同じオブジェクトを参照してたらtrue。 hashCodeはオブジェクトが異なるときはできるだけ違う整数を返すようにしましょうと されてるものなんで、==がfalseのとき、hashCodeも違ってくるものなのだけれども、 hashCodeを参照して==の結果が決まってるわけじゃないっすよ。 equalsはequalsの実装しだいなのだけれども、Objectなんかは 参照が違ってたらequalsがfalseを返しちゃう。なので中身が同じならと 一概に言えるわけじゃない。
103 名前:桃白白 ◆9Jro6YFwm650 [2013/06/15(土) 11:53:32.16 ] >>102 >==がfalseのとき、hashCodeも違ってくるものなのだけれども、 equalsがfalseのとき、hashCodeも違ってくるものなのだけれども、
104 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 11:54:20.70 ] 基本情報を取らない弊害がまた出たな 基本情報をちゃんと取っていれば 値、参照、ハッシュ値の違いなどで悩む事はなかったのにね
105 名前:桃白白 ◆9Jro6YFwm650 [2013/06/15(土) 11:56:49.38 ] >>104 百済ねえやつ。百済からの回し者か?百済に帰れ。
106 名前:94 mailto:sage [2013/06/15(土) 13:03:57.66 ] >>102 なるほど、ありがとうございます。 それよりなにより 俺みたいな中途半端な質問でも 解かりやすく、詳しく説明してくれたことに 感謝感謝です。
107 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 13:35:30.16 ] >>99 普通に<font>タグで変えられるよ。 本物のswingプログラマはjavax.swing.text.AttributeSetを使うが、ひたすら面倒
108 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 13:48:42.31 ] オブジェクト間の==は同一インスタンスの時だけtrueで、 Object#equals()実装も同様。 それ以外は何でもありで、HashMapとかでトラブル起こしても、 それはequals()やhashCode()のオーバーライド仕様を明記できてない発注者に全責任がある。
109 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 14:56:37.50 ] 仕様に明記する暇にコードかけると思うんだが上流工程ってそんなに暇なのか? 新人の時にコード内容までキッチリすべて(ただし日本語で)書いてある仕様書みた時は自分の目を疑ったよ そのうちエクセルコンパイラ作るやつが現れるんじゃないかと古株の先輩にジョークを飛ばしたら苦い顔をされたな
110 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 15:02:43.34 ] ドメイン分析できてないと、ほどよく高速に散らばるハッシュ値実装は難しくね?
111 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 15:40:17.69 ] なぁ、oracle のjava プログラマのSilverを取ろうと思って 対策本買って、一通り解けたけど ホームページの例題で初期化ブロック使ったようなコードがあったり するんだけど、どこまでの知識がいるの? もうわかんねーよ。
112 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 15:46:20.15 ] オブジェクトの論理等価性について事前の分析はきっちり必要だけれどもそれを実際に equalsやhashCodeとして実装する際は無理に手作りせんでもEclipseでダイアログ開いて フィールドぽちぽち選択してOKして自動生成させた方が大半のケースで安全確実だと思う。 比較の抜けや一般契約違反も無いし。
113 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 16:40:52.44 ] >>111 初歩的な内容しか出ないよ
114 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 19:25:04.46 ] Stringの#hashCode()と#equals()で、昔から疑問に思ってることがあるんだけどさ。 equals() の中で1文字ずつチェックする直前、 自身と他者のhashが0でないとき、 つまり両者のhashが確実に計算済みであると保証できるとき、 hashが一致しなければ中身を見るまでもなくfalseを返す。 って実装にすれば、もっと速くなるんじゃね? と思うんだけど。 何か問題でもあるのかね?
115 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 19:44:50.78 ] 問題はないだろう
116 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 20:09:25.78 ] 超基礎的な部分だから、移植性を考慮してシンプルな実装にしときたかったんじゃない? マルチスレッドで気にすることが増えそう 今のJavaの仕様だと特に問題はないだろうけど
117 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 20:51:06.38 ] ハッシュ値を計算するコストの問題だと思うよ。 実際ハッシュ値ってイミュータブルなオブジェクトを除いてhasnCode()が呼ばれたら 安直にその都度計算している実装が多い。そしてaとbがイコールであることを調べる コストとaとbのハッシュをそれぞれ計算するコストは極端には違わない。 仮にaとbのハッシュ値が同じでも改めてイコールであることを確かめる必要があるので ハッシュ値を使っても二度手間になるというかかえって遅くなりそう。 イミュータブルだったり賢いハッシュ値の更新管理をしているクラスであればその equals内でハッシュを使うのは当然ありだけど、そういう最適化は各クラスの実装の 中で閉じているべきであって、それらをフィールド値として持つクラスは各クラスが 最適なequalsの実装をしていると信じて素直にequalsを呼ぶのが良いのでは。
118 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 20:52:47.85 ] あ、ごめん、Stringの実装の話でしたか。読んでなかった。 確かにそれは変だよね。何でだろう。
119 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 21:05:48.08 ] ほんと、バカほど長文がすきだね
120 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 21:16:06.80 ] >>114 ハッシュ未計算のフラグにhash == 0使うのやめい。 1.7でもまだ直ってないのか 去年どこかで脆弱性レポート出たよな? hash=0になるようなクエリばかり送りつけるDDoS攻撃が
121 名前:114 mailto:sage [2013/06/15(土) 21:16:07.32 ] >>118 うん、Stringとか、ハッシュ値をキャッシュできる/してるイミュータブルなオブジェクトの話。 // nullチェック、instanceofチェックは事前にやってる。 if (hash != 0 && other.hash != 0) return hash == other.hash; 増えるコストはこのif文。爆速っしょ。 >>115 >>116 問題ないはずだよなぁ…。 BigInteger, BigDecimal, Locale, URI, Pattern, UUID, File Java1.7でイミュータブルっぽいクラスを見てきたんだが、どのequalsもhashのキャッシュなんか使ってなかった。 Fileに至っては、return compareTo(other) == 0; とか。 hashには依存しないのに、compareToには依存するのかよ。 もしかして、なにか盛大に勘違いしてるのか?
122 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 21:28:33.68 ] 実装としては正しくても意味的に 素直じゃないからだろ ついでに、文字列が長くて、先頭が同じで、 最後だけ違う文字列の比較でしか役に立たない ウンコなコードは要らない >if (hash != 0 && other.hash != 0) > return hash == other.hash; しかも間違ってるし
123 名前:デフォルトの名無しさん [2013/06/15(土) 21:49:48.32 ] 爆速って試してみたってこと?それとも机上の推論? Stringがどんな用途で使われることが多いか知らんけど
124 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 22:09:09.19 ] 机上の空論。しかもコード間違ってたし… 多くの環境では、比較命令の中でも0との比較は高速っていう印象だったんで。 確かに >122 の言う「ウンココード」を追加しなきゃいけない割には、 高速化できるシチュエーションは少ないかもしれない…。
125 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 22:25:38.88 ] まあコンセプトとしてはいいんじゃね ウンココードhere: ideone.com/t4oYJq
126 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 22:40:34.97 ] javaってほんとダメな言語だな 根本にあるコンセプトは悪くないんだが
127 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 22:41:36.41 ] なんだいきなり そう思った根拠ぐらいは書いた方がいいぞ
128 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 22:43:38.66 ] >>127 スレの流れ読めばわかるが?
129 名前:デフォルトの名無しさん [2013/06/15(土) 22:44:29.02 ] 覚えたばかりの言葉は使ってみたくなるのが人の道理 俺もそのコンセプトはよく分かるわー
130 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 22:55:41.21 ] おれもコンセプトには世話になったよ
131 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 23:04:13.40 ] >>125 わざわざ書いてくれたのか。 26万文字×1000回とか、まさに俺の思い描いていた理想のシチュエーションだわ(^q^) >>126 ルートにあるコンセプトはブラウザプラグインとしてのエンバイロンメントフリーなリッチクライアントだから。
132 名前:デフォルトの名無しさん mailto:sage [2013/06/15(土) 23:17:18.83 ] >理想のシチュエーションだわ(^q^) >エンバイロンメントフリー もうやめて…
133 名前:デフォルトの名無しさん [2013/06/16(日) 00:39:10.04 ] ハッシュ比較のコードが入ってない場合の全比較はどれくらいなのよ
134 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 08:04:43.56 ] ジェネリック使いにくい
135 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 08:08:56.91 ] 使いにくいなら使わなければいいじゃない
136 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 08:24:12.14 ] インターフェイスにhashCodeメソッドなどを書いていないのに そのインターフェイスを通じてhashCodeなどを呼び出せるのは何故なのでしょうか? クラスがObjectを暗黙に継承していることは理解しています しかしインターフェイスの親はインターフェイスでなければならないので インターフェイスがObjectを継承するのはおかしな話です なのにインターフェイスを通じてhashCodeを呼び出せてしまう…… わけがわかりません 混乱してあたまがおかしくなりそうです
137 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 08:36:29.20 ] 細かいことをすっ飛ばして説明すればInterfaceのメンバはObjectのパブリック メソッドを含むと言語仕様で定義されているから。
138 名前:88 mailto:sage [2013/06/16(日) 08:51:21.21 ] booleanが戻り値の場合を想定していましたが、どちらにしろ前者が普通なんですね。 ありがとう御座いました。 大昔にExcelVBAしかやった事が無かったので、質問させて貰いました。
139 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 11:36:08.63 ] 89の説明は壊滅的に間違ってるが、結論は正しい。 90がいいな。どちらにせよ前者が普通。
140 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 11:53:19.92 ] ドカタには否定の論理は難しいから == false と書かせるのが吉
141 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 11:58:15.36 ] ドカタには論理型は難しいから ==false)==true しかし、==trueの結果もまた論理型なので ==false)==true)==true 以下再帰的に続く
142 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 12:02:27.03 ] これが後に言う越後屋事変である
143 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 12:12:29.30 ] ところでおまいらelse句って知ってるのか?
144 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 13:20:59.55 ] よし、if文使うのやめよう(関数型言語過激派)
145 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 13:28:56.33 ] 関数型は素晴らしい 設計書を書くのもテストするのも楽だ 日本のIT業界ではコードの日本語訳である設計書の作成とテストが実務の八割を費やしている ここを短縮できれば大幅に仕事効率が改善される
146 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 13:53:06.19 ] 仕事効率もクソもその無駄な作業をして時間給を貰う仕事なのだから 効率なんて上げなくていいよ
147 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 14:19:35.64 ] それもそうだな 効率が悪くて困るのは経営陣だけだし 傾いて来たら転職すりゃいいし
148 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 14:42:11.88 ] 何より素晴らしいのは 関数型ではこれはできませんやりませんで済ませられる点だ
149 名前:デフォルトの名無しさん [2013/06/16(日) 16:56:43.58 ] 質問です。 ttp://d.hatena.ne.jp/seraphy/20100622 に "Apple Java Extensions" なるものについて書いてありますが、 これはどこで手に入るのでしょうか。 お願いします。
150 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 17:10:43.15 ] いくら出せる?
151 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 17:36:54.11 ] 50円
152 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 17:38:46.73 ] うまい棒五本じゃ晩飯にもならないよ
153 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 17:46:11.70 ] 5円チョコ10個買えるやんけ
154 名前:149 mailto:sage [2013/06/16(日) 18:16:14.28 ] >>150-153 有料なんですか? "Apple Java Extensions" なるものがどういうものかよくわかってないのですが。
155 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 22:13:07.50 ] >>149 stackoverflow.com/questions/15048220/ > They are included both in the Oracle distribution and in OpenJDK. だとさ。Mac使ってないから知らんけど。
156 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 23:07:29.34 ] >>136-137 気にしたこと無かったのでこの機会に自分でも調べてみた。 docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.2 > (前略)the interface implicitly declares a public abstract member method(中略) corresponding to each public instance method(中略) declared in Object(後略) コンパイラがゴニョってんのか。 そういやJava8でinterfaceにデフォルト実装持てるようになるけど、hashCodeなんかは別扱い(デフォルト実装持てない)だな。
157 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 23:34:42.37 ] 質問です ByteBuffer#get(byte[] dst)でdstへデータを読み込む際にバッファー内のデータがdst.lengthより小さいと例外が発生します これは仕様のようなのですが、なぜ配列のサイズより小さいデータを入れるだけで例外とするのでしょうか。 これでは次に大きなデータを受けるときにわざわざbyte[]を作り直す手間が勿体無く感じるのですが
158 名前:デフォルトの名無しさん mailto:sage [2013/06/16(日) 23:46:49.70 ] >>157 です 自己解決しました。スレ汚し失礼しました
159 名前:149 mailto:sage [2013/06/17(月) 00:03:31.64 ] >>155 なるほど。ありがとうございます。 しかしドキュメントが無さすぎて使い方がさっぱりわからない。 (>>149 で挙げたブログ中のリンクもリンク切れ) どなたか OS X のメニューのハンドリングについて情報持ってる方いませんか?
160 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 15:57:21.83 ] >>141 いるんだよなこういうバカが 式の型がbooleanかどうかは関係なく ドカタが認知しやすい形かどうかが重要 if (!fuckReturnBoool()) ドカタ理解困難 if (fuckReturnBool()==false) ドカタ理解容易 if ((fuckReturnBool()==false)==true) ドカタ理解不能
161 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 16:52:42.40 ] >>160 >> if ((fuckReturnBool()==false)==true) ドカタ理解不能 こんなコードを書くアホウはいないだろ(笑)
162 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 16:59:24.21 ] >>160 >> if ((fuckReturnBool()==false)==true) ドカタ理解不能 書き方がトーシロー ってわかってるのか? >>160 のアホ ま、書いてる 意味がわからんだろうけどな(笑っちゃお)
163 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 17:07:21.24 ] 読みやすい、わかりやすいコードを書けるのがいいコーダーだと思うんだけど違うのか?
164 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 17:13:05.77 ] そこまで親切なコード心がけるんだったら isで始まるboolean型ローカル変数で評価してやれよ。
165 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 17:15:13.81 ] 質問失礼します。 SwingのJFrameの手前に描画されているものから順に処理していきたいです。 JFrameのZ値はどのようにして取得したら良いでしょうか? 分かる方、よろしくお願いします。
166 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 17:28:44.05 ] つ java.awt.Container#getComponentZOrder() 手前から描くと、最奥のJFrame描くときに全部消されちゃうぞ?
167 名前:165 mailto:sage [2013/06/17(月) 17:36:34.38 ] >>166 すいません。 質問の書き方が間違っていました。 JFrame内のコンポーネントのZ値ではなく、JFrameそのもののZ値です。 JFrame(ウィンドウ)がデスクトップ上にいくつも表示されています。 手前に表示されているJFrameから順番に処理していきたいという意味です。 よろしくお願いします。
168 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 18:22:14.44 ] >>if ((fuckReturnBool()==false)==true) これ見てなんとも思わないようなのはシロートレベルだと思うが? 今のプログラマはその程度なのか?
169 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 20:16:45.14 ] そのレベルは>>141 だけ
170 名前:デフォルトの名無しさん [2013/06/17(月) 20:53:21.07 ] 16bit グレースケール tif を読めるライブラリってあります? JAIでは読めませんでした。
171 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 21:09:26.48 ] blog.goo.ne.jp/jn1inl/e/41671c99becc809610559faa2cd1c04a
172 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 22:02:34.04 ] clsやclearのように標準出力に出力した文字をクリアする方法を教えて下さい windowsXP,7依存でもいいのでお願いします
173 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 23:50:54.23 ] 標準出力に出力した文字はクリアできません 不可能です ターミナル画面をクリアしたいという話なら ↓ が回答
174 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 00:08:00.77 ] JNIでコンソール制御Win32 API
175 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 00:19:45.43 ] はい次
176 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 00:55:27.66 ] DOS窓の話ならまずANSI.SYSでググれ
177 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 05:36:10.18 ] SWINGでクリックイベントやマウスイベントをスルーさせて、 後ろのウィンドウに処理させる事は可能でしょうか?
178 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 10:35:28.50 ] 当然プロセスをまたぎます(キリッ とか言い出す予感
179 名前:177 mailto:sage [2013/06/18(火) 13:51:09.42 ] >>178 いえ、プロセスはまたぎません。
180 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 16:08:45.43 ] javax.swing.SwingUtilities#convertMouseEvent() でイベント変換できないかな。 スクリーン座標との変換はconvertPointFromScreen、convertPointToScreenあたりで 場合によってはgetDeepestComponentAtも必要? SwingプログラマならSwingスレにいそうだが
181 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 16:40:55.56 ] てst
182 名前:177 mailto:sage [2013/06/18(火) 18:54:43.16 ] >>180 ありがとうございます。 とりあえず全てのウィンドウを配列にして管理して、上から順に処理するようにしました。 ウィンドウの矩形にヒットしているかチェックして、ヒットしていたらdispatchEventでイベントを流し込みます。 技術的なノウハウが無いのでめんどくさい処理になってしまいました。。。
183 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 23:10:50.80 ] System.in.readの戻り値がcharではなくint型なのは何故でしょうか
184 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 23:14:16.70 ] APIリファレンスも読めない人に 理解することは難しい
185 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 23:37:51.80 ] InputStreamのread()の戻り値もintなのが不思議 byte型だったらだめだったのかな?
186 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 23:44:46.09 ] APIリファレンスも読めない>>183 と>>185 に 理解することは難しい
187 名前:デフォルトの名無しさん mailto:sage [2013/06/18(火) 23:56:08.83 ] Cの腐った設計を真似したから としか言いようがない。 出来の悪い設計に論理性を求めてはいけない。
188 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 00:22:41.18 ] javaに論理性とか合理性を求めたら負け
189 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 00:34:44.40 ] C上がりはdocも読まないのか!?
190 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 00:42:44.79 ] >>185 読み終わったら-1を返す仕様だから byteだと符号付きなので値が変わってしまい扱いにくいから パフォーマンス的な損も特にないから
191 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 01:36:14.82 ] >byteだと符号付きなので値が変わってしまい は?
192 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 01:48:43.55 ] InputStream#readはByteを返すべきだった
193 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 06:21:25.44 ] 例外なげるのが正解
194 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 06:44:53.12 ] Java SE 7update25キター
195 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 06:48:45.70 ] byteがsignedで誰が得するの? あれこそまさに愚かな一貫性というやつだよね
196 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 06:52:50.34 ] >>195 MIDIファイルの読み書きする人 役に立つのはたぶん世の中でそれくらいだろう
197 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 06:56:29.98 ] >>191 結果の型がbyteだと、結果をそのまま0xffと比較できないんだぜw
198 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 06:59:19.06 ] >>197 で、「値が変わる」とは何のこと?
199 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 07:24:35.68 ] 読み終わったら0を返すでいけるとおもう
200 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 07:49:56.10 ] >>199 戻り値が長さの場合の話じゃないよ
201 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 08:49:30.95 ] >>193 try { buf.write(in.read()); } catch (Exception e) {}
202 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 11:10:07.96 ] つまりJavaはbyte型の値「-1」を読みとったときに int型の255に変換して返す統一性のない ライブラリ仕様であるとふむふむ
203 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 12:39:42.94 ] よそ様のライブラリでは ・0x00を読み込んだとき ・0xffを読み込んだとき ・入力の末端に到達したとき ・末端じゃ無いけどブロックせずに読めそうなデータだけ返すとき をどう区別してるのか、産業でまとめてくれ。
204 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 13:02:54.42 ] >0x00 JAVA言語上の概念であるint型(4バイト整数)の値を 読み込んだときの挙動とな?
205 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 13:10:32.64 ] JAVAドカタには 受信データそのものと受信処理のステータスが 別であるという当たり前の発想は無いらしい
206 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 13:40:49.52 ] C言語のfgetcとかと同じにしただけなんじゃね? fgetcよりはエラー時に例外出るだけマシな感じ。
207 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 14:21:42.17 ] >エラー時に例外出るだけマシ まるでfgetcはエラー情報が取れないみたいな言い方だな
208 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 15:56:23.88 ] ちがうだろw
209 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 16:31:18.82 ] むしろこの際、java.text.CharacterIterator.DONE も廃止して、 int型の-1にするべきだとおもうんだが
210 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 17:25:03.20 ] そういう仕様がJavaの利点だと気づいてない人が沢山いますねぇ。 だからJavaが速いことに気づかない
211 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 18:48:06.52 ] JAVAドカタの>>209 には 受信データそのものと受信処理のステータスが 別であるという当たり前の発想は無いらしい
212 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 19:15:35.37 ] 符号理論上では対等な事象をわざわざ分ける男の人って…
213 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 21:05:36.28 ] どうでもいい しゃぶれよ
214 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 21:36:48.67 ] すみません、質問する場所がわからないのでここで質問します。 Javaが使えるレンタルサーバを借りるとして、サーバ代を打ち消す程度の収益を、 個人の趣味の範囲で望むのはどのくらい大変ですか? また、比較的安いサーバではweb.xmlを弄らせてくれないようですが、こういうのは避けたほうがいいですか? それとも<servlet>タグ等はかけるのでしょうか?
215 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 21:41:34.51 ] マイJenkins立ち上げるのなら、サーバにメモリ1GBは欲しい
216 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 22:52:30.18 ] >>214 VPSを借りろ。月1000円未満で借りられる。 VPSを管理するスキルが無いのなら板違いだ。
217 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 22:54:00.34 ] JAVAドカタの>>212 には 受信データそのものと受信処理のステータスの 区別がつかないらしい。 int値をシリアライズして伝送するライブラリを 書かせると糞なメソッド仕様になるんだろうな。
218 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 23:01:07.24 ] 二言目にはドカタの無職さんこんばんは。
219 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 23:03:02.09 ] >>214 >サーバ代を打ち消す程度の収益を どうみてもスレ違いです
220 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 00:32:27.45 ] Windowsで動くならそのままAndroidでも動くんですか?
221 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 00:35:57.39 ] >>220 GUIとファイルI/OとDBと通信を 使用してなくてjava.langの中だけなら たぶんいける
222 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 06:24:54.09 ] ライトワンスランエニウェアだから動くよ 動かないなら詐欺みたいなもんだ
223 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 06:36:45.82 ] 動かないよ AndroidはJavaではないし そもそもまっとうなJavaの中でも組み込み用のとかあるし
224 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 06:38:43.97 ] 動かないよ AndroidはJavaではなく海賊版だし、 そもそも公式Javaの中でも組み込み用とかあるし
225 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 07:13:15.40 ] なんだ詐欺だったのか? 一度書けばどこでも動きますよ!ぜひ導入してください! なーんて謳い文句で営業してるのに、ほんの些細な変化でも動かなくなる 誇大広告もいいとこだな
226 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 07:30:50.85 ] ドカタの使い回しが利くという意味だよ
227 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 15:03:11.60 ] JavaSEのSとは何か? >>225 それは昔の話 Javaというブランドをカネで貸して商売をするようになる前の
228 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 18:29:08.10 ] >>225 詐欺と言えばそうかも知れない。 Javaは言語仕様と実行環境のセットからなる 基盤なのに、Googleは前者だけをパクって 紛らわしいものを出した。Googleは詐欺
229 名前:デフォルトの名無しさん [2013/06/20(木) 18:38:13.22 ] BufferedReaderの仕様について教えてほしいのですが、readLine()を使用して10行を 読み込んだとして、close()しなければ10行は残ったままになるのでしょうか? で次データが来た場合、11行目から(1行目〜10行目は残したまま)書くのでしょうか?
230 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 18:42:22.79 ] ちょい質問させて下さい WindowsでJava以外のWindow上の色を定期的に判別して、黒が白になったら別の場所をクリックする みたいな事をする場合 やっぱりクリップボードを介する&Robotがいいでしょうか?
231 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 18:54:58.20 ] >>229 「10行は残ったまま」の意味が分からないけど、10行readLineしてしばらく待って次にreadLineしたら11行目が読み込まれる。 「11行目から(1行目〜10行目は残したまま)書く」って、BufferedReaderでは書き込めないよ。 BufferedReaderとは別にFileWriterとかで書き込みたいなら、BufferedReaderで何行読み込んだとか関係ないし。 File I/Oの基本が分かってないんじゃない?
232 名前:229 [2013/06/20(木) 19:08:50.34 ] >>231 ありがとうございます。 アプリ間を跨いで同じファイルを使用していて。こっちは読み込みのみで、 別アプリから書き込みが発生します。
233 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 19:10:53.80 ] そういうのはファイルではやらないでください みんな迷惑してるんですよ
234 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 20:01:28.27 ] つ 「名前付きパイプ」
235 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 20:11:48.04 ] つ「データベース」
236 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 20:47:22.50 ] チャットみたいなのをしたいんだろ >>232 そういう感じのことしたいんなら RandomAccessFileかFileChannelを覚えることをおすすめします
237 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 23:41:21.10 ] JAXBでテストデータを出力したいのですが、 XMLのルートに当たるTestDataクラスが出力したいUserクラスを持つ構造で Userのプロパティを属性にマッピングするにはどうしたら良いでしょうか。 ただしUserクラスそのものには@XmlAttributeを注釈しないようにしたいです。
238 名前:デフォルトの名無しさん mailto:sage [2013/06/21(金) 00:03:40.19 ] >>237 UserクラスにJAXBアノテーションを付けたくないという解釈で良いのかな?
239 名前:デフォルトの名無しさん mailto:sage [2013/06/21(金) 00:34:17.46 ] >>238 はい、おっしゃるとおりです
240 名前:デフォルトの名無しさん mailto:sage [2013/06/21(金) 02:43:53.97 ] >>216 専用サーバを借りる予定です 鯖のコスト減らして貧乏臭く開発するような内容は今まで散々やってきたので、 今度は大きいサービスを作ってみたいと思いました レンタルサーバで実際にpollingがwebsocketを使ったアプリを試したいです
241 名前:デフォルトの名無しさん mailto:sage [2013/06/21(金) 05:34:23.24 ] >>237 あんまりかっちょええ方法は思いつかないねぇ。 <testData usersProp1="..." usersProp2="..." ...> みたいにUserクラスのプロパティを親、この場合はTestDataに対応するXML要素の 属性にしたいのであれば、user自体は@XmlTransientにして、代わりにuserの属性 を読み書きするセッターゲッターをTestDataクラスに追加して@XmlAttributeを つける。 <testData ...> <user prop1="..." prop2="..." /> みたいにtestDataの下にuser要素を配置してuserのプロパティをこの要素の属性に したい場合はプロキシクラスUserProxyを作って必要な@XmlAttribute等をつける。 UserとUserProxyの相互変換をするためのXmlAdapterを実装する。 最後にTestDataのプロパティuserに@XmlJavaTypeAdapterをつけてUserとUserProxy の間の変換に使うXmlAdapterを教えてあげる。
242 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 00:02:45.60 ] JDK 6 Update 11のインストールexeを実行すると、 「有効なwin32アプリケーションではありません」てメッセージが出るんだけど どうすればインストールできる? OSはWindows7 Pro SP1 64bit BTOでセットアップされたPCが今日届いたばかりだから古いJDKは残ってない。
243 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 02:33:42.17 ] >>242 ダウンロード時に回線障害起こしたとかでJDKが破損してるんだろう 再ダウンロードして実行し直せばいい
244 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 02:56:11.85 ] >>243 ほんとだ。。。 ファイルサイズ見たら全然想定より少なかった。 ありがとう!
245 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 03:05:02.27 ] 板違いな気がするけどJavaの使用に関する質問もここでいいの? 違ってたら誘導して頂けると有り難いです
246 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 03:10:04.34 ] >>245 プログラミングとは関係のない話題は↓が適切 Java Runtime Environment Part3 anago.2ch.net/test/read.cgi/software/1351670907/
247 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 03:38:45.47 ] >>246 ありがとうございます
248 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 06:46:02.07 ] private List<String> strList = new ArrayList<String>(); public void addString(String str) { strList.add(str); } public String getString(int num) { if(strList.size() < num+1) return null; return strList.get(num); } のような、StringのListを管理するがそのList自体は返さないようなManagerクラスがある場合、 getString(int num)メソッドの一行目に書いたようにnullを返してもいいのかな? でもこれって上で書いたようにNullPointerExceptionでエラー出すか、この一行は書かずにArrayIndexOutOfBoundsException出すかの違いでしかないのか・・・。 こういう時に何を基準に判断していくべきなのかがもう一つわからないです。 加えて、このnullチェックはメソッドを呼ぶ側ですべきなのかこのクラスでするべきなのかの判断基準もわかり辛いです。 JavaのSDKみるに、基本放置でエラー吐かせて、必要ならば呼ぶ側でする感じかなとは思いますが。
249 名前:248 mailto:sage [2013/06/24(月) 06:49:19.61 ] あぁ、String型でやったのは大きなミスだ。 これじゃヌルポはでないか。
250 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 06:49:33.15 ] >こういう時に何を基準に判断していくべき このプログラムについてのお前の設計思想 >JavaのSDKみるに、基本放置でエラー吐かせて んなこたーない
251 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 06:57:53.65 ] >>250 だから設計思想を形作る判断材料のどこに重点をおくべきなのかがわからないの。 お前の設計思想なんていいだしたらメモリさえ食わなきゃ何でもokみたいな言語に成り下がるわけで。 null checkもお前の設計思想では片付かない相当大きな論争がありますよね?
252 名前:250 mailto:sage [2013/06/24(月) 07:27:37.24 ] >お前の設計思想なんていいだしたらメモリさえ食わなきゃ何でもok そうだよ。 プログラミングが目的じゃなくてコンピューターに やらせたいことがあるんだからプログラミング言語がある。 生産性・保守性・拡張性・再利用性の様々な観点で 今回の自分の目的に叶っていれば問題なし。 プログラミング自体が目的のアホな論争など どうでもいい
253 名前:デフォルトの名無しさん [2013/06/24(月) 08:13:55.37 ] >>252 結局何も言ってないのと同じこと
254 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 08:24:23.76 ] いや、俺は>>250 に一票。 結局のところ、プログラム全体としてのエラーや例外のポリシーを決めないとどうすべきか なんて言えないよ。
255 名前:デフォルトの名無しさん [2013/06/24(月) 08:43:53.04 ] >>254 じゃあ黙ってろよ
256 名前:デフォルトの名無しさん [2013/06/24(月) 08:45:57.24 ] お前らわからないくせに偉そうにぐだぐだ言いやがるよな
257 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 10:23:06.32 ] わかるわからないの問題かこれ?
258 名前:デフォルトの名無しさん [2013/06/24(月) 10:57:22.99 ] >>257 わからないくせに偉そうにぐだぐだ言うなって言ってんだよ。 >>252 なんだよこれ。バカが。
259 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 11:21:32.05 ] >>258 よくわかんないからもう少し丁寧に説明してくれよ
260 名前:デフォルトの名無しさん [2013/06/24(月) 11:22:38.82 ] 粘着しだした
261 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 11:25:21.21 ] >>248 「自分的にこうあるのがベター」って考えがとくに無いなら、 とりあえずJavaの標準ライブラリに合わせりゃいいじゃん。 小難しいこと考えずに、 public String getString(int num) { return strList.get(num); } だけで、標準ライブラリの設計と合致するっしょ。 設計思想無しにヘタに、 if (0 <= num && num < strList.size()) return null; とか書いて例外な状況を握りつぶすのは最悪。 本当はnumの範囲外が原因なのに、 戻り値を最初に使った場所でヌルポが出るとか、原因見つけるの大変だろ。
262 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 12:05:53.67 ] >>248 例えばOracleが公式で出してるJNIについての設計文書を読んでみるとわかる。 docs.oracle.com/javase/jp/1.5.0/guide/jni/spec/design.html > JNI は、null ポインタまたは不正な引数型の受け渡しのようなプログラミングエラーについてチェックを行いません。 > JNI は、次のような理由からこれらの プログラミングエラーについてのチェックを行いません。 > ・JNI 関数に起こり得るすべてのエラー条件についてチェックするよう強制すると、 > 通常の (正常な) ネイティブメソッドのパフォーマンスが低下する > ・多くの場合、このようなチェックを実行できるほど十分な実行時の情報がない -1やnullなどのエラーコードを返か、例外を投げるかについても言及されてる > JNI 配列アクセス関数の一部には、エラーコードを返さないが、 > ArrayIndexOutOfBoundsException または ArrayStoreException をスローするものがある この文章からわかるのは、 ライブラリがエラーチェックをどこまで行うのかは「ライブラリの目的によって変わる」ということ。 JNIは引用文に書かれている理由でエラーチェックを行っていないが、 もちろんこれがあらゆるライブラリに当てはまるわけではない。
263 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 12:17:59.16 ] >>261 getStringでnullが返ってくることが例外なのか意図された状況なのかも>>248 のコード片だけじゃわからないからね 例えば配列は用意した分にしかアクセスできないけど、 用意しなかった分には任意の初期値を用意した無限のインデックスでアクセスできる配列クラスを作りたいとか そういう場合に初期値としてnullを用意したという状況ならば、getStringでnullが返ってくることは例外ではなく正当な結果だし >>248 がそういうライブラリなのか、そうじゃないライブラリなのか絞り込むための材料は用意されていない よって回答者のレスが抽象的・一般的になってしまうのは、そもそも用意されてるコード片が抽象的すぎて何も言えないからなんだよ
264 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 12:30:33.95 ] > JNI は、null ポインタまたは不正な引数型の受け渡しのようなプログラミングエラーについてチェックを行いません。 これは意味が違うだろ。 JNIというフレームワークとしては自動チェック機能を提供しないだけで、 JNIのCプログラムがnullチェックしなかったら確実に死ぬ
265 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 12:49:58.68 ] >>248 のダメな点 ・return nullだと、strListの中に入っている正当な値としてのnullが返って来たのか、 numがインデックスの範囲外であることを示すためにnullが返って来たのか区別することができない ・addStringにおいてnullチェックが行われていないため、 Listの値としてnullを受け入れるのが正当な仕様であるように見える(これでいいのか?) ↓ これらを総合すると、任意のインデックスを受け取って値を返し 初期化されてないインデックスが指定されたら初期値としてのnullを返すようなListを作ってるようにしか見えないが これでいいのか?
266 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 13:14:57.75 ] >>263 >>248 のコードをよくよく読み直したら、だんだん解らなくなってきた… >>265 に加えて、 ・strListは参照が可変でいいの? ・負の引数はエラー、正はOK、ただしInteger.MAX_VALUEはエラー たぶん、 「初心者は難しいこと考えずに、まずは教科書よく読んで、 しっかりコード書いて1歩ずつ理解していくと良いよ」 ってのが>>248 にとって一番しっくりくる回答だと思う。
267 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 13:53:06.36 ] >>266 は無視しておk こいつ、レスつけてる連中の中で一番腕が悪い、もしくは馬鹿。 論点を無視した指摘に、意味のないアドバイス。 なんでこんな奴がドヤ顔でレスしてんの?
268 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 15:42:05.39 ] 人を馬鹿呼ばわりすると中傷と言われますよ。 こういうときは × >>267 は馬鹿 ○ >>267 のレスは馬鹿な内容だ と言うものです。
269 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 16:40:23.09 ] twitter botを作成しようとしてます gomyownway.hatenablog.com/entry/2012/08/05/151936 このページを参照して一応必要なキーなどな入れているのですが Exception in thread "main" java.lang.NoClassDefFoundError: test/TweetTest のエラーがでて実行できませんどうすればいいですか?
270 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 16:52:52.97 ] >>269 ソースコードではなく実行環境の問題 どういう環境で実行してるのか書け
271 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 16:59:28.46 ] >>270 実行環境はmacでeclipseです
272 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 17:02:27.39 ] >>269 まず画面にtestと表示するだけのプログラムを 完成させて出直せ
273 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 17:04:18.55 ] >>272 それはもうやりました
274 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 17:09:41.01 ] >>273 プロジェクトの設定をどこかおかしくしたのが原因 だから空のプロジェクト作り直して順番に確認していけ
275 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 17:32:01.23 ] >>274 ありがとうございます 言われた通りに最初からやったらうまくいきました
276 名前:248 mailto:sage [2013/06/24(月) 22:02:44.02 ] return null; の部分を throw new NullPointerException(); にするなんていうのはなし?
277 名前:デフォルトの名無しさん mailto:sage [2013/06/24(月) 22:33:14.84 ] 上の回答見てまだそんなこと言うか
278 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 07:58:37.22 ] ヌルポを自分でスローするとか どんだけお前はアホなんだよ 呼び出し側のパラメーター異常は IllegalArgumentExceptionだろ
279 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 08:00:21.97 ] 途中で送信したoops! ノーチェックかチェックしてIllegalArgumentException スローするかどちらかにしろ
280 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 10:09:07.50 ] そうか なぜかreturn null前提で考えてた
281 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 14:58:19.28 ] 質問:変数paramがユーザー指定の文字列の場合、これってコードインジェクションされる可能性あります? String base = "ping "; int ret = Runtime.getRuntime().exec(base + param).waitFor(); ぱっと見た目やばそうなんだけど・・・
282 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 15:15:08.63 ] うん。
283 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 15:22:35.69 ] ですよねぇ・・・ 実際セミコロンつけてコマンド連ねてみても動かないから、証明出来なくて困ってる なにまちがえてんだろ
284 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 15:27:35.39 ] コマンドインジェクションはむずいんじゃないのかな。 JavaのRuntime.execはシェルを呼ばない。単純に文字列をトークンに分割して 最初のトークンで指定されたコマンドに以降のトークンを引数としてわたすだけ。 なので;や|、&といったシェルが解釈する文字列は機能しないと思う。
285 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 15:36:04.27 ] 最近Java更新しようとするとウィルス対策ソフト入れようとするんだけど
286 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 16:29:27.50 ] >>284 なるほど、サンクスです。適当に付け足してもうごかないわけだ しかし、チェック処理がないのがきもちわるい 作った本人が分かってたのか、分かってなかったのか、わからんな・・・
287 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 16:50:16.66 ] RuntimeやめてProcessBuilder使えって通達、最近来てなかったっけ?
288 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 17:04:47.01 ] 既存のソースにコレがあったので、直した方がよくね?って話に持っていこうかと。 このためだけに触りたがらないヤツがいるので、危険度を証明したかったんだが 証明できんw という夢を見た
289 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 23:00:45.63 ] abstractクラスをうまく使えるようになるとかなりソース綺麗になりますねぇ Javaは設計が上手くいったときがスカっとして個人的に一番楽しい
290 名前:デフォルトの名無しさん mailto:sage [2013/06/25(火) 23:05:01.54 ] スカはちょっと・・・
291 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 01:57:41.23 ] abstractとか失敗設計の典型例だろ
292 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 03:55:18.95 ] ?
293 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 04:02:32.31 ] >>291 これはひどい
294 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 05:40:01.92 ] そもそもオーバーライドはバグの温床なのに必ずオーバーライドしなきゃダメな時点でアウト
295 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 06:53:39.61 ] オーバーライド以上にコードのコピペがバグの温床。 いつの日か出会うかもしれない変な継承によるバグにおびえるヒマがあったら 今目の前にあるコードから継承や抽象クラスやコンポジションを使ってコードの 反復を一つでも減らした方がまだ生産的。
296 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 07:13:47.54 ] >>295 オーバーライドではない→コピペ まずこの発想がキチガイ的でヤバイ
297 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 07:24:24.63 ] オーバーライドはスーパークラスの呼び出しをJavaDocで指示するケースが一番ヤバイな protectedなメソッドを空実装しといてオプショナルにしとくのなら安全で使いやすいが
298 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 07:29:01.28 ] > オーバーライドではない→コピペ こういう解釈にいたる時点で日本語読解力がヤバい。 バグの温床としてオーバーライド < コピペだとは書いたけど、 オーバーライド無し -> コピペとは一言も書いていない。
299 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 12:39:13.32 ] コンストラクタで必ずsuper()を呼び出さないとアカンやつ大杉や!
300 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 14:45:51.34 ] オーバーライドがバグの温床なんていうのはいいすぎじゃないかな 依存関係からいっているのかな、だけど普通abstractクラスはそれを分散させないために使うんじゃない? 例えば描画と更新が必要なGUI開発やゲーム開発とかで ArrayList<MyObject> objects = new ArrayList<MyObject>(); public void update() { for(MyObject mo : objects) mo.update(); } public void render() { for(MyObject mo : objects) mo.render(); } のように描画する対象物がどんな形でどんな役割であろうと同一化したほうがスッキリする場合、 abstract class MyObjectにして座標等のフィールドはprotectedにする。 で、update()メソッドもabstractにしてrender()に関しては場合による。 以降はMyObjectクラスを継承したMOBoxクラス、MOBarクラス、MOMenuクラス、 ゲームならMOPlayer、MOEnemy・・・ といったように本来の役割が違ってもかなり深く抽象化できて扱いやすいことは多いよ。(SwingのJComponentクラスがまさにこれだよね) Decoratorパターンも導入しやすいですし。
301 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 20:09:38.19 ] たとえ具体クラスが一つしかなくたって、 ふくれあがった唯一神クラスを分割記述するためだけに abstract使ってもいいのよ?
302 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 20:13:28.83 ] そもそも、目的にあった道具を使うもんじゃないかな。 勝手な想像だが、 >>291 は、道具の使い方や、使う場面を間違えてるんじゃないかと思う カラフルな絵を書くのが目的のときに、 「黒しか出ないってなんだよ、エンピツつかえねぇ!」 ↓ 「エンピツ使うとか失敗するにきまってるだろ」 って言ってるように聞こえる。
303 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 21:07:21.54 ] インターフェースを定義した後にロジック実装の骨格を提供するのにも使うな > abstract 単にabstractを使う機会が無かっただけじゃない?
304 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 22:19:30.43 ] >ふくれあがった唯一神クラスを分割記述するためだけに >abstract使ってもいい 意味や機能でなく 処理でクラスやメソッドを分けるのは JAVAドカタの得意技だね
305 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 22:35:34.39 ] ロジック実装して初めてインターフェースは見えてくるもの それがわかってないからたいてい抽象化が無意味になって失敗する だいたい考慮すべきことが多いのに最初から一発OKな設計になるわけない ・引数にするか、メンバーにするか ・使うのはここだけか、何度も使うことになるか ・・・
306 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 22:39:41.25 ] >>305 >ロジック実装して初めてインターフェースは見えてくるもの それはお前がドカタだから。 設計のできる人はそんなこと無いから。
307 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 22:51:51.03 ] 処理によってクラスやメソッドを分けるのは当たり前じゃ? それに違和感を感じるのはクラス分けると書けないいわゆるオブジェクト指向になれてない人か、 デザインパターンすら認めない?生きた化石じゃないか? 仕事を割り振ることを考えたらabstractが設計失敗なんてありえないと思うよ。趣味でやってるレベルでもわかる。 >>305 >だいたい考慮すべきことが多いのに最初から一発OKな設計になるわけない 同意だけど、abstract等で縛っていかないから抽象化が失敗するんだと思う。 >ロジック実装して初めてインターフェースは見えてくるもの これを念頭に置くのは大反対。 抽象化しすぎると将来どうなるかわからないからpublicにしとけ的な設計が一番ダメに感じる。 見えてこないのはまさに修飾子を正しく把握していない、もしくは縛って自由を獲得する設計に慣れていないだけ。
308 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 22:56:42.35 ] >処理によってクラスやメソッドを分けるのは当たり前じゃ? いやー、JAVAドカタって ほんっっとにどうしようもないな
309 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 22:57:04.78 ] 「このクラスについて詳しく見たわけじゃないけどこのクラスもあのメソッド使えそうだな」 これ、誰でもAPIで経験してるはず。 設計さんに感謝やで。 継承がバグの温床なんていったらバチあたるでほんま。
310 名前:デフォルトの名無しさん mailto:sage [2013/06/26(水) 23:23:04.49 ] 抽象クラスがなかったらコールバック関数に渡す無名インナークラスとかどうするんだよ
311 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 00:40:03.70 ] うむ。RCP息してない。
312 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 01:40:13.43 ] >>286 そういやそのへんの挙動、最近のupdateで何か変わってなかったっけ。 記憶違いかも知れんが。
313 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 01:40:54.77 ] 処理によってクラス分ける利点は静的に扱うときに一番あらわれる気がする 動詞をクラス名にしたりね。
314 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 01:43:54.45 ] List<Object> list = new ArrayList<Object>(); みたいな書き方って海外の人あまりしないよね?なぜ日本ではこれが推奨されているの?
315 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 01:56:34.66 ] Javaのジェネリクスは保守的でコードレベルでタイプセーフにするだけだからな Java8だかでインタフェースのメソッドがステートレスに実装可能になるらしいから驚き
316 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 02:17:56.80 ] >>314 海外ではどんな書き方なん?
317 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 02:27:14.62 ] >>316 普通に ArrayList<Object> list = new ArrayList<Object>(); って書く人が多いように思う。 自分もそう書いていたんだけど List<Object> list = new ArrayList<Object>(); のほうがいいよ的な意見もよく聞く。 だけどそういう人でも JComponent button = new JButton(); ってのは書かずに JButton button = new JButton(); と書く人が多い。 なぜArrayListのときはそういう書き方をするのか教えて欲しい。
318 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 02:38:07.98 ] >>317 意味論的にそれが有効だからとしか。 ArrayListはランダムアクセス可能なList JButtonはSwingのボタンUIとして確固たる知名度と意味を持つ てかJComponentは抽象度が高すぎるしね
319 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 02:40:12.03 ] そもそも前と後ろ同じじゃないとなんか感覚的に見た目気持ち悪いんだがどうなん
320 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 02:45:07.10 ] 宣言側はアプリケーションで必要とされている意味論的に適切な抽象度で宣言する 生成側はパフォーマンス特性に合わせて無難または最適な物を生成する
321 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 02:46:01.29 ] >>314 こういうのってキャストとかしなくて大丈夫なん?
322 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 02:48:56.11 ] ArrayList (Java Platform SE 7) docs.oracle.com/javase/jp/7/api/java/util/ArrayList.html 通常、リストの同期をとるには、リストを自然にカプセル化するオブジェクトで同期をとります。 そのようなオブジェクトが存在しない場合は、Collections.synchronizedList メソッドを使用してリストを「ラップ」する必要があります。 これは、リストへの偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。 List list = Collections.synchronizedList(new ArrayList(...));
323 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 03:07:49.08 ] >>322 マルチスレッドでadd()等の処理をするときに同期どれよというのはわかってけど まるで答えになってないよね?
324 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 03:15:37.97 ] The List Interface (The Java? Tutorials > Collections > Interfaces) docs.oracle.com/javase/tutorial/collections/interfaces/list.html Here's a nondestructive form of this idiom, which produces a third List consisting of the second list appended to the first. List<Type> list3 = new ArrayList<Type>(list1); list3.addAll(list2);
325 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 03:20:07.47 ] >>321 オブジェクト指向言語で抽象度の高い方向(スーパーセット)にキャストするのは問題ない ここら辺は個別に疑問を持つより基本を一通り知ってから考えた方がいいよ
326 名前:314 mailto:sage [2013/06/27(木) 03:41:15.24 ] >>324 そこじゃなくない?外国人が使っているよということを言いたいの?何が言いたいの? リンク先で、 同じオーダー中に同じ要素を含んだ二つのListが等しくなるってのはわかった。 で、equals書くならhashCodeも一緒に書けよっていう某本にも書いてるその辺にも強いことがわかった。 これが答え?
327 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 06:21:34.84 ] 外国・・・そうかなぁ? 個人的には>>320 に同意。 例えば適切な抽象度のインターフェイスが別にあるのにArrayListとかHashMapと いった実装クラスを引数として要求したり返値として返したりする公開メソッド を持つクラスに出会った場合は、とりあえずその品質を疑ってかかる。 いわゆる「臭う」コードのよくあるパターンだと思う。 内部変数にしても例えばArrayList使って抽象度を下げるとListのような抽象度の 高い引数を受けにくくなるので、こちらも普通はListを使うかな。 ある場所での型の抽象度の低さはコード中の他の場所に伝染するんだよね。
328 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 06:40:22.65 ] >>318 その理屈はおかしい JavaのListはランダムアクセスが効率的に行えることを保証しないので、 ランダムアクセスしたいならArrayListで受けなければならないということになってしまう いや意識してそういう理由でArrayListならそれでいいと思うけどね ジェネリクスでList,RandomAccessとする手もあるけど 内部でnewする変数にそこまでするのは現実的じゃないわな
329 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 06:56:02.07 ] >>325 ただしそれはオーバーライドがない時の話な オーバーライドされたメソッドがある場合は派生クラスが厳密に規約を守っているか確認しなければ規定クラスとして使ってはいけない オーバーライドしているとたやすくis aの関係が破壊される 規約を作れば良いというがその規約にバグがないことも規約が守られてることも保証することは難しく人の注意力に頼るしかない だからバグが量産される た
330 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 07:06:20.79 ] ListってまともにListIteratorで操作されてることは滅多にないよね ランダムアクセスのためのインターフェースとしなかったのはJavaの大失敗の一つ
331 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 12:01:34.71 ] List をランダムアクセスにしたら LinkedList が List じゃなくなるじゃないですか 名前的に紛らわしい
332 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 13:37:26.26 ] 予期せぬListの実装が引数に渡されたらどうなっちゃうの?
333 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 14:51:40.48 ] java.util.RandomAccessに代入可能かどうかで判定するのが 業界の慣習。一応。
334 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 15:20:23.50 ] String戻せば済むところをCharSequence返すメソッドは考えすぎだと思う。 メソッド引数としてはアリ
335 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 21:25:21.75 ] >>334 Androidの真似して かっこいいと勘違いしたんだろ
336 名前:デフォルトの名無しさん mailto:sage [2013/06/27(木) 23:59:50.59 ] StringBuilder返すところでホントはAppendable返したいのだが IOExceptionがじゃまなの…
337 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 01:16:49.31 ] >>331 .NETはまさにそうなってるね 名前的には残念なことになってるが設計としてはアレが正解だわ
338 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 01:20:26.99 ] >>329 その話、アップキャスト関係なくね?
339 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 03:30:45.63 ] private int a; private int b; private int c; public Constructor(int a, int b) { this.a = a; this.b = b; // 引数a, bできまるcはこう書くべきなのか c = a+ b; // こう書くべきなのか、どっちがいいですか? c = this.a + this.b; // やはり前者? }
340 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 03:40:28.29 ] >>339 前者にすべき。マルチスレッドに対応させる際に後者だと都合が悪い
341 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 04:03:42.53 ] >>340 把握しました
342 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 04:14:49.32 ] 横レスだけど 後者だとどう都合が悪いの?
343 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 07:05:24.68 ] 問題ないよ
344 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 07:30:16.62 ] >>340 最悪な回答だな
345 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 07:33:43.35 ] どっちでもいいだろ コンストラクターが完了するまでは オブジェクトの構築が終わってないんだから 他のメソッドに合わせてthisを使う必要はない
346 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 08:59:23.11 ] >>342-345 マルチスレッドにした場合は初期化中のオブジェクトにアクセスされる可能性がある。つまり this.a = a; this.b = b; // ここでthis.aやthis.bの値が別スレッドから更新される可能性もある c = a+ b; その結果「引数a, bできまるc」という仕様が満たされないことになる c = a+ b;なら別スレッドから何かされても仕様は満たされるが、 c = this.a + this.b;にした場合は、初期化中のオブジェクトが外部に公開されて this.aやthis.bが変更される危険がないかConstructorクラス全体を調べなければならない どちらの方が安全にコーディングできるか考えれば答えは明らかだよね
347 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 10:30:31.07 ] >>346 Java言語仕様読み直せ
348 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 10:36:23.41 ] >>339 コメントに沿った実装という意味では前者だな。 意味的にも前者のほうがいいんじゃなかろうか、そのコード片だけでは判断できんけど。 結果はどっちも変わらん。
349 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 10:41:16.57 ] cが引数a,bから決まるのでなくメンバのa,bから決まる値の場合は・・?
350 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 10:48:00.80 ] どこで>>346 みたいな知識を仕入れたのか気になるんですが... 検証の仕方も思い浮かびません...
351 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 10:50:51.90 ] コンストラクタってスレッドセーフじゃないん?
352 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 10:51:08.41 ] >>349 その場合はそりゃ後者だろう。
353 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 10:52:26.29 ] The Java? Tutorials docs.oracle.com/javase/tutorial/ JAVA覚えようぜ
354 名前:デフォルトの名無しさん [2013/06/28(金) 11:37:29.87 ] >>346 の謎解きをするスレはここですか? >初期化中のオブジェクトが外部に公開 コンストラクタで外部にthis参照が逸出するときのことを言ってるんだろう。 ふつう、コンストラクタはthis参照を外部に公開しないように実装するものなんで、 そういう状況になること事態が実装上の不備だと思う。拙者そう思う。
355 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 12:26:37.11 ] コンストラクターがマルチスレッドって ただのコーディングミスだろ
356 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 12:43:30.30 ] >>354 でもそれだとマルチスレッド関係ないよな...
357 名前:354 [2013/06/28(金) 12:50:39.56 ] >>356 俺はマルチスレッドの話をしたつもりだったんだが、お前はなんで俺の話がマルチスレッドと関係ないと思うの?
358 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 13:15:22.64 ] double checked locking 問題ではコード読んだ時の直感に反して コンストラクタ完了前に参照漏洩してたりしたからなぁ。 あの手の問題あるとチェックしきれん。
359 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 14:28:50.08 ] >>357 シングルスレッドでも逸出させられる
360 名前:デフォルトの名無しさん [2013/06/28(金) 14:38:54.68 ] B木を実現するjavaプログラム、難しいけどわかる人いますか?
361 名前:桃白白 ◆9Jro6YFwm650 [2013/06/28(金) 14:45:17.44 ] >>360 桃白白わかるよ。
362 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 15:01:04.41 ] スレッドAが生成した新オブジェクトを ロック無しで確実にスレッドBに届ける方法は無く、 スレッドAがロックすれば確実に初期化された新オブジェクトが 全スレッド間で共有されてしまうので 正直 ど う で も い い
363 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 15:04:35.49 ] 自分も前者がいいな。10文字少ないので。
364 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 15:06:40.22 ] >>361 すみません、教えてください。
365 名前:桃白白 ◆9Jro6YFwm650 [2013/06/28(金) 15:09:21.89 ] >>364 B木のなにを知りたい?アルゴリズム?インプリメンテーション? 値を追加するところ?値を削除するところ?値を検索するところ? どのあたり?
366 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 15:15:09.70 ] >>350-351 TSM01-J. オブジェクトの構築時にthis参照を逸出させない https://www.jpcert.or.jp/java-rules/tsm01-j.html
367 名前:デフォルトの名無しさん [2013/06/28(金) 15:16:16.75 ] >>365 値の追加、検索、削除が出来ればOKです 初めに任意で最大の子の数を入力する所から始めたいです
368 名前:桃白白 ◆9Jro6YFwm650 [2013/06/28(金) 15:34:04.09 ] >>367 コード欲しいってことね。 桃白白もいくつかコード眺めてみたけど、奥村さんのコードが一番きれいだと思う。 『Javaによるアルゴリズム事典』サポートページ oku.edu.mie-u.ac.jp/~okumura/java-algo/
369 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 15:50:38.71 ] >>368 ここに置いてあるzipファイルの中の「BTree.java」ですよね? ありがとうございます!これを参考にします。
370 名前:桃白白 ◆9Jro6YFwm650 [2013/06/28(金) 15:55:43.37 ] >>369 はい、それです。
371 名前:デフォルトの名無しさん [2013/06/28(金) 20:15:07.51 ] JavaScriptは板違い ローカルルール読んでこいよ異常者共
372 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 20:39:57.59 ] 自作クラスの感想などを頂きたいのですが、スレ違いでしょうか?
373 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 20:42:02.65 ] 相談のうちには入る…のかなあ
374 名前:桃白白 ◆9Jro6YFwm650 [2013/06/28(金) 20:49:48.68 ] >>372 いんじゃないの。書いちゃいなよ。
375 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 21:26:55.04 ] >>374 自分のコードの感想言われたらファビョる奴が良く言うよ
376 名前:372 mailto:sage [2013/06/28(金) 21:27:03.75 ] ソースファイルが6つあるので、こちらにアップしていて遅くなりました。 ttp://sourceforge.jp/users/soremachi/pf/TokenTable/wiki/FrontPage/attach/tokenTable.zip コーディングを補助する目的で作った文字列テーブルです。2ヶ月ほど前にJavaの勉強も兼ねて作りました。 (「TableTest.java」にとりあえずの使い方が書いてあります)
377 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 21:32:12.78 ] おまいらIdeoneぐらい教えたれよ
378 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 21:32:33.32 ] sourceforgeねぇ
379 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 21:48:31.18 ] >>376 System.out.println( "Table file : ファイル名を指定してください" ); return false; のようなものは throw new IllegalArgumentException( "Table file : ファイル名を指定してください" ); のようにしておけ false 返しても結局戻り値チェックしないんだし、エラーを無視して実行を続けるより死ぬ方がいい 特別に理由があって死にたくないときは try catch すればいい
380 名前:372 mailto:sage [2013/06/28(金) 22:04:25.51 ] Ideoneにも上げました。Sourceforgeの方は消したいと思います。 ttp://ideone.com/IKjued ttp://ideone.com/1IQ5G5 ttp://ideone.com/zOJYVA ttp://ideone.com/7TUxdz ttp://ideone.com/1kuWqV ttp://ideone.com/9MOKz4 ttp://ideone.com/4QEy30
381 名前:デフォルトの名無しさん [2013/06/28(金) 22:08:09.94 ] ideoneやcodepadは英語サイトだから利用規約や制限事項や禁止事項がわからないし、利用料金や支払い方法もわからん
382 名前:372 mailto:sage [2013/06/28(金) 22:32:42.03 ] >>379 わかりました。 引数のチェックでは throw new IllegalArgumentException を使うのが一般的なんですか?
383 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 23:49:28.98 ] メソッドのコメントに //- こういうの流行ってんの?
384 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 01:37:41.96 ] 一個目のファイルしかみてないけど、Javaな人はあれみて何も思わないの? 俺、すげー気持ち悪いんだけど。 setHead, setPrimary, set, file、全部キモい。 addとかappendとかkeyとかindexとかcolumnとかpush_backとかなんかそんな概念じゃないのか? まあ、かろうじてinsertはありなのかもしれないが。
385 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 01:42:53.74 ] あと、列データとかtokenとか、一体どこ経由でこのコードにたどり着いたんだ?
386 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 02:51:57.69 ] 突っ込みどころが多すぎる 列を追加してるのにsetHeadというメソッド addだろ 標準出力するだけのクラス tableを受け取るメソッドかtoStringに書けばいい トリッキーなgetterとsetter 座標指定で十分 同一パッケージから直接変更し放題のフィールド 大事な値をうっかり壊しちゃうかもよ 何でもpublicメソッド エラーメッセージとか外から呼び出すの? 別のクラスに投げるだけなら直接呼び出せ ファイルが閉じられない可能性がある Exceptionでキャッチすんな ...
387 名前:372 mailto:sage [2013/06/29(土) 03:00:41.42 ] >>384-385 insertは、なぜありなんでしょうか?Javaというか、オブジェクト指向に触れて3ヶ月ほどなので、 その概念というのがちょっとわからないです・・・。メソッドの持つ役割とかですか? 列データやtokenなどは、いい加減に書いてしまいました。 ArrayListを入れ子にしているので、行列のフィールドに対するコメント文です。
388 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 05:13:45.52 ] >>387 慣用的に使われる用語とその組み合わせというのがあって、大抵それは求めれば他のソフトウェア 技術や数学用語にちゃんと由来が見つかる。 例えばデータ構造として表(table)という名前を使うのであれば列(column)や属性(attribute)、 行(row)やタプル(tuple)という言葉と組で使うのが慣用的。これらの用語は関係データベースの 世界に由来の一端(全てではない)があって、この世界ではrelation・attribute・ tupleかtable・ column・rowの組で使う(厳密にはこの二つの組は異なる概念なので混ぜるのも良くない)。 あとPrimary、これも元々関係データベースから来た用語だけど、数ある候補キーの中から一つ を選んで主キー(primary key)とするのであって、PrimaryKeyならともかくPrimaryだけでは 意味をなしていない。無難なのはKeyColumnかな。 操作に関してもtableにinsertとはおぉDB的だなぁと思ったらsetと出てきてずっこける。 DB的にupdateとするとややずっこけ感は少ない気がする。 setHeadは三重の意味で良くない。一つは上記の通りheadという名前。二つ目は列の「追加」 なのにsetという用語を使っていること。最後にsetHeadというメソッド名はJava Beansの 規約でtableのheadプロパティの値をセットするメソッドに使う必要があること。
389 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 05:45:43.21 ] 要約:クラス設計がレビューされていないような品質
390 名前:384 mailto:sage [2013/06/29(土) 07:41:48.98 ] >>388 あまりにアレ過ぎて言語化できなかったんだけど、すっきりしたよ。ありがとう。 俺、Javaは初心者なんだけど、Javaな世界ではあんな感じが普通なのかと思ったよ。 誰も何も言わないから。
391 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 08:25:23.88 ] 名付け規約に準ずるのは当然だが、 あまりにしつこい社会主義のようだと、せっかくの創造性がつぶれる もともと日本人には発想性がある人が少ないのに、さらに減ってしまう ジャワみたいにばかみたいに長い名前をつけるのもどうかと思うがな コンパイル後も短いシンボルになってないので、実行時の翻訳にムダな時間がかかる処理系もあるだろう
392 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 08:58:37.24 ] 今のところコード品質に関する指摘は>>386 だけだな 他は識別子の名前についてガヤガヤ言ってるだけで特に耳を傾ける必要はない コーディング規約読めばそれで理解できる話だし
393 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 12:47:46.80 ] 包含関係がしっかりしていれば長い名前空間も苦にはならないが、そうなっていない StringとStringBufferの区別は本当に必要なのか、とか
394 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 12:52:19.11 ] なるほど、不変オブジェクトだけで十分、と。
395 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 12:56:03.85 ] 可変オブジェクトだけで十分、っていう意味かもしれないじゃない
396 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 14:25:16.00 ] >>392 名前超大事
397 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 15:39:30.97 ] >>396 チーム開発なのか個人開発なのか ライブラリとして提供するのか 色々シーンあるだろ。個人開発なのに名付け規則に神経すり減らすのはエネルギーの無駄
398 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 15:48:00.90 ] 名前に神経すり減らすんじゃなくて >>397 みたいな奴が妥当な名前を付けられないってだけ
399 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 16:56:30.39 ] 会社の歯車がプログラムの歯車をつくるような環境って事か それは自由がないわな かわいそうだな...
400 名前:372 mailto:sage [2013/06/29(土) 17:19:07.84 ] >>386 別のクラスに投げるだけなら、といのは、ファイル入出力や画面への出力は、 同じクラスにメソッドとして持たせるという意味合いで合ってますか? それとも、ひとつのJavaファイル内に複数のクラスを書くということでしょうか? 何でもpublicメソッドなのは、正直、アクセス修飾子の使い方をわかっていませんでした。
401 名前:372 mailto:sage [2013/06/29(土) 17:58:10.67 ] >>388 知りませんでした。メソッド名は (setHead -> add)、(setPrimary -> setKeyColumn)、(set -> update)、(get -> select) こういう風にすればいいですか?
402 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 17:59:31.16 ] > 正直、アクセス修飾子の使い方をわかっていませんでした ( ゚д゚ )
403 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 18:52:47.47 ] そもそも、コンセプトとして、いわゆるDBのテーブルを想定しているのか、Excelのシート、つまり 二次元のデータの入れ物を想定しているのかがわからない。 そういう意図を表明するという意味で、名前重要。
404 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 18:59:40.27 ] 命名規則に話が集中しているのはそこがあまりにタコだと実装のレビューをしようにも読む方が 無駄な努力を強いられて嫌になるから。Tableクラスだけでもなかなかの忍耐が必要。 一人で書き捨てするコードならともかく、人に読んで貰うなら命名規則や慣用は要尊重。 無知を言い訳したオリジナリティーの発揮は単に有害。初心者こそ模倣から始めるべき。 ・適切なクラス名やメソッド名が解らないのであれば既存のライブラリのAPIから似たような ことをしているクラスやメソッドの名前を探して真似をする。 ・適切なコメントの付け方が解らないのであれば既存のライブラリのソースコードを調べて (クラス名に.javaとつけてググればいくらでもヒットする)真似をする。JavaにはJavaDoc 形式というコメントの付け方が定義されていて、これ以外の独自コメント形式は単に迷惑。 ・適切な変数名が解らなければ既存のライブラリのソースコードを調べて(以下略) 解らなければまず調べよう。 初学者ほど何故か調べない、真似をしない、コンパイル時のエラーメッセージも読まない不思議。
405 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:03:01.06 ] クラス定義時の一般論として ・フィールドは基本private。さらにfinalに出来ないか検討する。Tableのtableなんかは finalに出来る。finalではないpublicは御法度。protectedも慎重に。 ・フィールドの型は特別な事情が無い限りHashMapといった実装クラス名よりもMapと いうインターフェイスを用いた方が一般的に設計の抽象度が上がって実装に柔軟性が出る。 ・データの重複はバグの温床なので避ける。例えばrow_no、row_sizeなんてフィールドが 用意されているけれども、table.size()等で代用できないか検討する。パフォーマンス? それは素直で安全な実装で大敗してから考えるべき。 ・特別な事情がない限りファイルIOは直接手作りしない。例えばTableクラスの場合は write(DataOutput out)、readFields(DataInput in)というDataInput、Outputを使って 読み書きするメソッドを用意するのがお薦め。これだけでTableクラスをファイルに保存 することも、ネット経由で投げることも、Hadoopでビックデータ解析(笑)にも使える。 あるいはJAXBやJacksonを使ってXMLやJSONへマッピングする方法を検討する。 続く。
406 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:05:40.12 ] Tableクラスに関するとりあえずのコメントとして ・カラムの型や名前をバラバラのMapで管理しているのはあまり良くない。素直にカラムの 定義を扱うTableの内部クラスを用意して、 public static class Column{public final int index; public final String name; public final String type;} これのリストをスキーマとして定義する。必要であればルックアップテーブルも。 private final List<Column> schema = new ArrayList<Column>(); private final Map<String, Column> nameToColumn = new HashMap ... スキーマ情報を提供する公開メソッドも用意すると親切だよね。 public List<Column> getSchema() {return Collections.unmodifiableList(schema);} public List<Column> getColumn(int index) {return schema.get(index);} public List<Column> getColumn(String name) {return nameToColumn,get(name);} ・検索結果に一個結果を追加する度にサイズを+1した配列を生成して内容を全件コピーする 凄いコードを見たような気がするのは気のせいだよね・・・素直に可変長であるList を使うべき。返値もListで良い。 ・for(int i...)ではなく拡張for構文を使ってくれた方が読みやすい ・・・この調子で書いていくとどうなるのだろう・・・
407 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:15:00.14 ] お前のレスを読むにもかなりの忍耐が必要
408 名前:372 mailto:sage [2013/06/29(土) 19:31:53.15 ] >>406 スキーマって何ですか?
409 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:56:44.17 ] 自分で調べてから質問しろ
410 名前:デフォルトの名無しさん [2013/06/29(土) 19:58:21.58 ] >>408 構造の定義のことでしょ。 >>406 のコードでは列情報のことっすね。いまTableにはこの列がありまっせーていう情報。
411 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:58:31.40 ] >>408 スキーマとは構造のこと。テーブルのスキーマはテーブルの構造のこと。 テーブルのスキーマは一般的には列の定義の集合で、個々の列は名前や型を持つ。 テーブルの構造をスキーマと呼ぶ一方で、具体的なデータが入ったテーブルその ものはインスタンスと呼ぶ。スキーマとインスタンスもDBの世界で使われる言葉。 なのでDBの素養のある人であればtable.getSchema()がカラム定義のリストを返す のは簡単に想像出来る。これが命名規約や慣用の強み。 ただschemaに関しては素直にcolumnList、getColumnListでも良いかもね。 というかこれ以上現状のコードをレビューをするのもしんどいので、一度自分で 色々調べ直して書き直したコードと共に出直してくれないかな。
412 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 20:05:52.52 ] どんな勉強したらこんなに酷くなるの? 参考にしたものがどうしようもないゴミか、372が変な方向に理解しちゃったの? ちょっとjavax.swing.table.DefaultTableModelを見てみなよ
413 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 22:07:32.53 ] どんなレスを期待してコードを見てくれと言ってるのかわからないが、メソッド名を言われた通りに変えればOK 的なレベルに達してないから。
414 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 22:20:15.32 ] 詳細設計書なんていらんだろ派がこの板には多いと思うが、こういうコードを見れば 必要な場合もあるということがわかるはず。
415 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 22:34:56.88 ] >>414 こういうコードを見ても設計何ソレ なのがJAVAドカタの真髄
416 名前:デフォルトの名無しさん [2013/06/30(日) 00:49:17.69 ] Windowsで無料でJavaを勉強出来る開発環境を教えて下さい
417 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 01:12:40.42 ] JDK + テキストエディタ
418 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 01:23:16.55 ] いるんだよなこういうジジイ発想の奴が Eclipseと答えるのがまっとうな人間
419 名前:372 mailto:sage [2013/06/30(日) 02:14:52.38 ] みなさまのアドバイスを参考に書き直してみました ご指導よろしくお願いします mainクラス ideone.com/paGek6 Tableクラス ideone.com/vLUKre Columnクラス ideone.com/IdrclV
420 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 02:20:15.16 ] >table.getAttribute(j) これはKUSOコード
421 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 02:37:58.18 ] クソと言うなら理由も書け
422 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 02:49:23.64 ] ちゃんと差分を見てあげようよw 初めのに比べたら随分スッキリした。 その分随分機能も削られているけど。 ・Columnがattributeを持つのは変。意味的にここはnameだと思う。 ・せっかくColumnをimmutable(変更不可能)なオブジェクトとして定義しているのに tableにgetTypeやgetAttributeを用意しているのは勿体ない。getColumnで直接 Columnオブジェクトを渡して無問題。table.getColumn(index).getType()みたい に使える。 ・コンストラクタにColumnの配列を渡すようにしたのは好判断だと思う。 後からColumnを追加出来ないようにするだけで他の部分のロジックが単純になる。 ・ただ内部的にはColumnsは配列ではなくListで持っていた方が色々と具合が良い。 Javaの配列はimmutableに出来ない。なので例えば現状のgetAllColumnsはこれを 使って個々のColumnを差し替えることが出来るので安全ではない。 さらにコンストラクタ引数に渡したColumnsの配列は防御的コピーをすべき。 private final List<Column> columnsとして、コンストラクタで this.columns = Collections.unmodifiableList(new ArrayList<Column>(Arrays.asList(columns))); とでもしておくと良い。getAllColumnsでcolumnsをそのままreturnしても無問題。 ・細かいことだけどコンストラクタはTable(Column... columns)の方が使い勝手が良い。 new Table(new Column(...), new Column(...))も、現状通りColumn[] columns = ... としてnew Table(columns)とする使い方も両方使える。 ・insertで入力値の型チェックも実装すると素敵だと思う。 この調子で行くとよいんじゃないのかな。
423 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 02:57:42.08 ] 最初のコードに比べたらだいぶマシになったな 入門以前レベルから初心者レベルまで話が進んだ
424 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 03:03:45.80 ] > getAllRecords Listの中身を全件配列にコピーする、そんな定番処理は手作りするまえにAPIと して用意されていないか調べるべきだろうね。もちろん存在する。 ListのtoArrayメソッドの使い方を調べてみると良いと思う。
425 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 03:09:50.58 ] > public final void insert(final Object... record) { finalに出来ないか検討するっていうレスがあったけどここまでする必要ない classにfinalついてるからメソッドのfinalは全部無意味 サブクラス作れないからオーバーライドできないもん 仮引数のfinalはあってもいいけど > for (int i = 0; i < table.getAllRecords().length; i++){ 繰り返しの度に時間がかかるメソッドが呼ばれるけどいいの?
426 名前:372 mailto:sage [2013/06/30(日) 03:31:24.30 ] >>403 DBへの問い合わせ文をメソッドに、データ構造をListにしてみよう、と思って最初は書いていました。 >>404-406 ,410,411 JavaDoc形式のコメント、クラス定義時の一般論や、DataOutput, DataInputのインタフェースやスキーマの利用方法、知りませんでした。 レビューを参考にして、色々調べ直してから出直します。コードをレビューして頂いて自分の無知がよくわかりました。ありがとうございます。 >>412 なにも参考にしないで、自分の欲しい機能を追加していきました。 あと、スレの流れ的に言いにくいのですが、>>408 ,>>419 は、私ではありません。 このレスを書いていて発言する機会を失ってしまいました・・・。
427 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 03:31:57.59 ] > getAllRecords 仕様をはっきりさせるべきだろうね。今のコードでは確かに新しいレコードの 追加は出来ないけれども、個々のレコードの中の値の書き換えは出来る。 シャローコピーだから。それが嫌ならディープコピーを実装するしかない。 ディープコピーまでは不要、書き換え可能は承知で単にレコードの集合を参照 可能にしたいだけなのであればやはり返値は配列ではなくListにして、 return Collections.unmodifiableList(records);とでもするのが実装も簡単 だし全件コピーに比べてオーバーヘッドも少ない。 mainの中のループもfor(Object[] record: table.getAllRecords()){ ...と でもした方が読みやすい。
428 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 03:36:18.89 ] なんだと〜
429 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 06:11:06.80 ] >>427 ここまでくると異常者だな
430 名前:420 mailto:sage [2013/06/30(日) 07:39:46.72 ] >>421 getAttributeはテーブルクラスのメソッド名として不適切 100歩譲ってgetColumnAttributeなら可。 それにgetXxxx(index)はgetterと紛らわしい
431 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 08:49:45.89 ] getColumnAttribute 冗長な名前使っていてイライラせん? getColAttr じゃいけん?
432 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 09:12:00.03 ] >>431 そういう省略は好まれない。人によって省略したりしかかったり、またどう省略するかがまちまちだと困る。 スペルアウトするのが原則。
433 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 09:31:36.34 ] >>432 誰が好まん?
434 名前:デフォルトの名無しさん [2013/06/30(日) 09:45:57.18 ] >>433 コード読む人だろ。ColがColorなのかどうなのか定かじゃないだろ。 そんなとこでケチケチするちんけなやつのコードなんて見たくないってことだ。
435 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 09:47:19.17 ] コンストラクタでIO使うのが常識なのか? init(入力ストリーム)ってメソッド作ったら初期化はコンストラクタでやれ コンストラクタで読み込むようににしろって先生に怒られた
436 名前:デフォルトの名無しさん [2013/06/30(日) 09:48:47.57 ] >>435 むしろ非常識でござろうな。IOExceptionをどう処理するつもりなんだ。
437 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 09:51:53.93 ] >>434 >>そんなとこでケチケチするちんけなやつのコードなんて見たくないってことだ。 さすがジャバラー(笑) 冗長な名前はムダなんだけどなぁ バイトコードを解析した事ある?(笑)
438 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:05:05.10 ] >>432 >そういう省略は好まれない ところでprintlnとconcatはどう思いますか?
439 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:13:11.98 ] >>435 >init(入力ストリーム)ってメソッド作ったら コンストラクターが終わるとオブジェクトは構築されたと見なされる。 initを呼び出す前の状態が、クラス名の概念を表すオブジェクトとして適切かどうかによる。 >>436 コンストラクターでIOExceptionが出ると困るとか どれだけジャバドカタは低脳なんだ。
440 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:35:01.08 ] >>439 >>initを呼び出す前の状態が、クラス名の概念を表すオブジェクトとして適切かどうかによる どういう意味?
441 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:46:01.05 ] 例外処理を当たり前に使うような手合いにはIO例外は外で受ければいいので気にならないんだろう C言語の感覚が強い人はエラーは戻り値で判断するようにしたくなる 例外は文脈が吹っ飛ぶのであまり論理的でないしな コンストラクタ内例外はnewの失敗としては検出できないのでそりゃ躊躇したくもなるだろう
442 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:55:32.68 ] >>438 組み込みメソッド名の中には、そういう歴史的な理由経緯の省略がある場合があるが、それはそういうものだと 理解するしかない。 そういうメソッド名を自分が作るクラスに使うのはOKだと思うが、複合名詞を自分のセンスで省略するのは 好まれない。特に、Javaの世界では、スペルアウトするのが好まれる。なぜそうなのかは知らないが、 Javaのネーミングの規範として、スペルアウトしろと言われるのを良く見かける。
443 名前:440 mailto:sage [2013/06/30(日) 10:59:52.32 ] >>441 例えば編集可能な文字列クラス(OreString)を自作したとする。 new直後は中身のデータも文字列の長さも未定義で、 initして初めて長さ0の文字列になるとする。 initする前は「文字列」の概念として不完全な存在だから OreStringというオブジェクトは成り立っておらず、 この設計はおかしい。 この場合、OreStringContextとかOreStringDataとか いうクラス名にするか、 コンストラクターでOreStringを適切な初期状態にする。
444 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:00:32.03 ] Javaは常にTAB一段分のハンデがあるから長い名前は厳しいな
445 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:02:43.78 ] >例外は文脈が吹っ飛ぶのであまり論理的でない ジャバドカタは本当に頭が悪いな。
446 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:06:29.48 ] ここで>>445 に論理的な例外を説明する義務が発生しました ・逃げる ・説明する ・SAVE
447 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:08:53.55 ] ・ギムアップする
448 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:25:27.19 ] >>446 例外は「やりたいことが最後まできちんとできた」か 「やるべきことが全うできなかった」の二つしかない。 後者はcatchハンドラでまとめてエラー処理する。 極めて論理的じゃないか。
449 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:33:48.08 ] スペルアウトってなに? スキルアウトの親戚?
450 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:39:39.18 ] コンストラクタで例外はともかくIOは気持ち悪い インスタンスの構築とデータの読み込みは論理的に別の処理だからコードの上でも分けて欲しい
451 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:42:50.37 ] >インスタンスの構築とデータの読み込みは論理的に別の処理 それはクラスを「処理をするためのデータの集合」 としかとらえられない老害の発想だよ >449 精液を放出することです
452 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:54:24.81 ] >>448 try-catchで囲まれた処理が ( A, B, C, ......, J ) と構成されている やりたいことが最後まできちんとできたなら、全てのA-Jは成功している やるべきことが全うできなかった場合を NOT( A, B, C, ......, J ) とすると、君ならA-Jのどれが問題となる処理なのかをどう決定するか そしてそれをcatchに書くことに気持ち悪さはないのか 途中でやめ!で済まされるほど簡単な処理で構成されてるとは限らないんだよ
453 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:03:53.36 ] >>452 >A-Jのどれが問題となる処理なのかをどう決定するか 別のエラー処理をしたいなら A-Jごとにtry-catchすべき
454 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:15:13.20 ] try-with-resource使ってライーしてれば あんま場合分けはいらないけどね。 tryだけ書いてcatchは書かないとかよくやる。
455 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:49:01.53 ] 話が良く見えないが、コンストラクタの引数にストリームを渡すのじゃ駄目なのか?
456 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:55:52.91 ] >>445 ドカタは例外を理解できないのでだめ。 ↓ こんな感じ X x = new X(); try { x.init(sutoriimu); } catch (Exception ex) {//catchしないとコンパイルエラー log.error(ex); }
457 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:56:42.05 ] おっと>>455 の誤りでした、すみません。
458 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 13:10:00.67 ] コンストラクタにストリームは継承した時に不便かな ファイルふたつに分けなきゃならんのはめんどくさい
459 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 13:34:19.39 ] DI或いはそれに類する仕組みを使え
460 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 15:37:48.80 ] IOExceptionが出るような処理を static { } イニシャライザ内に書いて欲しくないよなー リソース読み込みなら、まあ譲歩してもいいんだけどさー。
461 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 18:29:51.29 ] >>437 インスタンス名、クラス名、メソッド名は簡略化して短くすることは推奨されていませんよ。 ましてや、インスタンス名はクラス名より短くする必要はないと公式に書いているよ。 もう少しよく使われているオープンソースであったりを読んだ方がいいと思います。 上げられたコードでもっというなれば、 getAllRecords()ではなくて getRecordsAll()ですね〜。 確かに細かいことかもしれないけれど、デザイパターン等しっかり学んでいる人から見ると 「インスタンス名、クラス名、メソッド名等の暗黙の了解・空気」等を感じ取れていないコードは稚拙に見えるのではないかな。 そしてそんなに難しく考えなくても、英語の強みをいかせるように書けばすんなり型にはめられますよ。 例えば、「getAllRecords()」は動詞と目的語が遠いですよね? 今回はたった三つの語の組み合わせなので大したこと無いように感じますが、後ろから修飾していないことに違和感を感じる人は多いと思いますよ。 日本語は頭でっかちに書いた方が美しいですが、英語だと・・・?
462 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 18:31:12.65 ] もちろん変数名等も。 連投失礼しました。
463 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:47:32.41 ] "get all records"と"get records all"をぐぐると・・・
464 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:48:40.12 ] ローカル変数までダラダラ長く書くやつは信用出来ない 経験的に数学出来ないタイプの人間が多い
465 名前:461 mailto:sage [2013/06/30(日) 19:52:11.80 ] ttp://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-tutorials-419421.html ここで入手できるJavaSE6のtutorialの、 [Language Basics]→[Variables]→[Naming]では次のように書かれています。 "When choosing a name for your variables, use full words instead of cryptic abbreviations." 続けて読み進めると、 [Classes and Objects]→[Classes]→[Declaring Member Variables]→[Variable Names]では、 "All variables, whether they are fields, local variables, or parameters, follow the same naming rules ...(略)" と、さらに念押ししてわざわざ最初で触れた[Naming]の項まで飛べるようにまでなっています。 次に、[Defining Methods]→[Naming a Method]では "By convention, method names should be a verb in lowercase or a multi-word name that begins with a verb in lowercase, followed by adjectives, nouns, etc." となっており、先ほどの「getRecordsAll()」に「おや?」っと感じた人はいるかも。 で、この辺りが読むべき空気であると思います。(ttp://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-tutorials-419421.html あと、例えばA,B,Cのシーンクラスがあったとしたら、 SceneA SceneB SceneC のようにA,B,Cを後ろに書くことでOS等がもつ名前順に並び替える機能を活かせます。 もっというと、それぞれがSceneクラスを継承したものであったら、名前順に並び替えるとsuperであるSceneクラスが一番上に来て最高です。 ソースコードが綺麗な人は当たり前のようにやっていたりいなかったり。。。 何はともあれ、ネーミングを短くしちゃう行為は公式で推奨されていませんよ。(しかも言語の基礎としてそれが書かれている・・。) >>464 タイムリーなレスサンクス。勿論ローカル変数に関してもです。
466 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:52:47.27 ] ググったけど、get records allとか言ってる奴皆無なんだけど。 ググり方が悪いのか?
467 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:58:12.68 ] 公式がいつも正しいとは限らない 特にjavaは各方面からボコボコに叩かれるぐらい洗練されてない言語 当然公式が間違えるのは前提として考えるべき
468 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:59:36.87 ] もう名前の話はどうでもいいので Iterable 実装してください
469 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 20:05:12.08 ] >>466 それは後ろにAll置くなら単数系のが合うからかと。証拠にググると皆無ではないよ。 それでも少ないのはプログラムの処理より普段使われている慣用句的に名付けてる人が多いから。 プログラムの意味的にはAllが後ろで単数系のほうがニュアンスとして正しいのでは?
470 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 20:17:26.52 ] そういや一時期JFrameのgetContentPane()メソッドに疑問もってた なぜJPanelはlまでしっかり書いてるのにgetContentPane()はlを省略しちゃったのさ!って 後ほどpane自体で別の意味があることを知りなるほどと思った
471 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 20:25:02.10 ] >>470 そんなの考えるまでもなく一瞬で理解できるだろ…w
472 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 20:44:30.18 ] 冗長なシンボル使ってると 自分がバカになった気がする
473 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:03:48.12 ] >>471 英単語自信あったのにpaneなんて単語にこれまで出会わなかった eclipseかbeans使ってりゃ冗長でも苦だとは感じないかな オートコンプリートあるし WIN32APIのような引数なら長い方が俺はましに感じる
474 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:06:13.45 ] 英語に自信があると専門用語も詳しいとか どれだけ自惚れが激しいんだ
475 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:16:29.85 ] 自分の好みを人に押し付けてると 自分がバカになった気がする
476 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:25:13.97 ] スコープをちゃんと短くすれば変数の名前は頭文字や略称で十分 長い識別子かかなきゃわからないならそれは悪いコードになっている証拠
477 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:48:50.90 ] 人はそれをコミュ障コードと呼ぶ 名をごまかし人目を避けることで何やってるかわからないようにしてごまかす 昨今のオープンソースやJavaの特性とは真逆 反抗したい精神・素直になれない精神はもはや中二病の延長ですまされるかなあ
478 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 22:09:39.61 ] カウンターはcountでなくcuntの4文字で おながいします
479 名前:デフォルトの名無しさん [2013/06/30(日) 22:11:50.85 ] >>478 なじぇ?
480 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 22:27:22.75 ] 本当に下品 神聖なるJavaを汚すと罰があたるぞ!
481 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 22:29:33.91 ] JAVAが神聖とか冗談でもキモい だが1996年頃はそんな奴が結構居た
482 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 22:45:55.23 ] Javaは、すみやかに普及した。その速度は、異常なくらいだった
483 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 23:21:17.27 ] >>418 CLASSPATH理解してなかったりするやついるくらいだから、まずはIDE使わない方が勉強にはなるんじゃないか。Javaのどこを勉強するかにもよるけど。
484 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 23:22:46.96 ] >>482 Java1.2くらいまでは、おもちゃ扱いじゃなかった?
485 名前:デフォルトの名無しさん mailto:java [2013/06/30(日) 23:36:57.83 ] てことはやはりJVMあたりから?
486 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 23:53:25.85 ] >>483 ドカタの過半数はclasspathを理解してないんだから 無問題
487 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 01:24:57.01 ] >>478 cntじゃないんだ
488 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 01:39:13.20 ] そこはJVMじゃなくてJITだろ
489 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 02:40:05.19 ] >>486 ドカタ目指すなら勉強は不要だろ。
490 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 02:51:13.36 ] 単語省略するときは、まず母音から削るかな
491 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 03:53:04.59 ] 省略するときは、適当な1文字にしてしまう
492 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 06:20:46.52 ] コントローラにSQLをコピペするだけの簡単な仕事です
493 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 12:25:53.06 ] 1文字変数が許されるのはIteratorとcatch節までだよねー
494 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 13:49:42.09 ] >>493 そうだな、あとはv1,v2...と二文字にするべきだな。
495 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 17:41:52.72 ] コントローラーにSQLってのがまさにドカタの発想だな struts使ったまではいいが、MVCの分離が 理解できなかった典型例
496 名前:デフォルトの名無しさん [2013/07/01(月) 17:46:12.19 ] mp4をmp3に変換する方法ってありませんか? ffmpegだと遅いのでこれ以外でお願いします
497 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 18:20:06.62 ] まず、エンコスレに逝きます
498 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 19:39:46.53 ] すみません文字列がsplitできるかできないかで判定するにはどうすればいいですか? 例えば String line = "go kyoto"; String verb = line.split(" ")[0]; String place = line.split(" ")[1]; のような場合は問題ないと思いますが、lineがsplitできる保証がないときの判定法が知りたいです。 例えばもしline="go";だった場合、 ArrayIndexOutOfBoundsExceptionがでます。 (スペース" "は無いけれど[0]のsplitはできている?どちらにせよsplitできないと[1]を指定した時点で例外でますよね。)
499 名前:デフォルトの名無しさん [2013/07/01(月) 19:40:31.44 ] >>497 エンコすれ行ってきます
500 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 19:54:55.93 ] >>498 splitが何を返すか見直してこい
501 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 19:57:45.50 ] >>498 String [ ] result = line.split(" "); してから result.lengthで判定だ。
502 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 20:34:33.81 ] コントローラーにガンガンなんでも入れちゃうのはむしろRailsでよくある症例だと思う。 ぶっちゃげRailsももはやドカタフレームワークだけど。
503 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 21:02:33.28 ] >>498 StringTokenizerを使う StringTokenizer st = new StringTokenizer(line, " "); if (st.countTokens()>=2) {//分割できる String verb = st.nextToken(); String place = st.nextToken(); }
504 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 21:20:10.24 ] indexOfでええやん いちいちオブジェクト作るなよ
505 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 21:32:56.21 ] Javaドカは作業ファイルを多用するので、その程度のコストは全く問題になりません
506 名前:デフォルトの名無しさん [2013/07/01(月) 23:27:57.25 ] 長大な文字列の極めて終端に近いところで最初の区切り文字が出てくる場合や最後まで区切り文字が出てこなかった場合 事前検索してからの分割はコスト的にどうなのだろうか
507 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 23:31:20.42 ] 気にするな パフォーマンスなんか土方には理解出来ない cを使えるようになってからパフォーマンスとか気にすればおけ
508 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 00:29:09.24 ] 土方仕事の実行時間はほぼ全てIOが占めるからね 細かいことはどうでもいいのよ
509 名前:デフォルトの名無しさん [2013/07/02(火) 09:17:43.72 ] \x2022 Windows Internet Explorer ブラウザを終了して続行しろと出て、全く先に進めません。 ブラウザは全部閉じています。 検索して調べたけど、「\x2022 Windows Internet Explorer」 について全然でてこなくてわかりません。 どうすればいいのですか? 環境はWIN7、IE10です。
510 名前:509 mailto:sage [2013/07/02(火) 09:21:19.56 ] 失礼しました。 アップデートが上手くいかないのです。
511 名前:509 mailto:sage [2013/07/02(火) 11:23:19.97 ] 再起動してから試しても、何度やっても途中「\x2022 Windows Internet Explorer 」 ブラウザを閉じろの繰返しだったのですが、先程すんなりと完了できました・・・。 設定など一切変更していないので、何が原因だったかわかりませんが とりあえず完了できたので、お騒がせしてすみませんでした。
512 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 11:40:05.59 ] 何のアップデートなのかも書けないとは 残念な奴だな
513 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 11:49:53.18 ] ごめんなさい、7 Update 21 から25へのアップデートでした。
514 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 12:14:40.58 ] windows 7のうぷだてとな
515 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 14:27:27.68 ] livedoor.blogimg.jp/news23vip/imgs/1/d/1dba13cc.jpg 何が悪いのこれ?
516 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 14:45:51.37 ] >>515 Cジジイの頭が悪い
517 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 16:53:55.65 ] と見せかけた関数型言語マニアなのかもしれない
518 名前:デフォルトの名無しさん [2013/07/02(火) 16:59:00.97 ] mp4とかの動画フォーマットからオーディオを抜き出せるライブラリってないですか?(mp4だけでもいいです) ググってもフリーソフトしか見つかりません
519 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 17:01:46.98 ] 便利なオープンソースやAPIを使えてwebに強いほうが良いに決まってるのに。 そして初めての言語がオブジェクト指向な方が得に決まっている
520 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 17:12:03.44 ] >>518 ffmpeg
521 名前:デフォルトの名無しさん [2013/07/02(火) 19:41:53.19 ] >>520 ちょっと見てみたけど遅いです 直接吸出しできるのってないですか?
522 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:27:02.82 ] >>521 まず、直接吸い出せるツールを見つけてこい
523 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:28:07.51 ] ICカードを扱う無料ライブラリありますか?
524 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:29:36.65 ] >>523 まず正しく質問できるだけの知識をつけてこい
525 名前:デフォルトの名無しさん [2013/07/02(火) 20:48:00.82 ] >>522 ffmpegで設定変えたら速くなりました ありがとうございました
526 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:49:03.13 ] >>523 業務用で住民基本大腸カードを扱うなら LASDECから入手が必用(C++)。 SuicaならたぶんC++向けAPIは提供されているだろう。 SmartOnなどの特定製品もSDKが販売されているだろう(たぶんc++)。 つまりお前のスキルでは無理。 それ以外のカードは無理ゲーに近いけど 意外とAndroidで探した方が行けるかも
527 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:55:36.79 ] ICカードは個人には仕様公開しないから働かないと使えないよ
528 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 21:05:10.74 ] >>527 何のICカードかにもよるが、個人で開発できるよ。
529 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 21:06:50.07 ] ICカードにJVM移植した「JavaCard」って、あれからどうなったの…
530 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 21:06:56.73 ] それはリバースエンジニアリングだろ 正式な仕様は非公開だよ
531 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 23:49:41.77 ] >>530 SDK買っても暗号化領域は読めないだろうし、そもそも書き込めない場合が多いだろう。 その意味では、法人でSDKを買っても仕様が全て公開されるわけではない。 逆に、個人でも見ることができる範囲でデータを読むことは出来る。
532 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 01:46:07.84 ] 質問を読めない回答者が多いね 「ICカードを扱う無料ライブラリありますか?」 って質問なんだから、仕様が公開とか非公開とか関係ない ライブラリがあるのかないのか答えろよ
533 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 06:05:15.69 ] >>532 ググれ馬鹿
534 名前:デフォルトの名無しさん [2013/07/03(水) 08:11:16.76 ] 今すぐ手軽にJavaでprintfで文字を表示させるレベルの簡単なプログラムを組みたいのですが Windowsで無料で最短の開発環境を教えて下さい
535 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 08:15:43.27 ] eclipse
536 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 08:27:43.69 ] NetBeansのが手間無しだろ
537 名前:デフォルトの名無しさん [2013/07/03(水) 09:01:31.78 ] 何度もごめん eclipseでC++でいう .cpp と main関数はどう作れば良い?
538 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 09:30:47.98 ] mainを作るチェックボックスをクリックする
539 名前:デフォルトの名無しさん [2013/07/03(水) 10:06:28.46 ] test って名前のプロジェクトを作って その中にパッケージを作って その中にmainって名前のクラスを作るところまでは分かったけど そこからが分からない main関数を作っただけじゃ実行出来ないの? 選択にはメイン型が含まれていません ってエラーが出る
540 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 10:08:11.70 ] main関数が入ったクラスを右クリックして実行ってすると 実行できるよ
541 名前:デフォルトの名無しさん [2013/07/03(水) 15:48:35.13 ] ごめん 自己解決した 付き合わせてすまない
542 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 16:12:25.57 ] ムッキー
543 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 19:12:27.97 ] メンバの外部からの読み取りはOK、変更は禁止。といった、publicとprotectedの間くらいの設定をしたいです 大量のクラスメンバに対する大量のgetterメソッドを作るのが無駄な気がするので・・・ みなさんどのように対応していますか?
544 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 19:14:44.88 ] 大量のgetterをIDEのプロパティ自動生成機能で作る 手打ちしなければ全く気にならない
545 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 19:26:45.85 ] なるほど、ありがとうございます。
546 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 19:28:22.05 ] アノテーションでgetterとかを自動生成するライブラリとかあった気がする 使ったこと無いけど
547 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 22:25:42.30 ] c++で言うとconst参照みたいなのはJavaには無いのですか?
548 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 22:26:59.50 ] 無い
549 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 22:27:50.00 ] ない イミュータブルなオブジェクトを使うとか 防御的コピーするとかしろ
550 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 06:23:06.78 ] Javaでデータベースを操作するアプリを作ってるのですが質問があります 毎日レコードが追加されるテーブルがあります このテーブルを最新の半年分の情報とそれ以前の情報で別のテーブルに分けて管理する設計って悪い設計ですか? 新しい情報と古い情報は同じサーバーにあり格納するテーブルだけが違います アクセスは新しい情報に集中します
551 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 06:47:00.49 ] >>550 あまり良い設計だとは思わないけど、実物見ないと何とも言えない。 アプリの形態はWeb? DBMSは何? 一日に何レコード追加されるの? 1レコードあたり、およびトータルのデータ量は? たぶん、適切なインデックスを張るとか、最近のデータだけmemcachedするとか、工夫の余地は色々あると思う。 あと、Javaよりもデータベースのスレで聞いた方かいいような。
552 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 06:53:07.50 ] DB板で聞くべき話だとは思うけどどのRDBMSを使っていてどんなスキーマでどんなクエリ を投げるのか解らないと誰もアドバイス出来ないと思う。 ただし一般論としては、そういうテーブル分割を手作りすると古いレコードの移動とか それに伴いアプリ側で生成するクエリを変更するとか、運用面で余計な手間やバグの 温床を抱えることが多い。RDBMSに詳しくない人が思いつきレベルで分けたのであれば 率直に言ってあまり関わりたくない、そういう設計。 まずはインデックスでどうにかならないか、あるいはシャーディングなどと呼ばれる 機能が使えないか調べることをお薦めする。
553 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 08:46:50.09 ] >>550 世の中にはOracleパーティショニングというものがあってだな つまり性能上テーブルは分けるけど概念的には同一 というのは普通にあると言うことだ
554 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 09:40:16.30 ] >>550 RDB論的には間違ってる(ことが大半だと思う)。んだけどもじゃあ絶対そんな実装しないかというとそんなこともない。 実際そういうの作ったことあるし、よく見かけもするねー。 理由はパフォーマンスだったり運用上やら他のシステムとの兼ね合いやら。 要は状況次第ってことなんであまり回答になってないんだけど。
555 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 10:24:46.16 ] データ保存期間が数年で、保存期間MAXになるとレコード数が1000万レコードを超えるような トランザクションデータの場合、年あるいは月によるパーティショニングか、 「直近のテーブル+それ以前のアーカイブテーブル」という構造にすることは良くある。
556 名前:デフォルトの名無しさん [2013/07/04(木) 10:43:24.31 ] abstractクラスのabstractメソッドの引数にenumを持たせたい場合 どういう設計をすればいいのでしょうか イメージ的にはenumを定義しないとコンパイルエラーになるようにしたい そしてenumの中身は継承先々で用意したいが、名は統一したい
557 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 15:29:12.90 ] abstractメソッドの引数にenumを与えたい、ただしどのenumクラスを使うかは 継承先に決めさせたい場合は普通にGenericsを使うかなぁ。 public abstract class AbstractSample<E extends Enum<E>> { public abstract void sampleMethod(E item); protected abstract Class<E> getEnumClass(); public void sampleMethod(String name){ sampleMethod(Enum.valueOf(getEnumClass(), name)); } public class Sample extends AbstractSample<Sample.MyEnum>{ public enum MyEnum{enum1, enum2, enum3} @Override protected Class<MyEnum> getEnumClass() {return MyEnum.class;} @Override public void sampleMethod(MyEnum item) {... getEnumClassは任意だけれども上記のようにString版のメソッドの実装も抽象 クラスで与えたいときなど便利。 > そしてenumの中身は継承先々で用意したいが、名は統一したい 「名は統一したい」というのがSample.MyEnumのように継承クラスでは必ず MyEnumというenumクラスを内部クラスとして宣言する、ということを強制する という意味なら多分無理。
558 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 17:37:45.07 ] >>557 abstractクラスのAクラスを継承したBクラス・Cクラス・・・内で private enum Foo { } を定義していないとコンパイルエラーにしたい(可能なら)というのと、 「名は統一したい」というのは、Fooという名を統一して中身を各クラスで別に用意したいという意味です。 Bクラスでは private enum Foo { BAR, BAZ } Cクラスでは private enum Foo { QUX, QUUX, CORGE } というようにです。普通こういう場合、単なるメソッドならばsuperクラスのAクラスで abstract protected void foo(); として、継承先で @Override private void foo() { } ですみますが、 abstract protected enum Foo; なんていうのは許されませんよね? となると、「Bクラス・Cクラス・・・でFooという名のenumを自分で定義する」というプログラムから離れた所にルールが生まれてしまいすこし嫌です(名がFooである保証がない?)。 可能ならば、このFooというenumをもたなくてはいけないことをsuperクラスで定義できないのかなと思って質問しました。
559 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 18:25:03.50 ] 設計が変なんじゃないの? enumは1つのファイルで作って使う値を全部列挙して 具象クラスでその値を使う時に無効な値をはじくようにしておけば? public enum Foo { BAR, BAZ, //Bクラスで有効 QUX, QUUX, CORGE, //Cクラスで有効 } abstract class A { abstract public boolean isValid(Foo item); }
560 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 19:21:41.88 ] >>559 そうなんです。そしてそう書いてました。 だけど、Cクラスで使うときにBクラスでしか使わないBAR,BAZが可視なのを何とかならないかなとおもいました
561 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 19:26:20.46 ] >>550 twitterがそんな感じの設計をしてるね 適当にぐぐって見つけた記事 www.atmarkit.co.jp/news/201004/19/twitter.html
562 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 19:49:13.77 ] Twitterが必要とする設計が遙かに小さいスケールでも有効かというと単にオーバーキルで 手間暇増えるだけだったり。 インデックス設計の評価やDBMS組み込みのパーティショニングを検討するに一票。
563 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 21:36:28.52 ] 年度別テーブルみたいなアプローチはインデックス貼るコストも安くなるからな JPAが対応したら面白いがOracleさん的には困るか
564 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 21:58:41.98 ] >>550 それは水平分割って技法。DB設計ではアンチパターンに含まれる。 レプリケーションやインデックス、その他もろもろ全ての「正しい」解決法を試して それでもパフォーマンスの問題が解決しなかった場合のみ使って良いというもの。
565 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 22:00:46.92 ] いつになったら板違いの話題をやめてくれるのかな
566 名前:デフォルトの名無しさん [2013/07/04(木) 22:03:54.36 ] >>565 Javaの話題あんの?ないんだったら黙ってろよ。
567 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 22:05:00.37 ] >>564 何言ってるんだ。 パーティショニングこそ水平分割だろうが。 それに、レプリケーションなんか関係ないし。
568 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 22:15:51.10 ] 半年分というのが、どういう機能要件なり性能要件に基づくものかがわからない限り、 どんなアドバイスも的はずれな可能性大なんだけど。
569 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 23:18:22.43 ] >>550 は悪い設計ですか? と聞いてるだけだから 満場一致で悪い設計です と答えて終わりじゃないか
570 名前:デフォルトの名無しさん [2013/07/04(木) 23:22:52.28 ] >>569 さすがコミュ障
571 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 00:02:14.86 ] 半端な知識と仕込みで手を出しても無駄に苦労するだけの悪い設計。
572 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 02:49:37.88 ] JDBCは単なるSQLインタプリタなので、 デザパタ的にあまりおもしろい設計はできない。 他のDBライブラリはしらん
573 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 02:52:43.37 ] >>572 またてけと〜なことを。
574 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 06:45:23.14 ] JDBCはSQLの中身には関知しませんよ クエリとデータを右から左、左から右へ流すだけ
575 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 07:37:50.03 ] SQLインタプリタになっているJDBCやドライバの実装がどれほどあることやら。
576 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 08:34:20.80 ] 「リレーショナルDBの世界がどうオブジェクト指向化されるんだろ」と JDBC発表にワクテカしてたのは俺だけか。 SQL文を文字列で用意する必要があると聞いてがっかりしたず 「Table」に相当する抽象クラスがJDBCに出てこないってどういうことよ
577 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 12:23:44.61 ] 実質スキーマレスになってしまうからじゃないか? それリレーショナルなん?
578 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 14:22:08.65 ] JDBCにODBC相当物以上を期待していた人なんていないでしょ。
579 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 15:17:22.42 ] あのころはオブジェクト至高(キリッじゃなくて write once run everywhereで売ってたような
580 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 16:40:31.36 ] >>576 O/Rマッピングすればいいだけだろ
581 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 02:30:46.99 ] >>576 言ってること目茶苦茶すぎ >>574 が言ってるように、受け流すだけを担ってこそオブジェクト指向だ おめぇさんはよぉ、銭湯いって風呂上がりのフルーツ牛乳が見当たらないからって キレちゃうような輩なのか? 俺はきれるけどね
582 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 02:32:58.87 ] ただ、キレる相手は番台さんじゃねーってこった
583 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 02:34:00.46 ] javaee7にlinq入ったんだってね コレクションだけらしいしViewのためだけにあるのだろうけど
584 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 02:43:58.43 ] w
585 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 07:43:21.82 ] abstractクラスは便利ですね public abstract class AbstractJInternalFrame extends JInternalFrame { private int x, y; private int width, height; private String title; public AbstractWindow(int x, int y, int width, int height, String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable) { super(title, resizable, closable, maximizable, iconifiable); this.x = x; this.y = y; this.width = width; this.height = height; this.title = title; } public void resetPerspective() { System.out.println("Reset Perspective: " + title); setBounds(x, y, width, height); show(); } // 以下フィールドのgetterのみ } みたいな設計が本当に便利に感じる。eclipseのReset Perspectiveの簡易版みたいな感じ。 iframes = new HashMap<String, AbstractJInternalFrame>(); あたりでまとめてたとすると、ActionListenr等で for(Map.Entry<String, AbstractJInternalFrame> f : iframes.entrySet()) f.getValue().resetPerspective(); 継承先でsetLocation(int, int)等で好き勝手できるけど初期値は断固としてsuperが守ってるみたいなイメージ。
586 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 07:47:24.55 ] あっそ 他の全員は知ってるから粉みかんは3行以内で頼む
587 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 07:55:33.83 ] あぁコンストラクタ名が間違ってるのは仕様でござます
588 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:19:53.00 ] 抽象クラス使うやつは設計下手なザコ
589 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:40:10.98 ] 抽象クラス使えない=クラスすら使えない(クラスはオブジェクト) ってことに気づいているのだろうか クラスも使えないとなると設計がうまい下手の段階までいけない件について…
590 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:46:01.06 ] 意味不明 抽象クラスなんてテンプレート実装作るだけの道具にすぎない 多態はインターフェイスが基本で、抽象クラスは必須ではない
591 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:54:30.60 ] >多態はインターフェイスが基本で インターフェースの無い言語はOOPではない と言いかねないJAVAドカタの珍説には いつも驚かされます
592 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:54:40.24 ] 最近ちょくちょく抽象クラスがどうのこうのって話になるな 同じ奴が繰り返してるのか?
593 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:01:51.43 ] 可能な限りインターフェースってのは全く同意だよ そもそも公式がうたってますし だけどいつも何でもかんでもインターフェースにしちゃうのは大反対 特に、extendsできなくなるのは場合によっては保守性が上がる でもって、インターフェースが一番活きるのはこの時なんだよね〜仕様的にも。
594 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:10:31.68 ] Java 8からはインターフェースも実装を持てるようになるから 抽象クラスと何も変わらなくなるよ
595 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:11:57.97 ] extendsの大部分は委譲で済んじゃうんだけどな。IDEの自動生成も使えるし。
596 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:12:23.36 ] >>594 抽象メソッドはprotectedにするもんだ インターフェイスじゃできない
597 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:14:13.71 ] protected使うなんてレアケースだろ。一般論として語るのは……
598 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:19:35.46 ] まぁでも何もかわらなくなるってのは 先の「抽象クラス使うやつは…」のくだりと同じで極論すぎるよ そしてprotectedがレアケースだとも思わないなぁ それはニアリイコール抽象クラスをレアケースといっているようなもんだし…
599 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:22:09.09 ] Template MethodやFactory Methodはprotectedで十分なはずでしょ MS系だとそれこそ仮想メソッドはほとんど全部protectedだったりするが Javaってそのへん適当だよね
600 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:37:33.89 ] abstractクラスのfield活かした方が明らかに良い場合も無理してinterfaceなの? それはちょっとどうなんだろう interfaceだと子クラスに丸投げだよね?
601 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 10:02:17.81 ] ファクトリメソッドをprotectedはありえねーよ。 テンプレートは使う側ならprivateでなんも問題ないな。 仕様の方ならインターフェースで十分っつかpublicにしないと不便極まりないし。
602 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 10:11:56.80 ] >>601 >privateでなんも問題ない privateはオーバーライドできません >インターフェイスで十分 デザパタ知らないの? 移譲を使った設計と混同してるのでは?
603 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 10:21:35.57 ] ある機能を実装するとき、個々のクラスやら何やらで振る舞いが違う部分と それらを呼び出す形で固定化できる部分に切り分けるのがテンプレートメソッドパターンなわけで。 固定化してる方はオーバーライドする必要が全く無いから、 外部からアクセスする必要がないならprivateで何の問題も無い。
604 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 10:23:20.22 ] Factory Methodがprotectedで十分とか
605 名前:デフォルトの名無しさん [2013/07/06(土) 10:26:40.12 ] どう考えても両方使うだろ… interfaceだけにしろ、protectedだけにしろ、privateだけにしろ… 何も考えていない証拠だ
606 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 12:45:38.25 ] 抽象クラスはそのクラスの実装者からみたら窮屈に感じるが protectedメソッドを実装するだけだと副作用が無くて安全にも感じる ディスパッチ目的の抽象クラスだと実装がやたら手続き型でも気にならない
607 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 14:56:49.67 ] >抽象クラスはそのクラスの実装者からみたら窮屈 イミフ >ディスパッチ目的の抽象クラス イミフ
608 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 15:27:10.58 ] まずインターフェイスを用意して、それを実装する際に楽をする、してもらうために 抽象クラスも使うかな。両方使わないと不便。 APIに立ち現れるのはインターフェイスだけで実装クラスは基本隠す。
609 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:07:30.32 ] 抽象クラスは何がダメかってスタンドアロンじゃない前提の癖に再利用性が悪いところだ
610 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:15:24.89 ] あるインタフェースのひな形だったりフレームワークへのエントリポイント だったりするからな。ある方策に従わせるための抽象クラス
611 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:17:13.39 ] >再利用性が悪い 設計がKUSOなだけじゃね?
612 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:30:23.89 ] 逆に他に実装可能な手段があるのにあえて抽象クラスを使うことが正解というケースがごく稀にしかない
613 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:31:20.92 ] ある抽象クラスのサブクラスが1個しかないならKUSO 分ける意味ねーもん 将来的に使いたいとしてもその将来っていつ来るの?って話
614 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:40:15.62 ] 派生クラスに共通する役立つメソッドを抽象クラスで提供しよう ↑抽象でないクラスに分離してメンバに持たせるのが正解
615 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 04:42:24.53 ] >>613 例え一個でもわけた方がいい場合は間違いなくあるよ だがabstractクラスはサブクラス沢山抱えたときにまとめて扱うのがいいよな
616 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 06:23:55.89 ] abstractクラスを継承したabstractクラス みたいな構造のデザインパターンを経験しないと メソッドにつけるfinalの有り難みが勉強できないんじゃないかなとは思う
617 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 06:27:19.94 ] 出たー酷い失敗設計
618 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 10:02:43.44 ] 将来どこを修正する可能性があるかを予想できないと抽象化は難しい 二度といじらないコードを抽象化するのは無意味だ 工期、予算の都合で今はしないけど次のサイクルでこれこれやる ってくらい確実にわかっていなければ抽象化する必要はない 抽象化しなかった場所に修正が入るってなら設計上のミスだ かむしろマネージャーの開発スケジュールミスだ
619 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 10:53:06.26 ] テストの為に抽象化することもあるんですが
620 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 16:09:58.78 ] >将来どこを修正する可能性があるかを予想できないと抽象化は難しい んなこたーない。 現在の機能要件と拡張性要件に基づいて 設計するだけ。
621 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 16:35:50.06 ] 要件なんてあてにならない 未来は神様にも予言できないんだよ
622 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 16:45:01.89 ] なんか良くわかんないんだけど、具象クラスしか作らないのかな
623 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 19:10:33.52 ] 将来のためのインターフェースなんて、>>618 くらいじゃない? あとは、縦割り部署のインターフェースとか、、、 昔、DB部門が作ったインターフェースで、笑えないヤツがあったのを思い出した テーブルの指定がひとつだけで、結合が全く出来ないという
624 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 19:55:56.48 ] ちょっと何言ってるかわかんないですねー
625 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:00:01.97 ] Javaやるとこうなる シャブみたいなもんだよ
626 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:07:26.86 ] テーブルごとにクラス分けしててselect XXX from A,B(A,Bはテーブル)が考慮されてないってことか 通常のオブジェクト指向でもそうだが、ふたつのクラスの相互作用を表す方法に苦慮する クラス(A+B)を作るのは負けかなって思ってる
627 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:20:41.50 ] 相互作用は簡単なものならイベントを使う 複雑ならプロトコルをクラスにする 通信対象の選択自体が複雑ならルーティングもクラスとして作る 面倒だが基本中の基本だろ
628 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:25:47.11 ] 一部だけ人に書かせるときはAbstractが楽。特に土方に。
629 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:26:20.97 ] >>626 そこでLINQですよ C#の劣化版猿真似は得意だろ?
630 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:56:30.08 ] >>628 最悪だろ 土方に正確なオーバライドは無理
631 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:57:31.73 ] >>629 無駄な通信が発生するのは同じだろ
632 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 00:15:20.02 ] >>629 まともな設計ならLINQはあくまでモデルの中で使うので同じことですよ
633 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 05:12:26.81 ] abstractクラス継承したabstractクラスはデコレータパタンとかでたまにみるね
634 名前:デフォルトの名無しさん [2013/07/08(月) 05:41:47.78 ] Eclipseで、 実行(Ctrl + F11)のときは文字列を出力させず、デバッグ実行(F11)のときだけ文字列を出力したいです。 プログラムの中でデバッグ実行かどうか判別すればいいと思うのですが、 System.getProperties() で確認したところ、デバッグ実行のときだけセットされるプロパティは無さそうでした。 何かいい方法ありませんか?
635 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 06:35:26.12 ] リファクタリング機能をつかう
636 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 12:02:52.75 ] デバッグ実行のときにプロパティをセットすればいい
637 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 13:35:25.98 ] デバッグ実行だと動作遅くなるからベンチマークとってとか、間違ってそのままリリースして 遅い端末だとデバッグ情報が見れるw
638 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 19:52:33.17 ] >>634 デバッグ実行時だけログ出力レベルをfineにすればいい 普通はlog4jだろうが俺はしらん
639 名前:634 [2013/07/08(月) 21:16:20.57 ] すみません、説明不足でした。 頻繁に実行とデバッグ実行を切り替えたいため、 ソースコードや設定ファイルを変更することなくやりたいのです。
640 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 21:45:51.75 ] main メソッドを持つクラスを 2 つ作って起動し分けるとか
641 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 21:46:51.82 ] だったらコマンドライン引数でいいだろ
642 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 23:48:53.47 ] 最初のブレークポイント前後が100ms以上開いたら 「現在デバッグ中」フラグが建つということでどうだ?
643 名前:デフォルトの名無しさん mailto:sage [2013/07/09(火) 00:49:29.87 ] AspectJとかで実行時に文字列出力コードを織り込むとか
644 名前:デフォルトの名無しさん mailto:sage [2013/07/09(火) 08:44:37.39 ] >>630 なぜInterfaceやスクラッチだと正確にできるの? どれでも正確にできないなら比較の問題。ベターなもので満たせないなら、受け入れテストしてない方が悪い。自分がサボってるのを土方のせいにするなよな。
645 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) 21:50:36.58 ] visual studio+C#でできるデータベース操作のパクリはjava+eclipseには無いのですか? テーブルアダプタやデータソースのことです
646 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) 22:10:37.58 ] visual studioがわからん人にはどういう機能かわからんからなぁ。 表形式でデータ見られたり、定義情報が見られたりするやつのこと?
647 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) 22:15:56.63 ] >>646 データベースへアクセスするためのクラスを自動で作ってくれる機能です コードを一行も書かなくてもデータベースへのアクセスからフォームへのバインドまでしてくれるすごいやつです
648 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) 22:42:34.20 ] >>647 その程度なら、なければ自作しろ。 俺はそんなの全然ほしくないが。
649 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 08:08:32.35 ] 山ほどあるから。
650 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 09:51:16.96 ] JDBCが好き
651 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 23:30:36.05 ] 最強のドカタ言語を舐めるなよ
652 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 23:32:03.56 ] データベースからAccessみたいな環境を一式用意してくれるみたいな? そいやJavaでクラサバとかしたことねーなぁ
653 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 23:56:35.23 ] >>652 え
654 名前:デフォルトの名無しさん mailto:sage [2013/07/13(土) 01:45:41.14 ] 社会人になればOracle Databaseは当たり前
655 名前:デフォルトの名無しさん mailto:sage [2013/07/13(土) 05:14:30.11 ] オッス オラ狂う
656 名前:デフォルトの名無しさん mailto:sage [2013/07/13(土) 06:08:26.90 ] でもメディアにのる格好いい事例って大抵はEC2の上にMySQLやPostgreSQLをデプロイ したようなのが最近は多い。 実際に儲かるかはともかくとしてOracleを使った事例ってあまり若い人にアピール しないというか、こういうシステムに関わってみたいという対象ではない気がする。