1 名前:デフォルトの名無しさん [2010/05/01(土) 12:46:59 ] 1 名前:デフォルトの名無しさん[] 投稿日:2010/03/16(火) 10:23:04 プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 ttp://pc11.2ch.net/hp/ Webプログラミング ttp://pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 ttp://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド ★★Java質問・相談スレッド137★★ pc12.2ch.net/test/read.cgi/tech/1268702584/ 次スレは>>950 あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 ttp://www.wikiroom.com/java/
21 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:32:34 ] 元 1 000 1000 (符号付8ビット整数) 算術 左シフト 0 001 0000 右シフト 1 100 0100 論理 左シフト 0 001 0000 右シフト 0 100 0100
22 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:38:39 ] >>8 上シフトや下シフトが無いのも差別ニダ!
23 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:42:27 ] どうやら俺の理解が足りていないようだ >>21 論理シフトは符号付に向いてないからいいとして 算術左シフトで、結果的に元の数が負だったのが 00010000という負でない数になってるのは正しいのですか?
24 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:46:25 ] ビット演算 - Wikipedia ttp://ja.wikipedia.org/wiki/%E3%83%93%E3%83%83%E3%83%88%E6%BC%94%E7%AE%97 Wikipediaだと算術左シフトは符号ビット無視してる シフト演算 - Security Akademeia ttp://akademeia.info/index.php?%A5%B7%A5%D5%A5%C8%B1%E9%BB%BB このサイトだと算術左シフトは符号ビット残してる どっちが正しいのか
25 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:50:57 ] CASL II だと算術左シフトは符号ビット残す。 CやJavaだと算術左シフト=論理左シフトになる。
26 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:55:37 ] >>19 符号ビット残すと数値がおかしくなるので 算術左シフト自体に利用価値が無い。使うような用途が無い。 だから存在しない
27 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 17:24:56 ] つまり 10011000 (-104)を-208にするためにはどうすればいいってばよ?
28 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 17:48:54 ] >>21 8bitしかかいてないのでbyteデータだとすると 論理 ×右シフト 0 100 0100 ○右シフト 1 100 0100 なぜなら、論理シフトであろうと、シフトする前に32bitに符号拡張される謎仕様だから
29 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 18:00:49 ] 理論上じゃなくてまずJava仕様だったなwスレ的にw
30 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 18:05:15 ] >>27 int a=-104; System.out.println("a="+a); a*=2; System.out.println("a="+a); //Output // a=-104 // a=-208
31 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 18:20:16 ] >>27 8bitでは-208は表せませんが
32 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 20:58:15 ] 自分をシフトしたいわ
33 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 21:04:17 ] >>31 8bit整数を負符号オンリーで現せば ほら 0〜-255 この通り1
34 名前:デフォルトの名無しさん [2010/05/01(土) 21:30:38 ] そんな一般的でない符号化が許されるなら、1ビットで-208表したっていいだろ。0ビットでもいいかもな。
35 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:08:47 ] 0bitは無理だろ
36 名前:デフォルトの名無しさん [2010/05/01(土) 22:19:55 ] Javaに限らず 算術左シフトなんて需要ないだろ・・・
37 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:30:05 ] >>34 int hugo(byte n) { return -127+(int)n; }
38 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 23:39:30 ] >>36 Javaに限らなければ需要はあるぞ オーバーフローフラグを持つCPUなら算術シフトと論理シフトでフラグの変化が違う
39 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 00:06:29 ] それでも負数に使うことは無いだろう
40 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 01:46:57 ] 内部クラスでthisって使ったらthisは何を参照してることになるの?
41 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 03:38:40 ] >>40 内部クラス
42 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 04:33:26 ] >>41 なるほど。以外に不便そうだな内部クラスってのは
43 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 04:38:57 ] class ClassA { private static ClassA classA; ClassA() { classA=this; ClassB classB=new ClassB(); } void hoge() { System.out.println("hoge!"); } class ClassB { ClassB() { this.hoge(); ClassA.classA.hoge(); } void hoge() { System.out.println("hoge?"); } } }
44 名前:デフォルトの名無しさん [2010/05/02(日) 10:52:12 ] 全ての植物は植物クラスを継承する 全ての食物は食物クラスを継承する このような考えを元に継承を考えたとき、多重継承が無いJavaでは どちらにも該当するりんごクラスなどをどのように実装すればいいんでしょうか?
45 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 11:36:03 ] class Plant{ } interface Eatable( } class Apple extends Plant implemnts Eatable{ } こんなんでどうでしょ? 食べられるものにはEatableを実装と言うことで。
46 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 12:55:39 ] 正直継承よりはインタフェースにこだわった方がいいよ。 あと別にクラスで無理やり自然界を記述しなくてもいいから。
47 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:00:46 ] で、Java 7 は何時出るんだよ?
48 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:16:38 ] >>43 そんな危ないことしなくても、外側のメンバを直接呼び出すか、 名前がかぶっているなら ClassA.this.hoge(); でいい
49 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 15:12:41 ] >>48 クラス名.thisの参照方法を知らないんだろ。
50 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 15:38:55 ] public ClassA { private static ClassA classa = new ClassA(); private ClassA() { new ClassB(); } public ClassA getInstance() { return classa; } public void hoge() { System.out.println("hoge!"); } private class ClassB { public ClassB() { hoge(); ClassA.hoge(); } public void hoge() { System.out.println("hoge?"); } } } 何となく、>>43 のを書き直してみた 専ブラで書いたから、スペルとか間違えてるかも
51 名前:デフォルトの名無しさん [2010/05/02(日) 23:25:06 ] >>48-49 >クラス名.this kwsk
52 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 23:27:13 ] >>50 本来の形から>>40 の意図に合わせて単純化されたクラスをそのように直してしまってもいいのでしょうか?
53 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 23:32:55 ] 結論: 設計を見直せ
54 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 23:34:11 ] >>51 Java で内部クラスから外部クラスの関数を明示的に呼ぶときはどう書くのか教えてください。 - 人力検索はてな q.hatena.ne.jp/1122203296
55 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 23:37:53 ] class ClassA { ClassA() { new ClassB(); } class ClassB { ClassB() { new ClassA(); } } }
56 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 00:15:31 ] 別にコンストラクタで無限ループさせるなら内部クラス経なくてもよろしくてよ
57 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 01:05:35 ] 出来る出来ないという仕様的な話はありかと思うけど、 実際にこんなコード渡されたらぶちぎれるw
58 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 04:28:51 ] switchのジャンプで一番最後のところでもbreak;って入れたほうがいいの? 例えば switch (n) { case 1: hoge(); break; case 2: hoge2(); break; //←これとか } switch (p) { case 1: hogehoge(); break; case 2: hogehoge2(); break; default: hogehoge3(); break; //←これとか }
59 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 04:35:52 ] 一々選択的に書いたり書かなかったりしていると何時かうっかりミスが出るから 書く癖を付けとけ。
60 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 05:05:18 ] switch多重ネストでソースがごちゃごちゃしてわけわかんなくなった
61 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 05:14:01 ] switchのcaseをインデントする癖がついてるんだけど、やめたほうがいいのかな
62 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 05:21:31 ] 今時は IDE も色分けするしフォーマッターも付いてるから 仕事でコーディング規約とかなければその程度は良いんじゃねぇか。
63 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 08:54:01 ] ある程度まではオートフォーマッタとCheckstyleやら Findbugsに全てを委ねてる
64 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:20:00 ] defaultで処理をするのは意味的にどうかと思う。 っていう宗教戦争を投げかけてみる。
65 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:29:22 ] まあ列挙に対する全てのパターンを記述する場合とか、 defaultにAssertionErrorをスローするコードとか書くんじゃね?
66 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 16:06:41 ] LinkedHashSetにはなぜlistIterator()メソッドがないのだろう。 ListIterator#previous()で反復子を前に移動したかったのに。 next()しかできないよ。 しぶしぶLinkedHashSet使うの辞めてLinkedListにしたけど。 Setは重複を許さないから使い勝手がいいと思ったんだけどな。 LinkedListにしたので挿入時に重複チェックしなきゃならない。 もっといいCollection型はないかな?
67 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 16:12:17 ] あと、ListIterator#next()とprevious()の仕様、反復子の隣の要素取ってから反復子を隣に移動させているが これを、反復子を移動させてから隣の要素とるように指定できないだろうか。
68 名前:67 mailto:sage [2010/05/03(月) 16:29:46 ] 一応、自己解決したかも知れない。 List<String> ll = new LinkedList<String>(); ll.add("A"); ll.add("B"); ll.add("C"); ListIterator<String> it = new ListIterator<String>(); String result; it.next(); result = it.next(); it.previous(); return result; .//これでカーソルをAとBの間に移動しつつBを取得できる。 next()二回実行してprevious()を実行するというやり方。 逆方向の場合はprevious()を二回実行してからnext()を実行。 問題はListの末端に来たときの処理も作っておかないといけないのが難点。 if(lt.hasNext())とかif(it.hasPrevious())とかでまいどまいどチェックしないといけない。 本当は、末端に来てnext()したら先頭に戻る永久ループ型のIteratorが欲しいのだが…。 時計の針のように12時になったら0時からスタートする、というIterator。 Apache Common Collectionsあたりでも探すしかないだろうか…。しかしあのCollection Frameworkはまだ Genericsに完全対応していないし…。
69 名前:67 [2010/05/03(月) 16:48:13 ] 見つけた。末端でnext()すると先頭に戻るLoopingListIteratorを発見。 案の定、Genericsに対応していない残念なコレクションフレームワークだった。 commons.apache.org/collections/api-release/org/apache/commons/collections/iterators/LoopingListIterator.html しかしLinkedListにはこのIteratorに変換するメソッドがない。 ということはどこかのクラスのstaticメソッドを使うのだろうか、それともこのLoopingに対応したListIteratorと 別途用意しなければないのだろうか…。
70 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 16:50:00 ] commons.apache.org/collections/api-release/org/apache/commons/collections/IteratorUtils.html#loopingListIterator (java.util.List) やはり専用のメソッドが用意されていた。 IteratorUtils.loopingListIterator(java.util.List)
71 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 17:02:54 ] Set は List のように順序性を維持するものではない。
72 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 17:19:33 ] >>68 >本当は、末端に来てnext()したら先頭に戻る永久ループ型のIteratorが欲しいのだが…。 これでいけない? www.javaworld.com/jw-07-1997/jw-07-enumerated.html?page=6
73 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 17:20:27 ] それくらいテメェで作れよと。
74 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 17:25:41 ] >>69 > しかしLinkedListにはこのIteratorに変換するメソッドがない。 コンストラクタに放り込むだけじゃない?
75 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 19:05:07 ] #include standard io.h
76 名前:67 mailto:sage [2010/05/03(月) 21:59:19 ] >>71 しかし、LinkedHashSetは順序性を維持するものになっている。 LinkedHashMapも同様。LinkedとついたSetとMapはadd()した順番にオブジェクトが並び順序性が保証されている。 順序性が保証されないのはHashSetとHashMap。 >>72 おお自作物。アルゴリズムとデータ構造の本に載ってそうなコードだ。 すでにCommons CollectionsにLoopingListIterator という便利なクラスを見つけたので一応は解決したと思う。 >>74 それも一応、>>70 のユーティリティクラスを使うという解決策を見つけた。 今探しているのは反復子を移動してからデータを取り出す方法。 現状のnext()はデータを取り出してから反復子を移動している。 何をやりたいかというと、時計の針のようなものを再現したいだけ。 Iteratorを継承した新しいIteratorクラスを作ってそこに独自のnext()メソッドを実装する しかないだろうか。 俺はIteratorの間違った使い方を試そうとしているのかもしれない。
77 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 22:05:33 ] >>74 IteratorUtilsが必要と思ったら コンストラクタもあった。 LoopingListIterator(java.util.List list)
78 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:13:31 ] int h=100,i=100,j=100; h += ++h; i += i++; j += (j+=1) + (j+=10); System.out.println("h="+h); System.out.println("i="+i); System.out.println("j="+j); 無精できねえ・・・なんてこったい
79 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:49:55 ] >>78 結果が分からないCよりはマシだろ
80 名前:デフォルトの名無しさん [2010/05/04(火) 02:20:03 ] >>35 1ビットあれば、二つの数(例えば0と-208)を符号化できる。 0ビットあれば、一つの数(例えば-208)を符号化できる。 一般にnビットあれば、2のn乗個の数を符号化できる。
81 名前:デフォルトの名無しさん [2010/05/04(火) 02:56:50 ] その0biって奴tはハードウェア的にもソフトウェア的にも実現不可能だな 概念的には存在しうるみたいだけど イデアみたいなもんか?
82 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:51:36 ] セットにイテレータなんてないだろ。 自作すりゃいいもんをだらだら張り付けるな。 ブログでやれ。
83 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:24:46 ] え?SetはCollectionだからIterableだろ?
84 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:07:44 ] >>83 それはJava Collection Frameworkの実装の都合だろ。 setてのはふつう順不同というか要素の前後関係は知らないもんだろ。 そういう用途はlinkedlistだ。 たとえIteratorを持ってたとしてもputやsetした順に 取得できる保証もないし前後関係を知らないんだからprevで要素が取れるわけもない。 LinkedHashSetがあがってるがこれは実装由来のコレクション。特殊な要件で使うもんだ。
85 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:30:57 ] >>84 SetがIterableであることが、実装上の都合だという ソースはどこにあります?
86 名前:デフォルトの名無しさん [2010/05/04(火) 16:53:06 ] 実装されているが、仕様に規定がないなら、それは実装上の都合ということ。 ないことは示せない。あえて示すならこの世の仕様をすべて見ろと言うしか無い。
87 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:07:26 ] いや、意味が分からないんだが。IterableはCollectionの契約だろ? まあ気にくわないならUnsupportedOperationExceptionでも投げればいいけど。 正直何をいいたいのかさっぱり。
88 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:46:07 ] お前がコレクションやらコンテナと呼ばれるものの使い方を理解してないだけだろ。 だいたいLinkedHashSetは既存のsetを守りつつ順序を保ちたいときに使うラッパーだ。 IterableなのはCollectionインターフェイスで強制されてるからだ。
89 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:49:27 ] >>87 たぶん 「Setってーのは重複要素がないコレクションなんだぜ。」 「Setの実装クラスが何を持とうとそれは実装都合なんだぜ。」 「CollectionってーのはIterableだが、順序付けされているかそうでないかは実装クラス次第なんだぜ。」 ってことをいいたいんじゃないのかな。
90 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:55:52 ] >>89 いや、>>82 でSetにイテレータ無いって言ってるから どういう意味かと思って。
91 名前:89 mailto:sage [2010/05/04(火) 18:17:25 ] >>90 それは、ミスったんじゃないかな。>>84 で、 「Iteratorがあっても(入れた時の)順序を保障するものではない。」※括弧内はおれ補完 と記載されているし。 ところで、なんだかIteratorとIterableをゴチャゴチャに書かれている書き込みが多い気がする。
92 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:29:49 ] Collectionの話してるんだ。混ぜて構わんだろ。
93 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:44:50 ] 列挙性とその順序性は全く別の話。 分かっていないバカが一匹混ぜ繰り返している。
94 名前:デフォルトの名無しさん [2010/05/04(火) 22:36:28 ] あるメソッドの中だけ別のpackageを参照するように出来ますか? クラスのあたまで import org.easymock.EasyMock; とやると そのクラスのメソッド内で EasyMock. と呼び出すと上のパッケージのクラスを参照するじゃないですか? で、あるメソッドだけ org.easymock.classextension.EasyMock のクラスを参照したいのですが、上記のようにフル修飾名をいちいち入れるとソースが見づらくなるので、あたまでなんか宣言して、そのメソッドだけ別のパッケージを参照するように出来ませんでしたっけ? 方法ありましたらお願いします
95 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 23:05:43 ] JavaScript なら出来るが。
96 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 23:31:04 ] Effective Java 2版 140p に通常のキャストと Class.cast の説明があったのですが、意味がよく分かりませんでした。 class Favorites { private Map<Class<?>, Object> favorites = new HashMap<Class<?>, Object>(); // Class.cast public <T> T getFavorite(Class<T> type) { return type.cast(favorites.get(type)); } // キャスト演算子 public <T> T getFavorite(Class<T> type) { return (T)favorites.get(type); } } 上記の Class.cast を使う場合ととキャスト演算子を使う場合ではどのような差があるのでしょうか? この二つに差があるのだとしたら、どのようなときにどう使い分けるのでしょうか? どうかお願いします。
97 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:04:29 ] >>96 public Favorites() { favorites.put(Integer.class, "string"); } と変なもの入れて Favorites f = new Favorites(); try { System.out.println(f.getFavoriteCast(Integer.class)); } catch (Exception e) { e.printStackTrace(); } try { System.out.println(f.getFavorite(Integer.class)); } catch (Exception e) { e.printStackTrace(); } と使ってみるといい。f.getFavoriteCastはClass.cast版ね。
98 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 02:09:36 ] 質問です。 getClass()メソッドのテストをしようと思い、次のようなソースを実行しました。 配列int[]とStringクラスでgetClass()を行い、結果をprintln()で出力するものです。 出力結果の" class [I "というのはどういう意味なんでしょうか? (てっきり"class java.lang.reflect.Array"あたりが出力されると思ったのですが…) そもそも配列にgetClass()を行うのは好ましくないのでしょうか? 【ソース】 public class Test1 { public static void main(String[] args){ int[] a = {1,2,3}; System.out.println(a.getClass()); System.out.println((new String("abc")).getClass()); } } 【出力結果】 class [I class java.lang.String 以上です。 どうぞよろしくお願いします。
99 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 02:22:42 ] >>98 java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#14152
100 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 02:37:47 ] >>99 こんな仕様があったとは知りませんでした。勉強になります。 夜遅くにご回答いただき、どうもありがとうございました。
101 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 04:33:17 ] >>97 キャスト演算子は型が一致しなくても放置で Class.cast は型が一致しなければ ClassCastException を投げる の違いということですか?
102 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 06:34:21 ] Class#castだと Integer.class.cast("") とかコンパイル通っちゃう。
103 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:55:29 ] そんな珍しいコードよう書かんわw ちなみに、ジェネリックスとの組み合わせは分かりにくくなる罠。 現状のジェネリックスはある種のトリックだから。 www.ibm.com/developerworks/jp/java/library/j-jtp01255/
104 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 15:37:01 ] class ClassA { private String name=null; ClassA(String name) { this.name=name; } String getName() { return name; } void setName(String name) { this.name=name; } } class ClassB { static void method1(ClassA c) { c.setName("Method 1"); } static void method2(ClassA c) { c=new ClassA("Method 2"); } } とあったとき ClassA a=new ClassA("Class A"); System.out.println(a.getName()); ClassB.method1(a); System.out.println(a.getName()); ClassB.method2(a); System.out.println(a.getName()); としたら Output: Class A Method 1 Method 2 ってなるよね?
105 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 16:00:45 ] >>104 最後のMethod 2はMethod 1のままだろ。 Javaでは参照渡しはできない。参照の値渡しなら出来る。
106 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 16:39:21 ] なるほど・・・残念
107 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:08:05 ] Class.cast なんて初めて知った どっちも実行時に型チェックして例外投げると思うんだが何が違うの?
108 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:25:43 ] >>97 で相違動作のサンプルまで書いてあるじゃねーか。
109 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:28:47 ] 未チェック警告抑止しなきゃならない時に手元に Class オブジェクトがあれば Class#cast() でやってる。 private final Map<String,Object> values = new HashMap<String,Object>(); public <T> T getValue(String key, Class<T> type){ Object value = values.get(key); if(value == null) return value; assert(type.isAssignableFrom(value.getClass()): value.getClass().getSimpleType(); return type.cast(value); }
110 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:48:08 ] >>97 やってみたけどf.getFavoriteが例外投げないのは何故? 通常のキャストも実行時の型チェックやってるよね?
111 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:01:52 ] >>110 ジェネリクスのイレイジャ機構により、 おそらくキャストしてる方は実行時Integer型ではなく Object型そのまんまで扱ってる。(実行時に型情報は消えるから) ただ、もちろん Integer i = f.getFavoriteCast(〜〜); とすればClassCastExceptionが発生する。
112 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:02:21 ] >>109 Classオブジェクトが無いときはどうするの?
113 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:11:57 ] >>112 Classを用意できない場合ってあるかい?
114 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:14:46 ] curses的なことができる何かってないですか? jcursesというのとlibjcsiというのを使ってみたけど、 マルチバイト文字に対応してない?っぽいので、 いいの知ってる方教えてください。
115 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 21:13:38 ] >>113 1.5以前とか総称型を想定してないのとか
116 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:14:47 ] 普通のプログラミングとネットワークプログラミングは別なんでしょうか? ネットワークプログラミングを習得しないといけないことになったんですが 即ネットワークプログラミング? 普通のプログラミング習得⇒ネットワーク? プログラムに関してはC言語をファイルの入出力なんかあたりまでやった程度です。
117 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:15:18 ] jcursesもlibjcsiなんかして日本語通ったはずだが忘れた。 CHARVAは無理だった。
118 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:16:51 ] 1.5以前というか総称型以前はそもそも未チェック警告が無いからキャストで 問題なかったはず。
119 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:29:24 ] >>116 普通の業務アプリではネットワークプログラミングはしません。 そういう意味では別です。それ以外を除けば別じゃありません。 ネットワークプログラミングというのは、 簡単に言えば、ちょっと面倒くさいファイル入出力です。
120 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:38:55 ] プロトコル考えなきゃ行けないからちょっとでは済まんだろw
121 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:40:20 ] じゃあ面倒くさいファイル入出力でいいよ。