1 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:48:24 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド111【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1200151522/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝のう存じます。 次スレは>>980 あたりで。
267 名前:デフォルトの名無しさん [2008/02/15(金) 02:01:33 ] 先ほどスレ立てるまでもない質問スレで質問させてもらったんですが、板違いってことで こちらで再度質問させてくださいまし。 一昨日からずっとこの問題を考えているのですが、基礎知識があまりに不足していて全くわからないで困っています。 プログラムに詳しい方いましたら長いですが完全解答を導き出していただけませんでしょうか? 以下に掲げたおこずかい帳プログラムの説明を書きなさい。ただし、書き方は次の例 を参考にすること。<form name=f><input type=text name=i value=""><input type=button value="偶奇判定" onClick="check()"></form><script>function chech() {var a=Number(document.f.i.value);a=a+1;if(evenp(a)) alert("偶数");else alert("奇数");}function evenp(a){return a%2==0}</script> 【説明例】formタグとinputタグによって、画面にテキスト文字表示窓と偶奇判定用のボタンを表示。この際、ボタンをクリックした時、関数check()を呼び出すように設定する。 関数checkは、テキスト文字窓から入力された値(document.f.i.value)を関数Numberによって数値に変換し、これを変数aに代入する。ついで、aの値を1増やし、関数evenpによって変数aの 値が偶数か、奇数か判別し、偶数の時は"偶数"、奇数の時は"奇数"とalertウィンドウに表示する。関数evenpは、与えられた値(a)が偶数かどうか判別(aを2で割った余りが0かどうかで判定)し、結果(trueかfalse)を返す。
268 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:12:47 ] 何だこれ? 読む気しねえ
269 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:13:55 ] >>267 板違い Web 作成板池
270 名前:265 mailto:sage [2008/02/15(金) 02:40:39 ] XPath の表記に接頭辞付けて、その接頭辞に対する URI (XML のと同じ URI) を返す NamespaceContext サブクラス作らなきゃいけないみたいですね。
271 名前:デフォルトの名無しさん [2008/02/15(金) 03:14:39 ] >>267 板違いって言われてなお同じ板の別スレに投げるとは web制作板へ行ってもそのままじゃ誰も読んでくれんぞ あっちの板で質問するときはせめて改行を入れろ 長くなるようならうpろだにあげろ
272 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 03:42:55 ] >>264 お察しの通り、例外が発生した際の手順は見かけ以上に多く、議論の的になります。 例外を使う場面に関する検索キーワードとしては「java 例外 コスト」などでしょうか。 条件分岐目的で例外を発生させる書き方は、好まれていないように思えます。 instanceof とキャストと例外の話も面白い。
273 名前:デフォルトの名無しさん [2008/02/15(金) 05:59:57 ] httpclientを使用してログインが必要なサイトにアクセスしたはいいものの リダイレクトされて、html情報を取得できません。。。 ググってもリダイレクト先のURLを取得する方法がわかりませんー! どなたかご存じありませんか><
274 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 06:04:52 ] Location ヘッダを取れ。 つかリダイレクトを自動処理する設定くらいないのか。
275 名前:209 ◆xkgLgN/H4. mailto:sage [2008/02/15(金) 09:06:24 ] >>213-214 ,225-227 レスありがとうございました。 メソッドの事後条件チェックにアサーションを使用した例と 考えることにします。 引数チェックに見えるのが腑に落ちないですが、 そこは問題作成者の思いやりが足りなかったと思うことにします。
276 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 11:39:42 ] >>264 処理の重さが気になるって話なら、実際に例外が発生しない限りほとんどノーコストなんだし、 実際に例外が発生した場合にコストが高いのは、まぁエラー発生時のみだからと割り切る。 gotoっぽくてイヤって話なら、returnでエラーコード返す処理を連ねてくのに比べればマシかと。
277 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 12:30:20 ] paint(Graphics g)やupdate(Graphics g)のgの部分を他のクラスから使う方法はありますか? 今はエラーを表示するだけなのに、 paint(Graphics g){ test(g); } test(Graphics g){ ……… tset_error(g); } test_error(Graphics g){ g..drawString("エラーがでたよ",0,0); } こんな感じの入れ子が数段連なってます。 なんだかガベージコレクトも頻発してるみたいなのでGraphics gを無くしたいのです。
278 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 12:33:26 ] 根本的な使い方が間違っていると思われ
279 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 12:38:47 ] エラーに限らずほとんどのクラスにGraphicsが付いてるんですよ。 なんとかしたいでつ(>_<)
280 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 12:52:03 ] 作ったやつに氏ねと言ってくれ
281 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 12:57:06 ] >>277 設計を見直すべきかと paintの中で描画以外の処理をやってないか? paintでは描画に集中し、ほかの事はやらない 設計に問題がないのなら、gを渡すのは仕方ない あとガベージコレクションはgを渡してるのとはおそらく関係ない
282 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:11:25 ] >>281 Graphicsの入れ子はガベージコレクト的に問題ないと言うことですね。それを聞いて安心しました。 ということはImageや整数配列の入れ子が問題なのかな。 Cみたいな参照変数になってるのか、なってないのかがよく分からなくて。
283 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:22:23 ] Javaには参照渡ししかない。
284 名前:デフォルトの名無しさん [2008/02/15(金) 13:22:26 ] 直線のデータをdに入れます。 dは配列です。1次元目が開始位置、2次元目が終端です。 1次元目、2次元目がそれぞれx,yの座標を持っているので、 int d[][]型です。 int d[][] = new int[2][2]; 配列dのメモリ確保はこれでよいですか? C言語のようにd = new int[2]を実行してから、2次元目はforで回しながら newしなくてはならないのでしょうか?
285 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:23:32 ] ごめん、うそついた。 Javaの変数は、オブジェクトについてはすべて参照。 引数はすべて値渡しだが、オブジェクト自身を渡すことはできない。
286 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:26:54 ] >>284 www.javaroad.jp/java_array3.htm
287 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:52:34 ] >>285 試してみたら、Imageはコピーでした。Graphicsは参照。 全部試してみればよかったんだね。
288 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:39:04 ] java3級 落ちてきたオイラに一言。
289 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:46:37 ] java3級ってなに?
290 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 16:12:36 ] サーティファイか
291 名前:デフォルトの名無しさん [2008/02/15(金) 17:14:19 ] propertiesファイルで firstname = taro lastname = yamada fullname = ${lastname} ${firstname} みたいなことって無理ですか?
292 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:44:10 ] >>234 なんか、完ぺき主義者みたいだな。 ところどころで主語や目的語が抜けて凄いな。 何を多重継承したのかわからんし、何をどのようにコントロールしているのかもわからない。 5W1Hがなっていないというか。
293 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:17:48 ] >291 無理
294 名前:デフォルトの名無しさん [2008/02/15(金) 20:22:43 ] anko1;;あんこ anko2;;あんこ2 このような形式の辞書ファイル(100MB)を ランダムアクセスファイルで分割してメモリに読み込み 検索する辞書検索プログラムを作っているのですが 検索はできるのですが、かなり時間がかかり困っております ハッシュ系のコレクションフレームワークを使えとヒントをもらったのですが 100MBのデータをハッシュ化すると当然メモリがたりなくなりました 大量のデータをハッシュで高速に検索する方法をおしえていただけないでしょうか
295 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:28:00 ] >>292 KY
296 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:31:16 ] >>294 メモリ増設 てか、ヒープを256MBくらいにすればいいだろ
297 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:34:56 ] >>294 普通にデータベース使え。 それが嫌ならその辞書ファイルにインデックスでも付けろよ。
298 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:49:22 ] SAX パーサに Schema やなんかの Validator が設定できないみたいなんすけど 解析しながら ヴァリデーション ができるようには作れないんでしょうか。
299 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:29:55 ] >>294 他の人も書いてるけど、 普通にJavaDBでEmbeddedでやれば何も考えずに楽勝だと思うんだけど。 辞書ファイルがテキスト形式絶対でも nioだったらヒープ外にバッファが取られるから それほど遅くならんと思うがなぁ。 コマンドライン引数指定はしないとまずいし、今やってないかもしれないしなぁ、 どの程度のレスポンスで遅いって言ってるか解らないし。
300 名前:デフォルトの名無しさん [2008/02/15(金) 23:46:17 ] アプリの中のデフォルトフォントを設定したい。 Label l = new Label(""); l.setFont(f); をいちいちインスタンスごとにやるのではなくて、main()が始まったらすぐに デフォルトフォントを設定して、Label l = new Label("");した時点で そのフォントが適用されているようにはできませんか?
301 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:49:50 ] Labelをextendsしたらあかんの? 自前の俺Label作ったらええやん
302 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:52:16 ] >>300 Javadocには親のフォントを継承するかのように書いてあるから、 FrameにsetFontすればいいんじゃなかろうか
303 名前:デフォルトの名無しさん [2008/02/15(金) 23:52:59 ] Javaのソースコードを構文解析木に変換したいです。 たとえば a = max(b,c/2); だったら = / \ a max / \ b / / \ c 2 のような木を得たいです。出力のフォーマットはどのようなものでも構いません。 何かご存知の方いらっしゃいましたらよろしくお願いします。
304 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:56:01 ] JavaCCでググれ。 BNFが有るのが前提だったら楽。
305 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 00:34:55 ] >>301 Label.setFont()がありましたが、setDefaultFont()で解決しました。
306 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 00:50:02 ] >>302 ありがとうございます。あきらめました。 public class OrigApp extends IApplication { public OrigPanel oPanel; public void start() { oPanel = new OrigPanel(); oPanel.setFont(Font.getFont(Font.FACE_SYSTEM | Font.SIZE_SMALL | Font.STYLE_PLAIN)); Display.setCurrent(oPanel);
307 名前:デフォルトの名無しさん [2008/02/16(土) 00:52:49 ] ↑import com.nttdocomo.ui.Font; が無いとFontのシンボルが解決でないというコンパイルエラーです。 Fontというクラス名が衝突しているのですか?
308 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 00:55:39 ] iアプリかよ・・・・・。 >>307 いみがわからん。 インポートしちゃいかんの???
309 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 00:59:36 ] >>308 import com.nttdocomo.ui.* こう書けばFontが使えると思っていましたが、 >>306 のソースでは import com.nttdocomo.ui.Font; でなくてはコンパイルできない理由が分かりません。
310 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:09:57 ] なるほど。 じゃぁ、Fontというクラス名の衝突という認識で正しい。 import java.awt.*; とかやってないかい? そこのFontクラスがある。 つーか普通Fontっていうとjava.awt.Fontだとおもうんだが。 まぁ、ソースに明示的に oPanel.setFont(com.nttdocomo.ui.Font.getFont(com.nttdocomo.ui.Font.FACE_SYSTEM | com.nttdocomo.ui.Font.SIZE_SMALL | com.nttdocomo.ui.Font.STYLE_PLAIN)); って書いてもいいけどなw ま、Eclipseとか使えってことだ。
311 名前:デフォルトの名無しさん [2008/02/16(土) 01:17:23 ] java初心者です Cだとif文で〜のときは変数○に値□を入れて ーのときは変数○に値△をいれる ってのができるのにjavaはスコープの関係上それができません>< 一体どうやってやるんですか??
312 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:18:04 ] >>310 import java.awt.Font;は、携帯用のコンパイラだからエラーでしたが クラス名の衝突なんでしょうね。? Eclipse使ってないことまでバレちゃうんだな。 Eclipse使えと言われているんだが。
313 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:20:36 ] >>311 何を言っているんだ C のスコープも同じだろ (最近の ANSI C/C++ は違うのか?)。 String ○ = null; if(〜){ ○ = "□"; } else if(ー){ ○ = "△"; }
314 名前:デフォルトの名無しさん mailto:sge [2008/02/16(土) 01:21:09 ] >>311 おそらくキャストが間違っている
315 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:22:04 ] >>311 おそらく再起動したら直る
316 名前:デフォルトの名無しさん [2008/02/16(土) 01:23:22 ] >>311 おそらく激しく勘違い
317 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:25:15 ] >>312 あーごめん。 おれiアプリとか書いたこと無いから「クラス名の衝突」に関してはウソかもシレン。 IDE使ってないのが解るのは import java.awt.*; とかでアスタリスクを使ってるから。 Eclipseだったら使ってるクラスのみをインポートするし 作法的にも衝突が起きないように省略するとかしない。 スタティックインポートとかつかえんよね?iアプリだと。 コンパイルする前からエラー教えてくれるし、俺は初心者であっても使うべきだと思う。 今ならEclipseじゃなくてNetBeansでもいいとおもう。
318 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:26:58 ] なんか日本語むちゃくちゃだなorz. まだ会社なんだ・・・・・許してくれ。
319 名前:311 [2008/02/16(土) 01:28:52 ] 初期化してなかっただけでした\(^o^)/
320 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:37:47 ] >>317 スタティックインポートって聞いたことがありません。 まだインポがうまく使いこなせていませんが、 「Java謎+落とし穴徹底解明」を読んで、クラス名の衝突なのでは、と思いました。
321 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:45:24 ] Java5から導入されたんだが、 クラス名から書かなくてもメンバを参照できるってだけ。 この場合だと import static com.nttdocomo.ui.Font.FACE_SYSTEM って宣言しておけば Font.getFont(FACE_SYSTEM ・・・ って書けるってだけ。 あんまり便利でもないし、積極的に使う場面でもないな。
322 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:18:28 ] <? extends Hoge> と <? super Hoge> とかってどう違うの?
323 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:20:57 ] Hogeのサブクラスに限定するか、Hogeのスーパークラスに限定するかの違い
324 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:23:09 ] <? extends T> Tの派生クラスだったらなんでもいい <? super T> Tのスーパクラスだったらなんでもいい
325 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:58:46 ] class A{} class B extends A{} class C extends B{} とした場合、 List<? extends B> には B, C が入れられ List<? super B> には A, B (Object も) が入れられる って事で良いの? スーパークラスに限定が必要性ってどういう状況で出るんだろ。
326 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:04:25 ] 別にクラスだけじゃなくて、インターフェースも指定できるから、 状況的にはあるとおもうが。
327 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:08:26 ] ん? ゲネリクス の型チェックってコンパイル時の静的な奴だから <? super B> としても A にキャストした C のオブジェクトは OK になっちゃうんじゃないの?
328 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:15:07 ] >>325 たとえば、java.util.Collections#copyとか。 <? extends T>なListの要素を<? super T>なListにコピーするメソッド。 Tのサブクラスが入ったListはTのスーパークラスを入れられるListにコピー可能。
329 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:35:17 ] List<? extends B> bext1 = new ArrayList<A>(); // エラー List<? extends B> bext2 = new ArrayList<B>(); List<? extends B> bext3 = new ArrayList<C>(); List<? super B> bsup1 = new ArrayList<A>(); List<? super B> bsup2 = new ArrayList<B>(); List<? super B> bsup3 = new ArrayList<C>(); // エラー ↑これはまぁ分かりますと。 List<? extends B> bext = new ArrayList<C>(); bext.add(new A()); // エラー bext.add(new B()); // エラー bext.add(new C()); // エラー ↑何で全滅やねん! List<? super B> bsup = new ArrayList<A>(); bsup.add(new A()); // エラー bsup.add(new B()); bsup.add(new C()); ↑B のスーパークラスってのは代入の時のみで、 実際に適用するオブジェクトの型を上位に限定するんじゃないのか。
330 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:47:20 ] >>329 >List<? extends B> bext List<? extends B> ってことは、たとえば List<D> だったら add の引数は D でなければならないわけで、 その場合は A も B も C も add 出来ないことになる。 ? が確定しない限り、安易に add 出来ない。 >List<? super B> bsup = new ArrayList<A>(); こっちは、? が D ではありえない。List<Object> か List<A> か List<B> しかない。 List<B> かもしれないことを考えると、A は add できない。 B だったら、List<Object> でも List<A> でも List<B> でも OK だ。
331 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 05:06:04 ] >>330 前半、全て NG なら何のためにそういった書き方が出来るんでしょうか? さらに別に参照を受け渡すためか class D extends C{} を作って List<D> dlist = bext; とかしてみましたがエラーでした。 後半、言語設計する側の理屈で言えばそうですね。使う側の立場で宣言だけ見ると B のスーパークラスだけ add できるリストなのかと思ってしまいそうですが。 何でこうゲネリックウsって消化悪いんでしょうか。誰ですか設計したのは。
332 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 06:07:25 ] >>330 なるほど。ありがとうございます。(質問者じゃないけれど) かなり理解が進みました。 // 代入文を見ると、ついつい右辺の型で考えてしまうのよね…
333 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 10:25:49 ] 独習Javaをやっているんですが、 本が厚すぎてコードを打っているうちにパタンと閉じてしまいます。 何かいい方法はありませんか?
334 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 10:33:37 ] 板違い
335 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 10:55:08 ] 章ごとに小分けして製本する。
336 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 10:57:36 ] >>333 独習Javaをやらない。
337 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 11:01:09 ] >>333 お買い上げありがとうございます。 ttp://www.amazon.co.jp/dp/B0001CQAAQ ワニクリップか洗濯バサミか何かでもいいけど。
338 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 11:25:58 ] 独習Java読んでみたけどあれはひどいね。 J2SE5.0対応を謳ってるくせに、 実際は1.3以前の内容しか載ってない。 例えば、キーワードにassertやenumが無かったり。 よくあんな本が売れるもんだ。
339 名前:333 mailto:sage [2008/02/16(土) 11:26:25 ] >>337 今、購入しました。 商品が届くまでは本に「やさしいJAVA」を乗せておくことにします。
340 名前:333 mailto:sage [2008/02/16(土) 11:34:57 ] >>338 それを聞くとモチベーション下がるなぁ。まだ第2章だっていうのに。 このスレには独習にお世話になった人はどのくらいいるのだろうか。
341 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 11:48:09 ] ノ お世話になったよ。 5.0は対応しているだけで、5.0用ってわけじゃないからなぁ。 1.4系を独習するという事で割り切れば今でも良本。 そもそも5.0系でまともな入門本ってあるかい?
342 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:09:23 ] >>331 Java言語仕様一通り読んだけど、Genericsまわりははっきり言ってわけわからん。 つか、理解を完全に放棄したw 何らかの数学的背景があって、その範疇で整合性を取っているような感じだったが……。
343 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:18:37 ] >>341 assertが載ってないから1.3系だよ。 1.4系の独習なら、他にもっといい本があるだろう。 5.0系の入門書は知らないけど、 1.4系なら結城さんの本とかいいんじゃないの? 5.0に対応してたかも知れないし。
344 名前:デフォルトの名無しさん [2008/02/16(土) 12:22:00 ] java(TM)plug-inの致命的エラー XP IE7 導入 JAVAの再インストール すべてやってもエラーでみれません 対処方法教えていただけませんか?
345 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:31:02 ] >>331 >前半、全て NG なら何のためにそういった書き方が出来るんでしょうか? それは、get の方を考えてみればわかる。 List<? extends B> の場合、保持してる要素は少なくとも B か そのサブクラスであることがわかってるから、get は B を返すことができる。 List<? super B> の場合、List<Object> という可能性があるから、 get は Object でしか返せない。 >List<D> dlist = bext; それは無理。 bext は List<A> かもしれないし。 List<D> の get は D を返すわけだから、A とか入ってたら困るだろう。
346 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:39:20 ] javaVM1.2以降の時だけGraphics2Dを使いたいのですが、 バージョンをチェックして振り分けてもMSjava1.1だとランタイムエラーになってしまいます。 SUNjava1.1はキチンと振り分けられて動いています。 これって対処できますか?
347 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:39:26 ] 理由を聞けばもっともだとは思うが、あんだけ時間かけといて何でこんなgdgdなんだろうか。 まぁ誰の声が一番でかいかを争ってたんだろうというのは想像に難くないけど。
348 名前:346 mailto:sage [2008/02/16(土) 12:55:07 ] 具体的にはClassNotFoundExceptionが出ます。 if文で1.1以下の時だけそのクラスを使わない処理にしたら、 sun-java1.1はエラーを吐かなくなりましたが、 ms-java1.1はエラーで止まってしまいます。
349 名前:hage [2008/02/16(土) 12:57:37 ] 質問です。(コードは以下に連投します) キャンバス上に JComboBox を混ぜたプログラムを作ってるのですが、 マウスドラッグ中に JComboBox がちらついてしまうのが嫌なのですが、 なんとかなりませんでしょうか? import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JFrame{ private Image offs; private JComboBox cb; private Point mp; public Test(){ init(); } private void init(){ Container c = getContentPane(); c.setPreferredSize(new Dimension(300, 300)); c.setLayout(null); // レイアウト無し // JComboBox の設定 String[] ss = {"hage", "hige", "huge", "hege", "hoge"}; cb = new JComboBox(ss); c.add(cb); cb.setBounds(30, 30, 100, 20); pack(); repaint(); setResizable(false); setVisible(true); // ドラッグで再描画 this.addMouseMotionListener(new MouseMotionAdapter(){ public void mouseDragged(MouseEvent me){ offs = null; mp = me.getPoint(); repaint(); } }); }
350 名前:hage [2008/02/16(土) 13:00:11 ] public void paint(Graphics g){ if (offs == null){ offs = createImage(getWidth(), getHeight()); Graphics g2 = offs.getGraphics(); g2.setColor(Color.BLUE); g2.fillRect(0, 0, getWidth(), getHeight()); g2.setColor(Color.RED); if (mp != null) g2.fillOval(mp.x - 2, mp.y - 2, 4, 4); cb.repaint(); } g.drawImage(offs, 0, 0, null); } public static void main(String[] args){ new Test(); } }
351 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:01:23 ] >>346 Graphics2D を使う部分だけ別のクラスに分けておいて、通常のクラス名で new する代わりに Class#forName でロードして Class#newInstance でインスタンス化すれば大丈夫かと思うが、、、 (Graphics2D を使うクラスの名前は Class#forName の引数以外には一切書かない) そんな昔の、切り捨てたら?
352 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:12:32 ] >>349 とりあえず、JFrameに直接描くな。 JComponentを派生して自前のキャンバスクラスを作り、そのpaintComponentで描け。
353 名前:hage [2008/02/16(土) 13:19:04 ] すいません。書き直しました。本来のプログラムのほうも、構成はこんな感じになっています。 (以下、連投) import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JFrame{ public static void main(String[] args){ new Test(); } public Test(){ init(); } private void init(){ MyCanvas canvas = new MyCanvas(); getContentPane().add(canvas); pack(); repaint(); setResizable(false); setVisible(true); } }
354 名前:hage [2008/02/16(土) 13:22:11 ] class MyCanvas extends JComponent{ private Image offs; private JComboBox cb; private Point mp; public MyCanvas(){ init(); } private void init(){ this.setPreferredSize(new Dimension(300, 300)); this.setLayout(null); // レイアウト無し String[] ss = {"hage", "hige", "huge", "hege", "hoge"}; // JComboBox の設定 cb = new JComboBox(ss); this.add(cb); cb.setBounds(30, 30, 100, 20); // ドラッグで再描画 this.addMouseMotionListener(new MouseMotionAdapter(){ public void mouseDragged(MouseEvent me){ offs = null; mp = me.getPoint(); repaint();}}); } public void paint(Graphics g){ if (offs == null){ offs = createImage(getWidth(), getHeight()); Graphics g2 = offs.getGraphics(); g2.setColor(Color.BLUE); g2.fillRect(0, 0, getWidth(), getHeight()); g2.setColor(Color.RED); if (mp != null) g2.fillOval(mp.x - 2, mp.y - 2, 4, 4); } g.drawImage(offs, 0, 0, null); cb.repaint(); } } と、途中で気づいたのですが、 paint を paintComponent にすると治りました・・・ paintComponent というのをはじめて知りました orz 勉強になりました。ありがとうございました
355 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:22:14 ] >>351 Java 系のグループじゃそう言われてるけどなぁ、先日ニュース系の板から秘密で誘導して 統計とって見たら一番多かった Java 6 に続いて 5.0 と MS JVM 1.1 がほぼ同じだったよ。 もっとも、入れてもない奴がダントツだったけど。
356 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:52:42 ] >>351 ありがとうございました。でもさっぱりわかりません。 >>355 ライバルが1.1サポートなんですよ(^^; どうやらクラスローダーの挙動が違うのが原因なのかな。
357 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:03:36 ] xmlをhttpでpostするサンプルをください!
358 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:56:33 ] 本みながらやってるんだけど Iteratorとかvectorに<E>みたいなのをつけろって eclipseでやると注意されるのですが そこにIteretorでStringをあつかうとき<String>みたいに やったら動きました。 本には書いてないので<>がなにかわかりません。 本だとIteratorでObjectにして好きなクラスを返すみたいになってるけど、 それはできないんですか?
359 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:06:35 ] 5.0で導入されたジェネリクス。 本に従ってやるならば、Eclipseでコンパイラレベルを1.4に汁
360 名前:デフォルトの名無しさん [2008/02/16(土) 16:37:08 ] 正規表現で hoge[0]=○○ という文字列を検索したいのですが 半角[]をどうやって表現すればいいのかわかりません><
361 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:45:53 ] >>355 www.adobe.com/products/player_census/flashplayer/ Flashのアドビの発表でjavaの普及率が84.6%ってなってるけど? これだけあれば個人的には十分。 2ちゃんねらは過去にFlashのリンクを何度も踏まされてるから インストール率が高いとかかも。
362 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:57:59 ] >>350 正規表現としては\でエスケープすればOK Javaの文字列としては・・・ \\[で[にマッチするということになるな
363 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 17:33:57 ] >>356 ClassNotFoundが出たら1.1だと判断すれば? で、>>351 が言うように、1.1に存在しないクラスを直接参照しないようにする。
364 名前:デフォルトの名無しさん [2008/02/16(土) 17:40:55 ] >>362 ありがとうございます! てっきり\ひとつだけだと思ってました><;
365 名前:デフォルトの名無しさん [2008/02/16(土) 17:59:34 ] Derbyの使い方について教えてください
366 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:23:57 ] >>365 このスレでDerbyの使い方講座を開講しろっていうのか? Apacheのページへ行ってDerbyのドキュメントを読め。webで検索しろ。 ここで質問するならもっと質問を具体的にして絞り込め。
367 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:35:23 ] >>365 (1) derby.jarファイルにクラスパスを通す (2) Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); を呼ぶ (3) DriverManager.getConnection("jdbc:derby:test;create=true") で Connection を取得する (4) 好きなSQL文を実行する (5) Connection を閉じる (6) DriverManager.getConnection("jdbc:derby:;shutdown=true"); を呼んでシャットダウンする