1 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 14:12:12.75 ID:I0KrLWwV.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質問・相談スレッド173★★ [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/tech/1429709719/
651 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 09:42:25.24 ID:6VOBLfbC.net] >>645 いいの? それ、いつも罪悪感があったんだけど、赦されるの?
652 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 11:19:54.86 ID:wKtEswkf.net] いいんだよ
653 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 11:41:28.76 ID:lTJfarla.net] >>645 こんなの絶対ダメ cresteAnimalはstaticメソッドなんだから派生クラスで上書き(override)なんて出来ないし、柔軟でも何でもない
654 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 11:47:03.57 ID:FXTJoMLp.net] ファクトリークラスを別に設けるのを書き損じたんだろ
655 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 12:19:45.02 ID:6VOBLfbC.net] >>649 やはり赦されないの? ファクトリーメソッドはファクトリークラスをいちいち作るべきなの?
656 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 13:02:58.84 ID:4os4lvOB.net] >>650 作ります
657 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 18:34:04.45 ID:n3PeWc41.net] 今こういう理解をしているんですが、間違いがあれば指摘していただけないでしょうか。 1.実行される順番は、staticイニシャライザ → インスタンスイニシャライザ → インスタンスコンストラクタ。 2.プリミティブ型とString型は定数プールに作られて、それを参照するためのアドレスがスタックに置かれる。 3.参照型はヒープに実体が作られて、それを参照する為のアドレスがスタックに置かれる。 4.Stringや参照型を比較する際、==では、実体を指しているアドレスの値が同じか比較。 equasでは、実体の持つ情報(文字列やプロパティの中身)が同じかどうか比較。
658 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 18:46:03.73 ID:FXTJoMLp.net] >String型は定数プールに作られて、それを参照するためのアドレスがスタックに置かれる。 何をわけのわからんこと言ってるんだおまいは
659 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 18:55:19.24 ID:n3PeWc41.net] >>653 すみません、 newしない場合は定数プールに、newした場合はヒープでいいんでしょうか。 わけのわかる段階を目指してる段階なので・・・・
660 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 19:18:04.59 ID:FXTJoMLp.net] >>654 定数プールなんてものは無い 定数はインターンのプールを使ってはいるけど
661 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 19:29:41.08 ID:n3PeWc41.net] インターンプールというのは構造体みたいなのでしょうか? 例えば、int a,b,cやString d,e,fという変数があれば、 int{ a=1,b=2,c=3, } String{ d="文字1"; e="文字2"; f="文字3"; } のように保存されていき、 new Integer(a)みたいにボクシングすると、ヒープに数値、スタックにヒープのアドレスが記録されるという感じですか?
662 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 19:33:43.31 ID:yBcFvURc.net] 仕様みると定数プールあるよ https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4
663 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 20:11:50.31 ID:NGgNXWj0.net] public class A{ public static final String VALUE = "ABCD"; } public class B{ public static final String VAlUE = "ABCD"; } public class Main{ public static final String VALUE = "ABCD"; public static void main(String[] arg){ String value = "ABCD"; System.out.println(value == VALUE); // ? System.out.println(VAULE == A.VALUE); // ? System.out.println(A.VALUE == B.VALUE); //? } }
664 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 20:24:27.54 ID:n3PeWc41.net] >>658 この場合はVALUEは全部定数プール(=インターンプール?)で、文字列の値が同じなので、value/A.VALUE/B.VALUEは同じ場所を参照して、==だとtrueでいいんですよね? public class A{ public static final String val = new String("ABCD"); } ってすると、valはヒープに記録されるので、==ではfalse、equalsではtrueに。
665 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 20:36:49.59 ID:zGz+EkSN.net] イスタンブールが構造体に見えた
666 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 21:02:51.50 ID:5wmHlkvS.net] 医者の卵のプール
667 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 21:18:46.58 ID:n3PeWc41.net] C#の情報を見つけたんですが、このページでは、自分が定数プールの機能だと思っていた事を、インターンプールという言葉で説明されていました。 https://msdn.microsoft.com/ja-jp/library/system.string.intern(VS.80).aspx >共通言語ランタイムは、インターン プールと呼ばれるテーブルを保持することで文字列のストレージを管理しています。 >このテーブルには、プログラム内で宣言または作成された一意のリテラル文字列に対する単一の参照が含まれています。 >この結果として、特定の値を持つリテラル文字列のインスタンスは、システムに 1 つしか存在しません。 >たとえば、いくつかの変数に同じリテラル文字列を代入した場合、ランタイムはそのリテラル文字列に対する同じ参照をインターン プールから取得して、それぞれの変数に代入します。 はっきりした事が分かるまで、暫定で"定数プール=インターンプール"と考えることにします。
668 名前:デフォルトの名無しさん [2015/09/17(木) 21:56:28.73 ID:v9PnBNai.net] >>656 定数プールよりコンスタントプールが一般的な呼び名だね static final String で定義された値ってよりは文字列リテラルで定義されたStringがプールされる 文字列リテラルは”hoge”の様に指定されたStringオブジェクト、つまりはクラス内の既知の文字列ってこと あと、String#intern()をするとコンスタントプールに新たに登録できる
669 名前:デフォルトの名無しさん [2015/09/17(木) 22:27:03.83 ID:v9PnBNai.net] >>652 実行順序は正しい 補足するとstaticイニシャライザはstaticフィールド代入とstaticブロックに分かれるけど、この実行順序は定義順 static final int STATIC_FIELD = getStaticField(); static { System.out.println(“static block”); } private static int getStaticField() { System.out.println(“static field”); return 0; } ― 実行結果 ― static field static block ―――― インスタンスイニシャライザも同様にインスタンスフィールド代入とインスタンスブロックに分かれて、実行順は定義順
670 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 22:27:53.81 ID:n3PeWc41.net] >>663 ありがとうございます。 言語仕様やJVM仕様について勉強するのに良い書籍やサイトはないでしょうか? そこを勉強しないと、何しても自信も確信も持てないです・・・ (Javaにおけるスタックやコンスタントプールやインターンプールといった言葉で実体を想像し切れない) amazonで目次を見ても、コーディング上の文法とかパフォーマンスを説明する書籍ばかり多くて探しきれません。
671 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 22:34:31.78 ID:i9MevF4R.net] あんだろ、探せないようだとXXXXXXX
672 名前:デフォルトの名無しさん [2015/09/17(木) 22:44:56.42 ID:v9PnBNai.net] >>665 言語仕様 docs.oracle.com/javase/specs/jls/se8/html/index.html VM仕様 docs.oracle.com/javase/specs/jvms/se8/html/index.html 言語仕様はJava認定資格関連のテキストとかがいいんじゃないかな www.oracle.com/jp/education/certification/jse8-2489021-ja.html&intcmp=JPOUSPOTBAN3 VM仕様の日本語は古いですがこれしかないです goo.gl/fIW55h ただ、最新VM仕様との違いはそんなにないはず(オペコードにInvokeDynamicが追加されたくらい?)
673 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 22:47:30.98 ID:n3PeWc41.net] >>667 ありがとうございます。 公式は英語が苦手で敬遠してたんですが、やっぱり一番ですよね。 頑張って読んでみます。ありがとうございました。
674 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 22:55:48.94 ID:CfrPILTl.net] >>652 >4.Stringや参照型を比較する際、==では、実体を指しているアドレスの値が同じか比較。 equasでは、実体の持つ情報(文字列やプロパティの中身)が同じかどうか比較。 equalメソッドは「そのクラス同士の比較において『等しい』と定義される条件を満たしているか」をチェックするメソッドな 必ずしも全てのフィールドが等しい必要はないし、Objectで用意されたequalsメソッドは参照値比較しかしてないので 自作クラスの場合はequalsメソッドをオーバーライドしない限り==と同じ効果しかない 反射律対称律推移律を満たして整合性を取れており、nullと比較した時にfalseを返すならどのようにも定義できる その際はhashCodeのオーバーライドも忘れずに
675 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 23:11:01.20 ID:n3PeWc41.net] >>669 ありがとうございます。 >Objectで用意されたequalsメソッドは参照値比較しかしてない ということは、標準クラスライブラリに含まれる各クラスのequalsメソッドは、漏れなくObject.equalsメソッドをオーバーライドしているという事ですか。 条件についてもこれから言語仕様を読んでしっかり勉強します。
676 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 23:25:52.04 ID:UlH6iH3c.net] a = 'abc' b = 'abc' id(a) != id(b) オブジェクトIDが異なる Pythonでは、インターンを使わないと、同じ文字列でも、 別のオブジェクトが使われる場合がある ところがインターンを使うと、 必ず同じオブジェクトが使われる
677 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 23:43:09.87 ID:UlH6iH3c.net] C#, Javaでも、Object型には、 Equals, GetHashCode, ToString の3つのメソッドを持つから、 これらのOverrideから始める Equalsでは最初に、オブジェクトIDで比較して、 同じならそこで即、returnする オブジェクトIDが異なる場合のみ、 文字列を1文字ずつ比較していく だから、インターンを使うと、 オブジェクトIDの比較のみで、 returnするので処理が速いのだろう (漏れの推測だが)
678 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 00:45:53.75 ID:WvjifrsL.net] >>670 基本的な知識がしっかりありそうだけど、今までどんな言語使ってたの?
679 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 10:16:49.58 ID:vjVVdCFj.net] 添え字の配列の内容を+1する方法教えて
680 名前:デフォルトの名無しさん [2015/09/18(金) 11:12:07.97 ID:HPIGM5T7.net] >>674 ++
681 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 12:54:21.77 ID:N0OkBH4h.net] for (i =0; i < arr.length; i++) { arr[i] = arr[i]++; }
682 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 12:55:58.63 ID:N0OkBH4h.net] 間違えた arr[i] += 1;
683 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 13:26:18.89 ID:vjVVdCFj.net] >>676 >>677 ありがとう
684 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 15:15:07.53 ID:vjVVdCFj.net] バケットソートについて詳しく載ってるサイトってない?
685 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 15:36:23.00 ID:WvjifrsL.net] >>679 wikipediaにまんまJavaのサンプルまで載ってる
686 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 15:57:39.95 ID:uQv9FdG+.net] 明解C言語 入門編を終え、JAVAに手を出してみようと思っています。 オススメの参考書やウェブサイトを教えてくださ。
687 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 16:34:28.11 ID:X5qIavLL.net] やさしいJava 高橋麻奈 Java言語プログラミングレッスン 上/下 結城浩 スッキリわかるJava入門 中山清喬 これらが鉄板 kのうちどれか一つを読むだけでよい
688 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 16:41:23.66 ID:nXiWoFV8.net] javaやってる人ってWebアプリ作ってるの?
689 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 16:53:21.04 ID:GOu/rXMl.net] 作ってるよ
690 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 17:38:33.11 ID:DmkML1Ld.net] >>673 2001〜2002年頃、柴田望洋先生のC言語の本で勉強してました。 Javaは今週の月曜からやってます。
691 名前:スッキリ厨 mailto:sage [2015/09/19(土) 00:20:14.24 ID:njZddJ5V.net] >>681 この本でしっかりと、オブジェクト指向を学ぶ スッキリわかる Java入門 第2版、2014 以下のスレも見て 推薦図書/必読書のためのスレッド 77 ttp://peace.2ch.net/test/read.cgi/tech/1433427893/390
692 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 14:35:22.81 ID:c6kn+dRM.net] >>682 >>686 ありがとうございます! 質問なのですが、最新版を買うメリットはあるのでしょうか? それぞれ前の版が中古でかなり安くなっているので…
693 名前:デフォルトの名無しさん [2015/09/20(日) 19:02:57.73 ID:zBtnypie.net] javaの本をよんで、適当なandroidアプリを作成し 現場に入って6ヶ月で周りの現場の人と同じコードがかけないからやれる作業が少ない 普通何ヶ月で書けるようになるものなんですか
694 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 19:11:03.81 ID:E+W5aSdn.net] 普通は7ヶ月目に入ったとき突然書けるようになるよ とか言っておけば満足してくれるかな?
695 名前:デフォルトの名無しさん [2015/09/20(日) 19:19:00.32 ID:UYQtClXz.net] なんだコイツ。 頭おかしいんじゃねーのか? 満足してくれるかな?だってよ。
696 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 19:19:57.36 ID:E+W5aSdn.net] うるせえよ氏ね
697 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 19:39:54.02 ID:B38jiRQG.net] >>690 はたった今 氏んだよ これで満足してくれるかな?
698 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 19:42:28.82 ID:E+W5aSdn.net] うん
699 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 20:10:38.78 ID:b8x7+B6S.net] あ
700 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 21:13:56.64 ID:V6MaWgnu.net] >>688 周りと自分で何が違うかよーーーく観察したらええ
701 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 21:15:24.15 ID:zBtnypie.net] >>688 誰か答えよろしくお願い
702 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 21:16:09.39 ID:zBtnypie.net] >>695 観察できないかな。PCでやってる作業みれるわけでないし 見れても解説がないと何やろうとしてるかわかりにくい
703 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 21:30:13.76 ID:b8x7+B6S.net] テスト
704 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 21:34:01.72 ID:b8x7+B6S.net] trycatchの中に書くコードは例外が発生するコードに限定すべきですか? trycatchの前で変数の初期化があるのですが、trycatchの中で変数の初期化をやる不都合などありますか?
705 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 21:35:47.33 ID:b8x7+B6S.net] もう一つ あるテンプレートファイルがあってあそれを読み込んで加工して出力するというプログラムがあります。
706 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 21:37:16.31 ID:b8x7+B6S.net] そのテンプレートファイルを読み込んだオブジェクトをシリアライズ化して保存して、次回からそれ読み込んで使うことでパフォーマンス等何かメリットはありますか?
707 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 22:02:45.30 ID:V6MaWgnu.net] >>697 任された実装はそのまま使われないで、手直しされるだろ?その直された理由とかちゃんと理解してるか? 何ヵ月で書ける?なんて聞いてる時点で間違い、時間がたてば知識と経験がつくなんて大間違い やるか、やら
708 名前:ないかが出来る出来ないにつながる [] [ここ壊れてます]
709 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 22:16:51.12 ID:GVuO7Qv0.net] >>701 毎回加工するのが気にならなければ良いと思う
710 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 23:10:02.96 ID:vBjKt0IW.net] >>687 安いのなら、ひとまず買えば? それで不満足なら、新しい本も買う
711 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 10:59:43.70 ID:jcdM4XWK.net] >>699 try-catch文を小さなスコープにしてしまうと見辛くなるからあまりやらないけどな 変数の宣言・初期化は、なるべく変数の利用場所に近い方がいいから、自分ならtry-catch文の中でも良いと思う
712 名前:デフォルトの名無しさん [2015/09/21(月) 18:47:18.33 ID:uzUegnmN.net] いくつか質問があります クラス内でstaticとそうでないメソッドはどっちを先に記述したほうがよいですか? ゲッターセッターは上記の上か下どっちに書いたほうがよいですか? ドキュメントなどでクラス名#メソッドような書き方を見ますがクラス名.メソッドでないのはなぜですか? お願いします
713 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 19:01:28.68 ID:jD6X6wa8.net] >>706 メソッドの順番は趣味みたいなもんだから、他のクラスとも同じになってればどの順番でもいいんじゃない 自分ならよく見る順に定義するから、static、static以外、getter/setterに書く。かつ、publicが先でprivateは後にする。
714 名前:デフォルトの名無しさん [2015/09/22(火) 02:39:25.50 ID:LWcwCDYy.net] >>707 なるほどわかりました ありがとうございます
715 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 06:15:28.11 ID:DWZBoHOA.net] AクラスにあるprivateなB型のフィールドのB#method()を実行するにはどうやったらいいですか?
716 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 11:13:57.62 ID:odwLwygr.net] 普通はできないけど、どうしてもと言うことならここを参考に www.ne.jp/asahi/hishidama/home/tech/java/reflection.html#private_member
717 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 21:50:27.98 ID:pdjQKPiJ.net] 抽象クラスにファクトリメソッドを実装したい
718 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 21:53:46.45 ID:pdjQKPiJ.net] ファクトリーーーーーーッッッ!!!!
719 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 22:21:50.75 ID:ongmovxt.net] 配列やリストをintより長くしたい時はどうするんだ? 例えば世界の人の名前を配列に入れるとしたらintじゃ収まらないし
720 名前:デフォルトの名無しさん [2015/09/22(火) 22:43:11.70 ID:/GkE8iwE.net] >>713 longでlinked listを実装するのが簡単な気がするけれども、 ジャグ配列を使えばdynamic arrayも実装できそうな気がする
721 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 22:45:39.84 ID:ongmovxt.net] >>714 自分でリスト作ったり出来るのか ただ試しにintの最大値でnew byte[]したらメモリエラーになった
722 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 22:59:03.85 ID:ZRAq8Cy7.net] >>709 void c(){ b.method() }
723 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 22:59:08.63 ID:odwLwygr.net] intの最大値って2,147,483,647だから実行時にヒープサイズを2GB以上にしないと 世界中の人の名前を記録するならこれでも足りないから、ファイルに書くとか、効率の良い方法にする必要がある
724 名前:デフォルトの名無しさん [2015/09/22(火) 23:06:16.47 ID:/GkE8iwE.net] >>715 こんなの見つけた。 Java SE 8 Update 31 で、ByteArrayOutputStream のサイズ上限が拡大していました d.hatena.ne.jp/chiheisen/comment/20150121 仮想マシンによって配列の上限は変わるのだけれども、 Oracle JDK 64bitではInteger.MAX_VALUE - 2なんだって。 メモリを潤沢に積んでいて仮想マシンがそれを使えるなら行けるはずよ。
725 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 09:34:26.13 ID:r8LABhf3.net] OracleのJavaの資格を取るために勉強中なのですが、どう勉強すればいいのでしょうか。 たとえば、 >Javaテクノロジーの特徴の説明 という項目があるのですが、Javaの特徴という事は、他の言語もそれなりに勉強しなければ特定言語の特徴なんて見えてこない気がするんですが、とてもそんな余裕はないです。
726 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 10:15:11.53 ID:03GKR7UV.net] >>719 そのままググるとGoogle Booksの試験の教科書のサンプルへ飛ぶリンクが見つかるけど、そこに丸々書いてある。
727 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 13:57:21.25 ID:r8LABhf3.net] >>720 ありがとうございます。 VMのメモリー管理システムとかクラスファイルの生成システムとか思ってたら全然違いました・・・・・(´・ω・`)
728 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 17:25:43.02 ID:csQOVbIe.net] 抽象クラスAとそれを継承したクラスA1,A2,A3があって、 コマンド電文に応じてオブジェクトを生成したいとする。 最初に受信したときはまだ自分がどれかはわからないので new A して、ある程度電文受信した時点で A1,A2,A3の どれかが判明するので、それから Aのメソッドの中で 自分自身をA1,A2,A3のどれかに変身させたいんだけど そんなこと可能?
729 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 17:51:31.82 ID:o45gp/p9.net] >new A して 抽象クラスはnewできない >Aのメソッドの中で自分自身をA1,A2,A3のどれかに変身 Aを通常のクラスにして(あるいは実体化用の子クラスA'を作って)、 A1,A2,A3のそれぞれにA(A')を引数に持ち、内部でフィールドをコピーするコンストラクタを実装すれば似たようなことは可能 ただ、「最初は適当なクラスで実体化させ、途中で別のクラスにする」なんてのはクラス設計かコーディング設計が間違ってる
730 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 17:55:53.30 ID:o45gp/p9.net] おっと、「それから Aのメソッドの中で」を見落としてたな それであればAのラッパークラスを作って、実体をフィールドで管理するしかないかな class AWrapper
731 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 17:57:12.45 ID:o45gp/p9.net] ミス class AWrapper{ public private A instance; pubic void changeInstance }
732 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 18:00:57.58 ID:o45gp/p9.net] 再ミス… class AWrapper{ private A instance; public AWrapper(){ instance = new A; } pubic void changeInstance(){ instance=new A1; instance=new A2; instance=new A3; } } みたいな感じ。
733 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 18:03:06.29 ID:csQOVbIe.net] >>723 >最初は適当なクラスで実体化させ、途中で別のクラスにする これよくやるんだけど、ダメ設計かねぇ 正体不明のまま寿命がくるオブジェクトもあるし
734 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 19:07:14.96 ID:p3EVRPHl.net] >>723 コーディング設計って何?
735 名前:デフォルトの名無しさん mailto:sage [2015/09/23(水) 22:19:39.65 ID:uGsC8F+E.net] 内部設計をもう少し詳細化したもの?
736 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 09:14:58.39 ID:qZP46lxp.net] 正体不明のクラスのインスタンスを持たせたクラスをfactoryパターンで作るのが良さそう。
737 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 09:38:43.01 ID:9GfCZfDJ.net] >>730 問題は変身部分なんだよね 自分でthisに代入できれば もう少し柔軟に設計できるんだけど
738 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 10:37:56.50 ID:VQul4fta.net] This is a pen.
739 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 15:49:28.77 ID:6rsc/VuH.net] 123456と2を与えると123400を返す関数って for文つかって出来る?
740 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 16:05:00.38 ID:adAR7FC2.net] できる? そりゃ普通にできるが何か? ロジック教えてください。お願いします って言えないクズはカエレ‼
741 名前:デフォルトの名無しさん [2015/09/24(木) 16:11:03.09 ID:h5xEnf9P.net] >>734 さっさとやれよクズ
742 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 16:18:17.76 ID:6rsc/VuH.net] >>734 教えてください、お願いします
743 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 16:29:58.24 ID:BE1yU5Mz.net] >>733 は自分が何を聞いているのかもよく分かってないんだろうな
744 名前:デフォルトの名無しさん [2015/09/24(木) 16:47:05.11 ID:h5xEnf9P.net] >>737 何聞いてるのかさっさと教えろやクズ
745 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 18:08:50.15 ID:2/TDm+02.net] >>733 できた https://paiza.io/projects/lXE5zq7SkzrhRGV2wXxTZw
746 名前:デフォルトの名無しさん [2015/09/24(木) 22:42:27.66 ID:z3DWdztr.net] >>733 阿呆らしい実装だけど https://ideone.com/6M4gYg
747 名前:デフォルトの名無しさん [2015/09/24(木) 23:14:38.12 ID:h5xEnf9P.net] >>733 あっしも参戦 https://ideone.com/gcYHiU
748 名前:デフォルトの名無しさん mailto:sage [2015/09/24(木) 23:20:15.63 ID:nYzfD9YJ.net] 固定で123400を返せばいい for文は使う必要がない
749 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 02:19:22.01 ID:apWN/1u6.net] 超絶初心者なんですがこの考えであってるかどうかだけ教えて下さい bitbucketにあるA.jarというツールに他の人が新しい機能を追加したんですが、 それが.javaファイルでブランチにあげていました そのjavaをjarに組み込みたい場合は、まずjavaをclassにコンパイルして jarの拡張子をzip変えて、コンパイルしたclassファイルをzip内に 突っ込んで上書きして拡張子をjarに戻すという方向で合ってますか?
750 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 03:08:53.31 ID:od9Azemj.net] surfaceView使ってテトリス作ろうと思ってるんですが、ブロックの落下処理が上手くいきません。 具体的には、ブロックの初期位置をlocation=Point{x,y}という感じでPointで示してるんですが、 最初の位置が{5,0}だとして、次の位置が{5,1}となるようにy++を増やしていってます。 ですが、y=0とy=1の時は恐らく上手く処理できているのですが、y=2からまた新たなブロックが描画されて、落下するブロックが二つになります。 そしてy=4となると、またブロックが増え、3つの連続したブロックが落下してきます。同様にyが+2される度にどんどんブロックが増えていきます。
751 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 03:11:24.75 ID:od9Azemj.net] https://ideone.com/dvYl4N これなんですが、どこの記述がおかしいのでしょうか? ご教授いただけると幸いです。