[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/11 10:36 / Filesize : 275 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者】Java質問・相談スレッド112【大歓迎】



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あたりで。

231 名前:230 mailto:sage [2008/02/14(木) 13:27:25 ]
自己レス。
要素数が最大値でインデクス値が最大値-1。かな…
まぁ、確保した時点で普通は OutOfMemoryError かと。

232 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 13:32:03 ]
>>230
ありがとうございます。十分な量です。

233 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:24:53 ]
Jakarta Projectスレがなくなっていたのでスレを立てた

Apache Jakarta Project関連統合【Java】
pc11.2ch.net/test/read.cgi/tech/1202966638/

234 名前:デフォルトの名無しさん [2008/02/14(木) 16:12:12 ]
質問です。

現在、mainクラスのガベージコレクションを、
多重継承されたインスタンスからコントロールしています。

ただ、Heap領域にアクセスする場合について、
そのコレクションフレームワークからマルチスレッド化させると、
ローカルにremoveしようとしても同期的な排他制御が取れません。
やはりラッパークラスのプリミティブ型は、エレメントのイテレータもhasNext()メソッドもどきで
volatile修飾子のシリアライゼーションをさせるのが絶対条件なのでしょうか。

ちなみに、もしコマンドライン引数によってJava.langのStringBufferまでimportしたとしても、
SetインターフェースのisEmptyメソッドにするとなぜかStackOverflowErrorの例外が発生します。
staticなyield()メソッドを汎用させるため、
throwsで例外ハンドラをコンストラクタなアサーションをしているのですが・・・。

C言語が腐るほど考えたのですが、
バイナリでのファイル操作がなかなかまとまらないため質問した次第ですので、
どうかお答えお願いします。

235 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:15:02 ]
不覚にも吹いたw
プログラミングを何も知らない初心者が見たら、
めちゃくちゃ高度なことに見えるんだろうなぁ

236 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:22:04 ]
未消化な単語ばかり並べてるけど、まあ初心者板なのだから。
やりたいことを自分の言葉やコードで示せば回答もあると思うよ。

237 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:32:42 ]
スイーツ(笑)

238 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:33:08 ]
>>234
まず、「てにをは」だけでも見直してみたらどうか?

239 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:36:31 ]
まるで自動生成したかのような意味の通らなさだ



240 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:38:26 ]
釣られてみる。
多重継承 :無理
GCのコントロール:原則としてできない
Heap領域にアクセス:??
ローカルにremove:??
ダメだ、突っ込みようもないわ

241 名前:デフォルトの名無しさん [2008/02/14(木) 18:22:37 ]
JLabelのpaintComponent(Graphics g)をオーバーライドして、
中でg.draw(new Line2D.Double(x, y))

とやると直線が引けました。
この直線を半透明にグラデーションさせたいのですが、どのようにするのがよいでしょうか?


242 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:29:49 ]
AGGへのラッパーを書く。

243 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 19:22:35 ]
>>222
小さいほうの値を選ぶだけなら static long Math.min(long, long) を。(if文を消せる。

244 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 19:56:19 ]
>>241
GradientPaint と AlphaComposite を調べろ

245 名前:241 [2008/02/14(木) 20:19:12 ]
ありがとうございます。
とりあえず直線はおいておくことにして、任意のShapeについて半透明グラデーション
させられるかを考えることにしました。

AlphaCompositeを利用すると一様にアルファ値が適用されてしまうようです(当たり前ですね)。
これを徐々に変化させるような処理というのはどういうプロセスになるのでしょうか・・・

かなり考えたのですが、すみません、ヒントいただけませんか?

246 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 20:30:35 ]
少し描画して変更して、また少し描画する、あとは適当なタイミングになるように工夫して繰り返せ

247 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 20:48:02 ]
ああ、少しずつ描画すればいいわけですね。
このY座標までは0.6fで、次からはもっと薄く・・・とか。
ありがとうございます。

しかし、タイミングって関係あるんでしょうか?
ひょっとして「徐々に」というのが時間的に捉えられてたとか・・・
すみません。これは距離的にということでした。

248 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:12:25 ]
GradientPaintとか

249 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:41:53 ]
速度が与えられれば時間的≒距離的だろう。
中学生レベルの理科か算数の話じゃねーか



250 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 23:09:02 ]
>>244のヒントであとは自力でできないようなら他のことを教えられてもできそうにない
あきらめたほうがいい

251 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 23:31:23 ]
いや、速度とか言ってるけど何か動かすような話じゃないと思うよ。
要するに図形を半透明にグラデーションさせたいわけだろ?
領域の面積で考えれば済む話じゃないか。しかももう判りかけてるみたいだし。

>>249,250はもうちょっと考えた方がいい。

252 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:14:39 ]
「釣られて見る」 と宣言すればネタに無粋な突っ込みして許されるってもんでもないぞ。

253 名前:デフォルトの名無しさん [2008/02/15(金) 00:25:57 ]
すいません、質問です。
ゲームを作っているのですが、方向キーを押したときに画像が
切り替わるようにするにはどうしたら良いでしょうか。
歩いているように見せたいんです。
現在、方向キーを押すと画像が動くようにはできています。
分かりにくかったらすいません。

254 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:29:46 ]
10個以上も上のやつのネタに突っ込みするんだからレス番ぐらいつけなきゃ無粋なんじゃ?

255 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:33:10 ]
>>253
普通に描画するだけなんじゃ?
ていうか質問の件よりは動かすほうが難しいと思うんだが

256 名前:デフォルトの名無しさん [2008/02/15(金) 00:33:24 ]
ふと思ったんだが
やっぱり、strutsよりJSFの方が良くないか?

257 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:34:11 ]
Struts が良いものと思ってる奴なんて居るのか?

258 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:14:43 ]
>>255
キャラが左右に滑るだけでまだ手足が動かないということなんじゃ?

259 名前:253 [2008/02/15(金) 01:23:33 ]
>>258
そういうことです。いいクラスライブラリがあるのでしょうか?



260 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:36:05 ]
JSF って JSTL と何か違うの?

261 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:36:47 ]
>>259
座標を適当な数で割った余りによってキャラを切り替えていくというのは?

262 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:37:17 ]
何を考える余地があるんだ?
ちょっと考えたほうがいいのは241だろ
アルファ値込みでグラデーション設定したGradientPaintをsetPaintで設定したグラフィックコンテクストを使って
drawなりdrawLineなりで直線引けば終わりじゃないか
>>244でGradientPaintってヒントが与えられてるのに
AlphaCompositeで一様にしかアルファを設定できないって言ってるやつが変

263 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:44:13 ]
GradientPaintで力不足ならAPIドキュメントでGradientPaint周りをぶらつけばLinearGradientPaintとかにも行き当たる

264 名前:195 [2008/02/15(金) 01:47:42 ]
>>205

激しく遅レスでごめんなさい。

言葉足らずだった、というか話が長くなる予定だったので最初は簡単に意向と思ったというか。

Java(というかJVM?)でも、普通にメソッドを呼び出すと引数とかリターンアドレスとか
ローカル変数とかをスタックに積んでいくんだと思うんですよ。

でも呼び出し先で「例外」投げると呼んだメソッドへのリターンではなくって、
メソッド呼び出しを含むtry節に対応したcatchのところに(しかも例外の種類にあったcatchのところ)へ
一足飛びに戻ってくるわけですね。

そしてそこでキャッチした例外のインスタンスには、
そこから上のスタックがごそっと詰まっているように見えるわけです。

そんなこんなで、tryを実行するとJVMがどっかにcatchのアドレスと例外の型を保存していて、
呼び出し先のどこかで「例外を投げる」を行うと、スタックをこれまたどこかに保存したうえで、
もともと保存してあったcatchのアドレスにまで一足飛びにジャンプして、というのを考えると、
それというのはGotoなんかよりよっぽどたち悪くないか、なんて思ったりするんですけど、
それでも例外は使うな、なんて話は別に聞かないですし、そんなもんかとも思うんですが、
例外処理書くときにもやもやするのは確かなのです。

そういう例外処理機構がくわしくわかるようなWebとかないでしょうか。

265 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:49:02 ]
名前空間付きの XML (DOM) に対して:

<foo xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
  xmlns="foo-uri"
  xsi:schemaLocation="foo-uri foo.xsd">
<bar>...</bar>


XPath でノードを参照してみたんですけどノードと一致しません。

NodeList nl = (NodeList)xpath.evaluate("/foo/bar", doc, XPathConstants.NODESET);
// nl.getLength() == 0 になる

XML から名前空間の指定を取り除くと一致するため、検索時にパスの名前空間が考慮されてない
動きだと思うのですが、XPath に名前空間を意識させるにはどうすれば良いでしょうか?

DOM を構築するときにファクトリへ setNamespaceAware(true) は行っています。

266 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:49:30 ]
>>256
Feedaのほうがいい

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って消化悪いんでしょうか。誰ですか設計したのは。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef