1 名前:デフォルトの名無しさん mailto:sageteoff [2016/03/15(火) 18:14:06.66 ID:9bB8/RTg.net] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 (p)ttp://www.wikiroom.com/java/?path,classpath ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 ・String に == は使うな。equals() を使え。※ 質問時の心得 ・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。 ・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。 前スレ ★★Java質問・相談スレッド176★★ [無断転載禁止](c)2ch.net echo.2ch.net/test/read.cgi/tech/1453305105/
794 名前:デフォルトの名無しさん [2016/06/01(水) 15:55:42.10 ID:RzubKjxs.net] .NETはMSがOS非依存に興味ないのがな
795 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 16:24:20.26 ID:rVhAsya/.net] 「ハングル大移動」でぐぐるといろいろ出てくる。
796 名前:デフォルトの名無しさん [2016/06/01(水) 20:38:05.66 ID:RzubKjxs.net] javaの標準出力はクラス.静的フィールド.メソッド()だから、初心者に説明しにくい 何故クラス.メソッド()にしなかったのか
797 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 22:37:27.32 ID:KWV9l2rU.net] DI意識してたのかねえ
798 名前:デフォルトの名無しさん [2016/06/01(水) 23:16:13.74 ID:UOAJZ08o.net] 【ワカヤマン】Javaプログラミング能力認定試験 [無断転載禁止](c)2ch.net hanabi.2ch.net/test/read.cgi/lic/1454946517/
799 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 23:16:40.90 ID:63gTfooz.net] >>794 そりゃPrintStreamを差し替えて出力先を切り替えるためでしょ
800 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 23:21:11.01 ID:63gTfooz.net] ちなみに差し替えはSystem.setOut()
801 名前:デフォルトの名無しさん [2016/06/02(木) 01:06:18.58 ID:SCZaCQ9D.net] >>791 変わらない方がずっと使われる。
802 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 06:51:49.01 ID:n2zNmuVe.net] >>798 内部でリダイレクトすりゃいいだけでしょ 直接ストリームを触らせる必要はない Javaの基本的な設計思想として直交性を重視するというのがあって、 ストリームと同じようなメソッドを別のクラスのstaticメンバとして持たせるのは嫌だったんだろう System.outはfinalフィールドではない(setOutがあるからね)ので外から直接代入できてしまうはずなんだけど、 なんとJavaの言語仕様で特別扱いされていてSystem.outやinだけはユーザーが代入できないという醜い仕様になっている そこまでして直交性に病的に拘ってるんだよ
803 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 08:27:55.85 ID:Y8jyUZeK.net] 今スッキリ分かるjava入門のオブジェクト指向のところをやってるんですが オブジェクトクラス内で、 this.を使う場合と使わない場合がいまいちよくわからないんですが どういう時に使えばいいんでしょうか?
804 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 10:34:06.44 ID:mspBW4t7.net] オブジェクトクラスとは具体的にこれを指す docs.oracle.com/javase/jp/7/api/java/lang/Object.html で、どこでthisを使いたいんだい
805 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 12:02:22.47 ID:eu+qHMXE.net] 何故初心者向けに作らないといけないのか
806 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 12:11:41.64 ID:TIu4sgpj.net] 初心者はプログラマ人口の多くを占める。また、多くの初心者は自身が習得した一部の言語機能に拘泥しがちであり、知識を広げようとはしない。従って、初心者への配慮は重要であると考えられた[1]。
807 名前:デフォルトの名無しさん [2016/06/02(木) 12:17:10.70 ID:R0axCxde.net] スタンリーのゲームなんだけど条件分岐で右、左と設定してその先にさらに条件分岐を作りたいんだけど どうすれば a b ↓ ↓ a b c d e f なるかな とりあえず、現状のソースをうpとくわ package test7; import java.util.Scanner; public class test7 { public static void main(String[] args) { System.out.println(
808 名前:デフォルトの名無しさん [2016/06/02(木) 12:21:17.22 ID:R0axCxde.net] こっちに貼った ideone.com/FS6rYH
809 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 12:52:20.45 ID:soSMk704.net] Stateパターン!
810 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 16:49:04.97 ID:Y8jyUZeK.net] >>802 使いたいわけじゃないんですけど、どういうときに使うのか知っときたいです 入門書で基礎を勉強してる最中なので何か作りたいわけではないんですが
811 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 16:59:55.79 ID:3pGrCwvw.net] thisなんて使う必要があるときだけ使えばいいんだよ むやみに使うと初心者が混乱する
812 名前:デフォルトの名無しさん mailto:sage [2016/06/02(木) 18:25:02.84 ID:j7BsBWqH.net] >>808 thisは自分自身の事、例えば class A{ int a; void set (int a){ this.a = a; } } こう書くとset呼び出しで自分(クラスAのインスタンス)の持つ変数aに引数で指定された値aが代入される (たまたま同じ名前aなので区別が必要) 初心者スレのが詳しく教えて貰えるかと
813 名前:デフォルトの名無しさん [2016/06/03(金) 00:18:29.41 ID:eOByu9EQ.net] >>789 togetter.com/li/756319
814 名前:デフォルトの名無しさん [2016/06/03(金) 01:23:09.87 ID:Hu6W5Twy.net] >>809-810 入門書に書いてあるから覚えようとしてたんですが今はそんな必要じゃないんですね ありがとうございました
815 名前:デフォルトの名無しさん mailto:sage [2016/06/03(金) 02:10:46.15 ID:fVYd85Q0.net] インスタンス変数・ローカル変数を区別している this.a = a Pythonでは、self.a = a Rubyでは、@a = a
816 名前:デフォルトの名無しさん mailto:sage [2016/06/03(金) 02:54:46.14 ID:aDP5A1Yp.net] コンストラクタのオーバーロードかもしれんぞ
817 名前:デフォルトの名無しさん mailto:sage [2016/06/03(金) 09:50:59.14 ID:cjkmsXsO.net] >>812 thisが必要なときは大体こんな感じ ・自身のオブジェクトをメソッド呼び出し時の引数に渡す ・同名のインスタンス変数とローカル変数を区別する ・コンストラクタ内で同じクラス内に定義しているコンストラクタの呼び出し ちなみに匿名クラス内で定義元クラスのオブジェクトを参照する場合は「定義元クラス.this」って記述する
818 名前:デフォルトの名無しさん mailto:sage [2016/06/03(金) 09:53:46.55 ID:cjkmsXsO.net] むやみにってのは、インスタンス変数を参照するだけ、インスタンスメソッドを呼ぶだけで使うこと
819 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 23:07:10.93 ID:F2beNYcE.net] swing初心者なんですけどGraphics2Dで図形などを描画するときコンポーネントの後ろに描画するにはどうしたらいいのでしょうか mainメソッドでコンポーネントを設定してsetVisible(true) paintメソッド内でGraphics2Dでdrawすると後者が前面に出てボタンやラベルが隠れてしまうといった感じです
820 名前:デフォルトの名無しさん [2016/06/04(土) 23:34:48.02 ID:Umdhk7VS.net] ラベル01:while(){ ラベル02: if(){ continue ラベル01;} if(){ continue ラベル02;} } ラベル02に行くにはどうすればいいのでしょうか?よろしくお願い致します。
821 名前:デフォルトの名無しさん [2016/06/04(土) 23:41:26.48 ID:3F7VjM1T.net] 定期考査で英語のアクセントは何番目にあるかっていう問題が出たんだけど0番目から数えてしまった 上に番号振っていなかった教師が悪いのか、俺が悪いのか?
822 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 00:20:16.79 ID:bEHxSIM9.net] >>817 ボタン・ラベルを、隠す・削除する >>818 ラベル01:while(){ ラベル02: if(偽){ continue ラベル01;} if(真){ continue ラベル02;} } >>819 何番目とインデックスは異なる。 1番目は、インデックスが0
823 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 01:01:14.99 ID:f33EmFKv.net] インデックスにも0-indexと1-indexがあるしな
824 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 09:10:58.30 ID:iMrWFgNq.net] >>820 >>817 です。 アドバイスありがたいんですけどよくわかりません 自分がやりたいのはJLabelとGraphics2Dのdraw()を同時に描画して かつJLbelのほうを真上に表示することです イベントとか透明度とかいろいろいじったんですけどどうしてもdraw()のほうが上に描画されてしまいます
825 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 12:06:54.56 ID:f33EmFKv.net] stackoverflow.com/questions/24493236/paint-hidden-java-swing-component stackoverflow.com/questions/7734277/setvisibletrue-immediate-repaint
826 名前:デフォルトの名無しさん [2016/06/05(日) 16:22:36.78 ID:Qy2zNNAa.net] Javaのラベル文の質問です ラベルの中にラベルを貼ることは可能ですか? ラベル1:〜{ ラベル2:〜{ System.out.println("こんな形"); } } >>820 を参考にしましたが、よく分かりません ラベル2:〜{continue ラベル2;}でラベル2まで飛べますか? また、ラベル2:〜{continue ラベル1;}でラベル1まで飛べますか? 何度もすいません、お願いします。
827 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 16:41:41.46 ID:odhU5/tC.net] >>824 ラベルは使うな どうラベルを使うかではなく、使わずに目的を達成する方法を考えろ
828 名前:デフォルトの名無しさん [2016/06/05(日) 19:14:01.58 ID:/bruxSbe.net] >>824 14.16. The continue Statement docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.16 | The scope of a label of a labeled statement is the immediately contained Statement. | The continue target must be a while, do, or for statement, or a compile-time error occurs. ラベルのスコープはラベル直後のステートメント continueの対象はwhile, do, forに限る ちゅうことなんでラベルは貼れても飛ぶことができないかと こういうのだったらできるんだけどねー int i = 0; Label_1: while (i < 3) { Label_2: while (true) { if (i % 2 == 0) { i++; continue Label_1; } else { i++; continue Label_2; } } }
829 名前:デフォルトの名無しさん [2016/06/05(日) 19:46:12.67 ID:FIzAHdVg.net] >>826 ありがとうございます ありがとうございます
830 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 19:50:45.05 ID:5XbRe77x.net] 今の子たちは行番号も構造化BASICも知らない世代なんだから ラベルやgoto/setjmpが新鮮なんだろうよ できればその労力をlambda式に使った方がいいと思うけどね
831 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 20:06:33.58 ID:hOWXyYQQ.net] ボレロ
832 名前:デフォルトの名無しさん [2016/06/05(日) 21:51:27.70 ID:pxS74riA.net] 村上。
833 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 13:25:30.14 ID:JZtx2nlJ.net] staticメンバだけのクラスで クラスロード後、コンストラクタを通さずあらかじめ自動で文を実行させるおく事って可能でしょうか?
834 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 13:35:20.02 ID:9aadMFJw.net] >>831 class Hoge { static { System.out.println("はげ"); } }
835 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 14:01:46.42 ID:p52I8MXM.net] ハゲハダマッテロ ∧___∧ / / / / ⊂( ・∀・) 、,Jし // パン (几と ノ ) て.彡⌒ ミ //'|ヽソ 彡 Y⌒Y( ´;ω;`) /ノ / | \ 彡 l r Y i| ヽ/、/ヽ/ ヽ/ U>>832 |:_|j
836 名前:デフォルトの名無しさん [2016/06/06(月) 18:05:22.48 ID:d2PTajMw.net] マルプラなDTアプリを作るのはElectronとSwingはどっちがいいのでしょうか? それぞれのメリット、デメリットを教えてください
837 名前:831 mailto:sage [2016/06/06(月) 18:18:10.06 ID:AvO2qKU5.net] >>832 はげしく感謝!
838 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 18:36:27.97 ID:lERWlKku.net] >>834 Swing(というかJavaでGUIアプリを作ること全般)が適しているケースなんか存在しない Javaというだけで-100点からのスタートだということを肝に銘じておけ
839 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 18:46:44.26 ID:/ojbA3WN.net] Javaの入門書でクライアントGUIアプリを教えるのはいい加減やめりゃいいのにな 初心者はアプリといえばクライアントアプリしか想像できない人が多いんだから、あのせいで独学者はみんな勘違いする
840 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 18:54:13.19 ID:LbzoRXHI.net] なぜだ 格好悪かろうと一言語で全て完結するという理想を満たしている 腕が上がって他へ移るかは本人が決めること
841 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 18:58:58.88 ID:wkSg93q8.net] 役に立たない理想なんか衒学趣味のタコ助野郎だけ学んでろ
842 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:04:27.00 ID:pvK3vfp5.net] 理想もない猿は黙ってろよ。
843 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:09:29.77 ID:d2PTajMw.net] >>836 つまりメリットはないということですか? V2Cはswingみたいですが
844 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:27:23.03 ID:e+TlXwYN.net] swingと聞いて思い浮ぶのはPureJava、JTable、産廃 異論は認める
845 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:43:30.64 ID:AvO2qKU5.net] 自分用ツール作るとかに便利じゃないです? コード使い回せるし
846 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 20:29:31.64 ID:kYOSRyqE.net] そう思うならやれよ勝手に
847 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 21:49:23.05 ID:HSh/i7Wo.net] VBよりはいいだろ
848 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:06:53.77 ID:Tzc6nBCT.net] Eclipseは?
849 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:09:27.12 ID:9d27o1oJ.net] >>834 ElectronはJavaScript、SwingはJava、Electronはスレ違。 JavaでGUIやるならだいたいSwingかJavaFX。まぁSwingで問題なし。 Swing駄目って言っているやつは、ただSwingに挫折した無能だから気にする必要なし。
850 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:11:38.23 ID:HjHXlP56.net] ク ク || プ / ク ク || プ / ス ク ス _ | | │ //. ス ク ス _ | | │ // / ス ─ | | ッ // / ス ─ | | ッ // / _____ // / // . / l⌒l l⌒l \ )) ____ . / / ̄| ,=| |=、| ̄ヾ /
851 名前:Q___ヽ / ̄/ ̄. ー'●ー'  ̄l ̄ | | /, −、, -、l )) | ̄l ̄ ̄ __ |.  ̄l ̄.| _| -| ,=|=、 || |. ̄| ̄ ̄ `Y⌒l__ ̄ノ ̄ (6. ー っ-´、} ヽ ヽ 人_( ヾ ヽ `Y⌒l_ノ >〓〓〓〓〓〓-イ /ヽ 人_( ヽ / / Θ ヽ| /  ̄ ̄ ̄ ヽ-イ [] [ここ壊れてます]
852 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 14:25:52.84 ID:D7k3fKbj.net] swingは今更ねーわ。 electron 〉javafx 〉ローカルホストでweb 〉swing 今からやれと言われて検討するならこうなる。
853 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 15:55:02.34 ID:JWprMCTU.net] eclipseで使ってるのはSWTというやつでSwingともまた違う swing/swt/javafxいずれも専用スレがある
854 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 16:20:24.00 ID:AqghDwj4.net] >>849 electronはjsだ
855 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 16:21:02.89 ID:AqghDwj4.net] >>849 ローカルでwebとか意味不明。馬鹿?
856 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 16:23:11.24 ID:RIjMUPE/.net] 次のページ(research.nii.ac.jp/~uno/codes-j.htm )の、「FREQT」もしくは「FREQT ver4」プログラムを動かしたいのですが、 やり方が全く分かりません。 プログラミング経験は、C言語はfor文等を使って数値計算をしたことがある程度です。Javaは経験は無かったのですが、JDKはダウンロードしました。 「FREQT」プログラムをjavacでコンパイルしようとしても、どうにもうまくいきません。JAXPというものが絡んでいるようですが、ここ数日取り組んでみて結局うまくいきませんでした。 もしプログラミングに詳しい方がいらっしゃいましたら、どうか動かし方を教えて頂けないでしょうか?
857 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 16:43:16.23 ID:uoaKuNhz.net] JavaでGUI(おそらくWindwos)を作るって事は、既存のライブラリ資産を活かしたいからだろ 別にSwingでもいいんじゃない
858 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 17:03:24.50 ID:GM81CXhl.net] Electronが選択肢にあるんだからJavaでなくてもいいんだろ 明らかにElectronが正解
859 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 18:28:58.83 ID:dHr3PrBM.net] 素人がElectron使うとXSSで爆発するけどね
860 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 20:29:14.56 ID:/ZO0bpA6.net] jspでセッション情報の保持は ヘッダ情報にcookie:xxxxx みたいな形で保持されてるらしいですが、 セッション情報が残っている時に、 ブラウザのcookieを消すとセッション情報が消えるのはなぜですか? jspならhtml形式だからcookieとは違うはずなのに
861 名前:デフォルトの名無しさん [2016/06/07(火) 21:17:20.48 ID:Guppn9xI.net] void hoge(String shape) { switch (shape) case
862 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 04:30:31.82 ID:E3Y0fydP.net] >>853 JAXP (Java API for XML Parsing) JAXPは、米Sun Microsystems社が提供するJava言語用の標準XML APIである。 SAX 2.0, DOM 2, XSLTなどの機能を含む JavaのXMLは、よく知らない。 Groovyなら、XmlParser, XmlSlurper を使うけど 正確なエラーメッセージで検索すればいいよ。 エラーメッセージが無ければ、漏れらにもわからない
863 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 08:59:24.49 ID:VWzAs+2U.net] >>853 https://xml.apache.org/svn.htmlからcrimsonをダウンロード 具体的には`svn co svn.apache.org/repos/asf/xml/crimson/trunk/ xml-crimson`みたいにする あとはmakeと打って、エラーが出るDomWrapperとPatternをjavac -classpath .:xml-crimson/srcつけて手動でコンパイル コンパイルはできたけど動作確認はしてない
864 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 21:43:45.88 ID:Of4rxDsn.net] 俺たちのやる作業レベルでは大した速度の違いはない
865 名前:デフォルトの名無しさん [2016/06/09(木) 02:40:45.99 ID:86wjM1QZ.net] そういえば Java ってミリ秒単位で現在時取れるけどマイクロ秒とかナノ秒では取れないの?
866 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 06:53:39.91 ID:W1J6KNMM.net] μとかナノ単位で取れたとしても使いみちなくなくない?
867 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 07:41:15.69 ID:sulveNBl.net] >>862 OSで計れる時間を勉強してから出直して来い
868 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 07:55:51.57 ID:Uf/9VKKE.net] バージョン1UUIDのタイムスタンプが100ナノ秒単位
869 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 08:36:20.04 ID:PZQxvZoz.net] スッキリjavaにjava8からマイクロとれるようになったって書いてあった気がする
870 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 08:51:24.33 ID:dIu2vu4F.net] 勘違いじゃねーの Java8 DateTime APIはナノ秒の精度で時刻を格納してるけど ナノ秒の精度で現在時刻を取得できるわけではない 情報源がSystem.currentTimeMillisだから精度上げようがない nanoTimeってのもあるが、あれは時刻じゃない
871 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 09:32:53.36 ID:CSH5zx3A.net] たかがPCのおまけ内蔵時計にマイクロ秒単位の精度求めるのん? CPU占有してインターバル求める位ならまだなんとかなるかもだが
872 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 09:58:27.87 ID:aGzbUoMt.net] そもそも、量子力学の知見によれば、この物理世界そのものも、何秒以下では、時間が連続していないわけで
873 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 10:08:07.57 ID:8bnSb6E3.net] >>868 現在時刻が欲しいんじゃなくて差分を利用して処理にかかった時間を計測したりとかの用途でしょ
874 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 10:42:12.37 ID:U9CsIV6v.net] 862が現在時って言ってるから現在時の話をしとるんだろうがコルァァァァァァア
875 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 15:59:12.13 ID:PZQxvZoz.net] >>867 そういう事だったのか さんくす
876 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 16:01:07.29 ID:PZQxvZoz.net] System.nanoTimeっていうのもあるらしい
877 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 16:04:50.36 ID:lRCEzphN.net] さっさといねよ、厨房
878 名前:デフォルトの名無しさん [2016/06/09(木) 19:47:04.21 ID:z86Am/NW.net] void createShapr(String shape){ if (shape.equals(
879 名前:デフォルトの名無しさん [2016/06/09(木) 19:47:55.21 ID:z86Am/NW.net] "Triangle"){ hoge.add(new Triangle())} else if (shape.equals("Circle") {hoge.add(new Circle())} else if (shape.equals("Square") {hoge.add(new Square())} else if ....... } こういうコードのリファクタリングはどのようにするべき?
880 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 19:59:20.36 ID:VbYktpbq.net] Decorator のように見えるけど Chain of Responsibility かもな
881 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 20:54:43.93 ID:ifPE+NTk.net] >>876 HashMap<String, ShapeFactory>
882 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 21:24:55.29 ID:5jXMB1Ia.net] >>857 まず大前提として、createXxxって名前つけたんなら void createShapr(String shape){hoge.add(new Circle());} // 条件等省略 ↑こういうのじゃなくて Shape createShape(String s) {return new Circle();} // 条件等省略 ↑こういうふうにしてほしい。 さらに、クラス名をShapeFactoryとしてしまっていい場合は、 メソッド名も単にcreateだけでよくてスッキリ。 あ、あくまでこれは個人的感想ね。
883 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 21:26:23.12 ID:rWnG5Ha6.net] おっと…>>875 だった。
884 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 21:28:21.88 ID:kVyFEPmq.net] 釣れるネタ
885 名前:デフォルトの名無しさん [2016/06/09(木) 23:0
] [ここ壊れてます]
886 名前:1:38.63 ID:z86Am/NW.net mailto: 875だえす。 名前はsetShapeかaddShapeにしたほうが良かったと思う。 [] [ここ壊れてます]
887 名前:デフォルトの名無しさん [2016/06/10(金) 02:07:11.83 ID:iCsTtZ3L.net] Factoryをリフレクションでやればよくね public static Shape create(String shape) { String fqn = Shape.class.getPackage().getName() + "." + shape + "Shape"; Class<Shape> classe = (Class<Shape>) Class.forName(fqn); Shape obj = classe.newInstance(); return obj; } public abstract class Shape { protected Shape() {} } public class TriangleShape extends Shape { } public class CircleShape extends Shape { }
888 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 10:46:09.29 ID:XvceIi0Z.net] 静的解析出来ない依存性はやだなぁ
889 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 20:27:09.88 ID:FpIylB97.net] classA.classB.classC[hoge]->hage() classA.classB.classC[hoge].sun() classA.classB.classC[hoge]["pikapika"]=true; って感じになってて長いので myFunc(classA.classB.classC[hoge]){ ->hage(); .sun(); ["pikapika"]=true; } 的なことってできませんか
890 名前:デフォルトの名無しさん [2016/06/10(金) 20:36:52.18 ID:u+tsBWPR.net] >>885 それはJavaですか?
891 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:49:29.94 ID:lGk3iJgb.net] >>885 c++(11以降)ならこんな感じで auto& a = classA.classB.classC[hoge]; a->hage(); a.sun(); a["pikapika"]=true;
892 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 20:50:46.64 ID:jWym4ASr.net] 書き込み先間違えても謝らないなんて C++erって糞やな
893 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 22:25:30.78 ID:QKWa7och.net] しーぷらぷらーって読めばいいの?
894 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 22:29:32.84 ID:Vqz0UhNC.net] アメリカ人なら スィープラスプラスアウゥ って言うだろうな