[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 12:44 / Filesize : 104 KB / Number-of Response : 411
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



1 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:47:15 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド129【歓迎】
pc12.2ch.net/test/read.cgi/tech/1247322478/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

259 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 02:30:11 ]


260 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 04:37:12 ]
>>207
IDEの管轄外にある環境をIDEが管理にするわけないのに何言ってんだこの馬鹿は。
EclipseだろうがNetBeansだろうが関係無いわ。

>>219
(1)str==nullのときぬるぽ。内部的に""の実体を探しに行く分、極めて少しだけ時間がかかる可能性がある。
(2)str==nullのときぬるぽ。str以外の実体にメモリアクセスをともなわない分、(1)より極めて少しだけ速い可能性がある。
(3)str==nullのときぬるぽ。古い環境だと動かない。おそらく最速だが(2)と変わらないような気もする。
(4)str==nullでもぬるぽにならない以外は(1)と同じ。

>>255
ライセンスよく嫁。自分で使うだけなら全部無償。

261 名前:デフォルトの名無しさん [2009/08/08(土) 05:26:33 ]
ずいぶん昔のレスを引きずってんだなこいつw

EEを自分で使うんなら素直にMS使ったほうがいいんじゃね?
それともUNIX使うスキルもねーのかよ
お前はただの「おのぼりさん」だろお前?w

262 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 07:41:55 ]
>>260
>>219ですが、ありがとうございます。
見易さ優先の(1)、速さを優先の(2)といったところでしょうか。
空文字列チェックを行うからには、前の行でnullでないことをチェックしておくので、ぬるぽに関しては気にしなくて良いと思いますが。

263 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 08:22:02 ]
>>262
260じゃないけど横から。
str != null && str.equals("")
って書くよりは
"".equals(str)
って書く方がソースとしてもバイトコードとしてもコンパクト。
equalsの引数にはnullを渡してもよいからこう書けるわけです。

str != null && str.length() == 0
よりは遅いかもしれないけど、毎回こう書くのは面倒でしょ。
特に1つのif文内で複数の変数をチェックする場合とか。

とはいえ、両方変数なら結局は
str1 != null && str1.equals(str2)
って書くはめになるんだけど。
あるいはorg.apache.commons.lang.StringUtils.equals(String, String)を使う。


264 名前:デフォルトの名無しさん [2009/08/08(土) 10:56:35 ]
開発環境での実行時のメモりの使用量をコントロールするツールとかってありますか?
ソースの書き方でパフォーマンスを違いを知りたいのですが

265 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 11:24:54 ]
>>201
>>263
もし実際に自分でそう書いているのなら、これを機会に改めた方がいい。
if("".equals(str)){
//処理
}else{
System.out.println("length=" + str.length());
}
とか書かれたときのことを考えるべき。

266 名前:263 mailto:sage [2009/08/08(土) 12:01:56 ]
>>265
そりゃstrのメソッド呼ぶ気なら事前にnullチェックするでしょうよ。
でもその場合は、
if (str != null && str.equals("")) {
//処理
} else {
}
と書いてもelseにはnullでも来てしまう訳で、
if (str != null) {
if (str.equals("") {
} else {
}
}
とか、
if (str == null) {
return;
}
if (str.equals("")) {
} else {
}
と書く事に。

もし、nullまたは空文字とそれ以外を分けたいなら
if (str == null || str.equals("")) {
} else {
}
って書きますけどね。

267 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:02:58 ]
良く話題になる文字列のチェックだが、nullチェックはそこでするのか?と思う。
例1)
public void method(String str) {
if(str != null && str.eqals("XXX") {
// 処理
}
}
はおかしくて
public void method(String str) {
if(str == null) throw new IllegalArgumentException();
if(str.eqals("XXX") {
// 処理
}
}
だろ?
String str = buf.toString();
ならば、nullチェックしないだろ?

nullチェックと比較はまとめる方が珍しいと思う




268 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:04:43 ]
>>266
どんな状況でもこうやればいいという感じで書いておきながら屁理屈こねるなや
後出しで色々いっても見苦しいぜ

269 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:06:44 ]
これだからJavaやってる奴は

270 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:09:21 ]
これだからプログラムやっている奴は

271 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:11:50 ]
>>268
こんなザコために定石なことをわざわざ丁寧に答えたお前の方が「マヌケ」だと思うが?

272 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:13:19 ]
別に>>263の書き方に賛成ってわけではないが、
>>263>>265,267は検査する内容が異なってる。

273 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:20:08 ]
>>271
スレの趣旨に反しない限り、別に何書いたっていいだろ?

274 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:26:06 ]
>>271
まあまあ人格攻撃はやめようよ。

>>265
で、どう書くのが良いのか見せてよ。

275 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:29:43 ]
暑苦しいなあ

276 名前:265 mailto:sage [2009/08/08(土) 12:43:21 ]
>>274
nullをどうするかによる。
nullを許すなら>>267の上のように書くし
nullを許さないなら>>267の下のように書く。


277 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:51:23 ]
jframe→jscrollpane→jpanel→jeditorpaneの順番で張り付けていくと、
jframeでは何も表示されません
jscrollpaneを経由せずに、jpanelをjframeに張り付けるとちゃんと表示されるのですが
なぜですか?



278 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:54:39 ]
自演多すぎ。

279 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:58:25 ]
>277
jpanelいらん

280 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:05:54 ]
>>279
あの〜、まったく表示され無いんですけど
JFrame mainFram = new JFrame();
mainFram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JScrollPane scrollPane = new JScrollPane();
mainFram.add(scrollPane);

for(JEditorPane view : viewList) {
scrollPane.add(view);


281 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:12:44 ]
全部はれやカス

282 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:18:11 ]
>>281
全部貼れと言われても、JEditorPane pane = new JEditorPane("text/plain",str);
viewList.add(pane);
しているだけなんだけど
これ以上コードは無い

283 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:29:02 ]
jframe→jpanel→jscrollpane→jeditorpane
じゃないの?

284 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:31:29 ]
つかこれ以上ないってsetVisivle(true)はしてるだろ。全部貼れよ。

285 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:33:02 ]
>>277
Swing知らないが、この辺関係あるのでは?
ttp://iiyo-tabun.blogspot.com/2008/10/jscrollpanejpanel.html

286 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:42:29 ]
>>284
お前、そんくらい誰でもわかるだろJK
お前、本当にプログラミングやってんの?

287 名前:デフォルトの名無しさん [2009/08/08(土) 13:59:49 ]
>>274
自演乙



288 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:06:13 ]
>>286
あのな、そーゆー当たり前だと思ってることをやってないってことが結構あるんだよ。
経験者ほどそれを知ってるから、284は全部貼れっていってるんだよ。



289 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:13:31 ]
>>285
やってみましたが、表示されませんでした

290 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:28:54 ]
>>288
自演乙

291 名前:279 mailto:sage [2009/08/08(土) 14:45:37 ]
JScrollPane scrollPane = new JScrollPane(mainPanel);
としたら、なぜか表示されました
>>283,>>285
本当にありがとうございました

>>280で、ちゃんとコードを表示したのにヒントもくれなかったので
>>281,>>284,>>288、口だけは達者なのがわかりました
威張っているだけならレスしないでください

292 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:45:54 ]
>>282
mainFram.pack();
mainFram.setSize(800,600);

どこがおかしいか分からないくせに勝手に省略すんなってんだ。
ポカミスは誰だってやるんだよ。
一行違うだけで結果は全く違う。お互い推測でおかしいおかしいって
時間食っても仕方ないだろう。
百聞は一見に…ってことだ。

293 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:51:52 ]
>>291
280のコードのどこに mainPanel があるんだよw

294 名前:281 mailto:sage [2009/08/08(土) 15:40:47 ]
>>279
なんで俺がお前さんのために、ずっと2chに張り付いていなければいけないのか教えてくれw

295 名前:デフォルトの名無しさん [2009/08/08(土) 16:09:41 ]
>>291
そうやって調子の乗るならちゃんと質問料を収めてくれますか?
あなたはスレに貢献すらしてませんよね。

296 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:12:38 ]
醜悪だなあ

297 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:25:49 ]
貧乏人がくぶる



298 名前:デフォルトの名無しさん [2009/08/08(土) 16:52:27 ]
>>291
クレジットで一括にしてくれますか?

299 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:03:37 ]
まあEclipse使うってことは周りから10年取り残されるって言うのと同じ意味だからな
覚悟は要るよな

300 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:21:26 ]
Javaの勉強を始めたばかりのものです。
Eclipseで今学習中なのですが、違うものに変えたほうがいいでしょうか?

ひとまず基本情報の午後問題、Javaを解けるレベルまでを考えています。

301 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:33:28 ]
>>300
まったくない。
世界で一番使われてるIDEだし、
大抵の職場でつかわれてる。
一部アンチがいるだけだ。
気にするな。

302 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:42:39 ]
>>300
javaの勉強なら、eclipseだろうがなんだろうが関係ない。
IDEの機能に惑わされなければな。

303 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:53:51 ]
>>301,302
お二方ありがとうございます。

急に不安になったので書き込みましたが、
引き続きROMりながら勉強に励みます。

304 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:19:30 ]
>>303
ちゃんと勉強したいなら2ちゃんねるを見るなんて馬鹿なことはするな

305 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:44:00 ]
夏になったらおかしいのが沢山発生した

306 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:52:11 ]
public final class Struts1Process extends Action {
public ActionForward execute
(ActionMapping map, ActionForm frm, HttpServletRequest request, HttpServletResponse response) {
Struts1Form outFrm = (Struts1Form) frm;
request.setAttribute ("outFrm",outFrm);
return map.findForward ("success");
この場合に、ActionForm frm のオブジェクトとしてアクションフォームBeanの
内容を引き継いでいると考えていいのでしょうか。

307 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:54:19 ]
はい



308 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:57:08 ]
パッケージってネーム空間みたいなもん?

309 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:58:28 ]
コンポーネントを複数重ねあわせた際、マウスイベントを
全コンポーネントに処理させるのはどうすればいいですか?
トップのコンポーネントにイベントが持って行かれちゃって困っております

310 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:59:08 ]
>>307 ありがとうございました。

311 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:02:36 ]
>>308
ja.wikipedia.org/wiki/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8_%28Java%29

312 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:10:03 ]
>>311
ありがとう!

313 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:06:17 ]
>>308
パッケージってディレクトリ(フォルダ)のことだよ

314 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:03:20 ]
>>308
>>313
ディレクトリと違って階層構造になってないから気をつけて。

315 名前:デフォルトの名無しさん [2009/08/08(土) 23:52:55 ]
階層構造になってるだろ(´・ω・`)

316 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:54:21 ]
>>292
>mainFram.pack();
>mainFram.setSize(800,600);
これだとフレームの中のコンポーネントのサイズが狂うからパネルのサイズを設定した後フレームをパックじゃないか?


317 名前:292 mailto:sage [2009/08/09(日) 00:30:25 ]
>>316
推測してた名残だと思って無視してくれ、すまん。
ちなみにsetSize→packだと、packで再計算されるからsetSizeの意味が無い。



318 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:23:03 ]
>>317
packに任せるにはsetSizeではダメで、setPreferredSizeが必要なんじゃ?

319 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:26:46 ]
>>315
www.atmarkit.co.jp/bbs/phpBB//viewtopic.php?mode=viewtopic&topic=44675&forum=12&start=0
こーゆーことがいいたかったわけで。

まぁ、ごめん気にしないでくれ。
初心者はパッケージ≒ディレクトリだと考えてくれれば。

320 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 02:33:30 ]
JDK6u14って日本語版ないみたいだけどこれって内部メッセージはちゃんと日本語なんだよね
あとJREの最新版はu15みたいだけどSDKのバージョンとJREのバージョンが違うことってあるの?

321 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 02:35:51 ]
>>320
java.sun.com/javase/ja/6/download.html

322 名前:デフォルトの名無しさん [2009/08/09(日) 03:09:44 ]
>>321
バカ?
そこのダウンロードするとlanage選択でEnglishしか選べないんだよ!
死ねかす!

323 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 03:27:15 ]
>>322
眠いなら寝ろ

324 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 04:12:34 ]
lanageってwww

325 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 04:41:42 ]
>>322
脊髄反射して上げるなカス

326 名前:デフォルトの名無しさん [2009/08/09(日) 11:21:24 ]
「ねかす!」ってなに?

327 名前:デフォルトの名無しさん [2009/08/09(日) 11:23:13 ]
あげないローカルルールってどこ?



328 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:30:41 ]
教えてくんはカエレ

329 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:55:24 ]
javaで簡単なwebブラウザを作ろうと考えているのですが
JEditorPaneを使うと遅い気がします、何か他に良いライブラリを知っていたら教えてください

330 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 13:49:46 ]
>>326-327
上げるな
むさくるしいだろ!

331 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:21:11 ]
JavaでClass.forNameを使ってクラスオブジェクトを作った場合、
プロセスを落とすまでJavaVMにクラスはキャッシュされたままでしょうか?

332 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 15:08:03 ]
>>331
ttp://d.hatena.ne.jp/higayasuo/20090716/1247702860

333 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:23:55 ]
テストのときだけ実行したいメソッドがあります。
C言語ではテストかどうかを外部の設定ファイルを見て、実行するかしないかを制御してたのですが、
Javaも同様の制御が無難でしょうか?
もっとよい方法はありますでしょうか?

334 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:32:42 ]
>>333
リフレクションとかアノテーションとかを使うことになるのかもしれないが、
テストのときというのがどんなことをするかによるだろ。
設定ファイルにクラス名.メソッド名を羅列して、その順番に実行するのか?
それとも単にランチャーからどのクラスのmain()メソッドを実行するかだけなのか?
とかな。

335 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:34:32 ]
static final boolean debugFlag = true;
を定義して

普通にリリースするときに
falseにすればいいだろ・・・


336 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:36:58 ]
>>334
言葉足らずでした。
本番時は他社のシステムに接続し(SOAPで)データを受け取るのですが、
テスト時は外部システムに接続できないので、適当な値を変数に設定したいのです。
そこで、処理を分岐させたいのです。

>>335
Javaは新しい言語なので、何かしぶいやり方があるのかと思いまして。

337 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:43:41 ]
JAVA AWTに関しての質問なのですが
最初のウィンドウ?に
コンポーネントをextendsして作成したクラスを追加した後
追加したコンポーネント上でマウスがクリックされた等の動作を最初のウィンドウのクラスで検知することはできるのでしょうか?


(よく分からないため 用語の使い方等がおかしい可能性が高いです。)
ttp://www.dotup.org/uploda/www.dotup.org18518.jpg イメージ




338 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:11:16 ]
最初のウィンドウクラスにリスナー追加したらおk

339 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:14:50 ]
>>336
今どきならばJUnitでモックとか使う。
というか、大昔からそれしかないが・・・(C言語でも似たようなことやってた)

340 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:17:32 ]
>>336
おおざっぱに
「他システムに接続してデータ取得」の部分を一つのオブジェクトにしておいて、
interface Transfer { Data receiveData(Param param); }
class RealTransfer impliments Transfer {
public Data receiveData(Param param) { /*他システムと接続してDataを得て返す*/ }
}
class MockTransfer impliments Transfer {
public Data receiveData(Param param) { /*テスト用のDataを適当に生成して返す*/ }
}
class Main {
public static void main(String args[]) {
//転送用オブジェクトを選択生成
Transfer trans = null;
if(args.length == 1 && args[1].equals("test")) {
trans = new MockTransfer();
} else {
trans = new RealTransfer();
}
//本番かテストか気にせず使用
Param param = 〜;
Data data = trans.receiveData(param);
}
}
てな感じ。

341 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:20:59 ]
>>337
すみません その方法を教えていただけないでしょうか。

感で
addMouseListener(追加したキャンバスクラス);
と書いてみたものの駄目でしたorz

また、最初のウィンドウクラスに
public void mouseClicked(MouseEvent e) {
System.out.println("click");
}
と書いても追加コンポーネントをクリックした時は反応がありませんでした。
(ウィンドウ上コンポーネント外では反応しました。)

342 名前:340 mailto:sage [2009/08/09(日) 17:27:42 ]
>>340
うああ "args[1]"→"args[0]"
その場書きだからとゆるしてやってくれ…汚しスマ

343 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:31:17 ]
>>341
”感”じゃなくて”勘”だろうw
未確認だが
 追加したキャンバス.addMouseListener(最初のウインドウ);
ではどうだ?

344 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:37:48 ]
Javaって機能ごとにクラスを分割するじゃん。(入力チェッククラス、ファイル書き込みクラス・・・)
でも、これらって1つのおおもとになるクラスから、いちいちnewして呼ぶんでしょ。
1つのクラスに書いたほうが、たくさんインスタンスを作らなくてよい分、性能がいいんじゃないの?
クラスが増えるとメンテナンスも悪くなるし。
きちんとメソッドごとに機能をわけていればよいと思うんだけど。

345 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:42:35 ]
>>343
上手くいきました
ありがとうございます。

346 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:48:00 ]
>>344
んなこた無い。再利用性ってググってみよう。

347 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:55:37 ]
/home/ユーザー/hoge1/hoge2/hoge.txtというパスにあるファイルを作りたいと考えています
どこのディレクトリまで存在しているか?ということをどうやったら、調べられますか?
例えば/home/ユーザー/まではちゃんとディレクトリが存在して、hoge1以下は存在しないよ〜
って感じです。



348 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:58:40 ]
>>344
正解。皆騙されているだけ

349 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:09:57 ]
>>347
File file = new File("/home/ユーザー/hoge1/hoge2/hoge.txt");
while(!file.exists()) file = file.getParentFile();
//この時点のfileはあるらしい
//rootもなけりゃぬるぽ
もちろん未確認


350 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:20:26 ]
>>347
作りたいだけなら
file.getParentFile().mkdirs();
file.createNewFile();

351 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:22:10 ]
>>348
やっぱりそうですよね。
僕はそう簡単にだまされません。
先日、入力チェッククラスを作っている童貞がいました。
C++神の僕にはそんなクラスはかっこ悪くて作れません。

352 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:24:07 ]
>>344
>>348
一人で全部作ってろ

353 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:24:20 ]
部品化(Bean)など上手くいっている現場は珍しい。
ほとんどはウンコ。わけわかめ。分けりやあいいってもんじゃない。
かえって思考が分散する。以上だ。

354 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:27:05 ]
太古の昔から部品の共通化などと能書きは垂れるが
細部にまで一貫性を保ってプロジェクトを運用し、設計思想を貫けるような
SEは殆どいない。理想はそうだろうが人間の頭は付いて来ない。
わかったか。

355 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:27:44 ]
俺できるよ?

356 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:28:47 ]
>>351
何で入力チェッククラスがダメなの?


357 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:32:39 ]
分けなくていいもんまで分けたり、
分けられるもんを分けなかったり、
取っておけるもんを毎回作って消したり、
単にツクリが悪いだけだろ。



358 名前:347 mailto:sage [2009/08/09(日) 18:50:47 ]
>>349-350
わかりました。ありがとうございます
参考にします

359 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:52:48 ]
>>344
1つのおおもとになるクラスから他のクラスを呼ぶってのは、
最近あまりみないよ。

360 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:57:42 ]
>>336
Java言語向けのやり方としては、外部システム接続がらみの境界線で
interfaceを定義して、テスト環境ではモックオブジェクトに切り替える
ようにするのが定石。

で、その切り替え処理はある程度DIコンテナ(Spring, Seasar2,
Google Guice等)に任せるのが最近の傾向。

361 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:08:33 ]
テキストファイルを1行読み込んだら、読み込んだデータをテキストを処理するクラスに渡す
という作業をループを使用して実装したいと考えています。
速度向上のためにテキストを処理するクラスはThreadを継承しようと考えています。
しかし、IOの方が遅いので行を読み込み終る前にテキストを処理するスレッドが終了してしまいます
どうにかして、勝手におわらせないようにしたいのですが
どのようにすればいいのでしょうか?

362 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:12:20 ]
1行1スレッドという発想は神ですね。
感動しました。

363 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:18:35 ]
>>362
煽るの好きだな

364 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:21:59 ]
>>361
つBlockingQueue

365 名前:361 mailto:sage [2009/08/09(日) 19:29:12 ]
>>364
ありがとうございます。
早速ググってみます

366 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:46:02 ]
final String str = "str";str = "STR";はダメなのに
final ArrayList<String> list = new ArrayList<String>();list.add(str);
は問題なくadd()出きるのですか?

367 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:54:55 ]
Java には代入とメソッドの区別ができるから



368 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:04:11 ]
>>366
final はオブジェクトの参照そのものが変化しないことを要求するだけ。
String への代入は参照そのものが変化するから×
list.add は list への参照そのものは変化しないから○

369 名前:366 mailto:sage [2009/08/09(日) 20:06:49 ]
>>367-368
非常に参考になりました。ありがとうございます

370 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:30:23 ]
>>366
finalが制限するのは、変数とオブジェクトの結び付きだけなので、オブジェクト自身に対する操作には影響しない。
絶対切れない紐の先に犬を結び付けたら別の犬に取り替えることはできないけど、犬がモノを食っても紐の種類には関係ない。

371 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 21:53:02 ]
1つのメインのクラスから、色々なクラスをよぶとき、
クラス図はどう表現すればよいのでしょうか?
1つのメインになるクラスから、使用しているクラスに矢印をひっぱるのでしょうか?

372 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:03:19 ]
アノテーションについて質問です。
アノテーションはあくまでクラス(Class<?>)が持つもので
例えば
class Hoge {
 @Anno
 Integer i;
}
Hoge h = new Hoge();
としたとき
h.iからそのフィールドに付いてる@Annoを取得(h.getDeclaredFields()してFieldを取得することなく)することはできないという認識でよいのでしょうか?

373 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:23:59 ]
>>371
適当にやじるし引っ張っとけ。
あってもいないし間違ってもいないし、理解もしていない。

>>372
正しい。h.iは単なるInteger型の参照でそれからは情報を取ることはできない。
Hogeのクラス情報(h.getClass, Hoge.class)から取得する。
ちなみに、アノテーションはRuntime属性にしておかなければ実行時には情報がなくなるので注意されたし

374 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:37:45 ]
アノテーションって何が出来るのですか

375 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:38:23 ]
>>373
アノテーションの意味的には取得できてもよさそうなものですが、やはり無理なのですね。
ありがとうございます。

376 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:46:24 ]
>374
一言で言えばフィールドやメソッドにラベルを付けられる
ラベルが付いているか付いていないかでIDEやフレームワークが「なにか」をするかもしれない

>375
いやできないのが自然だろう。
アノテーションは商品の値札のようなもの。
値札はパッケージや陳列棚にはつけるが、商品そのものには付けない
が、他の店で等々の品はある。

377 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:51:09 ]
javaにはRTTIがないから>>372の動作が自然だと思ってたんだが>>375はなんでそう思うの?



378 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:52:00 ]
>>371
それは依存なので破線の矢印で表す。
矢印の方向はそれであってる。

379 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 23:00:58 ]
@deprecateは取り消し線が付いて有益だと思う
@supressは黄色いびっくりwarningが消えるので有益
他に何かある?

380 名前:>>375 mailto:sage [2009/08/09(日) 23:07:10 ]
>>376-377
考えがかなり浅かったようです。
>>376の例を考えると納得でした。

勉強になりました。重ねてお礼を申し上げます。

381 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 05:15:08 ]
株やFXの業者サイトを開くと有名なjavaのマークの周りを■がぐるぐる回るアイコンが表示され
その後チャートなどが表示されますが、あれは「JAVAで作成されたプログラム準備中」という意味でしょか?


382 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 12:12:04 ]
BlockingQueueを教えてもらった者ですが、確認させていただきます
BlockingQuequeに何も無くなったら、
自分自身(BlockingQueque)があるスレッドを自分自身で止めるということでいいんですよね?

383 名前:デフォルトの名無しさん [2009/08/10(月) 12:20:40 ]
>>374
DI

384 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:00:29 ]
ファイル読込で、BufferedReaderとInputStreamReaderを使用すると読み込むことは可能ですが、UTF8に変換されるのが困ってます。

SJIS読込→UTF8となって後の処理 SJISファイル出力でファイルを出力すると一部文字が文字化けしてしまいます。

これを解決するために、SJISファイルを読み込んで、内部的にもSJISの状態を保持して読み込むことは可能でしょうか?



385 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:03:54 ]
>>382
自分自身(BlockingQueque)があるスレッド、などというものは存在しないよ
BlockingQueue自身はスレッドを持っていない
止めるのは要素を取り出そうとした(takeを呼び出した)スレッド
あとついでに、満杯のキューにputしようとしたスレッドも空きが出来るまで止められる

386 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:08:37 ]
>>384
そもそもInputStreamReaderというのは、byte(バイト)をchar(Unicode文字)に変換するためのクラス
変換を通さずInputStreamから直にbyteを読み取ってOutputStreamに出力すればよいのでは

387 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:20:19 ]
>>386

やっぱりそうなりますよねぇ。
一行読込とかやりたかったんだけど、自前で組むしかなさそうですねぇ。

サンクスです。



388 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:23:32 ]
if(objFrm.get("idno")!=null && !objFrm.get("idno").equals("")){
このときに、!=nullはヌルじゃないを検査して、
!objFrm.get("idno").equals("")もヌルじゃないを検査しているのですけど
どうして2回繰り返すのでしょうか。

389 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:24:39 ]
s-jisのreader使って一行読み込んで,s-jisのwriter使ってoutputstreamに書き込めばいいんでない?

390 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:25:51 ]
ちゃんと読まなかった結果がこれだよ…

391 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:29:58 ]
>>384
もしかして "SJIS" じゃなくて "Windows-31j" とか "MS932" を指定すると上手く動いたりしないだろうか

392 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:31:17 ]
>>388
null と "" は別のものなので、2個チェックする必要があります

393 名前:382 mailto:sage [2009/08/10(月) 13:33:58 ]
>>385
わかりました、ありがとうございます

394 名前:デフォルトの名無しさん [2009/08/10(月) 13:43:53 ]
>>384

"Windows-31j" と"MS932"は、試してみましたがだめでした。

2chのスレッド内容を取得しようと思ったんですけど、httpHeaderに設定されている「content-length」の値と
SJIS→UTF8→SJISファイル出力で取得したbyte長が異なるので困ってます。

うーんいい方法はないのかなぁ。


395 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:53:40 ]
>>394
改行コードの問題とかはない?
readLineは\nでも\rでも\r\nでも改行扱いするはずだけど、出力してる改行コードが元と違うとか
具体的に何がどう変わってるのか、バイナリダンプかなんかで比較して調べるべきかと

396 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:19:09 ]
>>387
>一行読込とかやりたかったんだけど
ttp://commons.apache.org/io/api-release/
こういうのがありますが、使えませんか?


397 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:27:35 ]
>>394
やりたいこととやってることが微妙に合っていないように聞こえるが。
2chのhtmlが文字列だからといって、Reader/Writerを使わなければならない訳じゃない。
そもそもContentLengthはhttpのボディ部が”バイナリとして”何バイトあるかを示しているはずだ。
だからReader/Writerじゃなく、InputReader/Writerでバイナリのままファイルに落とせ。



398 名前:397 mailto:sage [2009/08/10(月) 14:29:48 ]
>>397
ごめ、イキオイで間違った。
>inputRaeader/Writer
じゃなくて
InputStream/OutputStream


399 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:45:36 ]
>>396

ディレクトリ操作とか便利そうですが、今回のファイル入出力に関してはちょっと用途が違うなと思いました。

>>397,398

やっぱしstreamでI/Oするのがスマートそうですね。
ちょっと実装してみます。

400 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:46:08 ]
>>394
>「content-length」の値と
>SJIS→UTF8→SJISファイル出力で取得したbyte長が異なるので困ってます。
content-lengthの事を書いているのを見ると、差分データを取りに行きたいんでしょ?
スレッド番号.infoみたいなのを作ってレスポンスヘッダからconect-lengthの値を取得して、
<content-length>数値</content-length>とかやった方がいいと思うんだけど。

401 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:46:16 ]
>>394

改行コードは問題ありませんでした。LFなので特に困ってないです。


402 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:49:46 ]
>>400

ご名答。
ずばり2chスレッドの差分データを取得するために、content-lengthの値を設定したいのですが、思った通りに値を設定できなくて四苦八苦してます。

ちょっと悩んでみます。

403 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:51:37 ]
うるさい

404 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:52:42 ]
むしろHTTPなら java.net.HttpURLConnection とか import java.net.URL でまかなえるのでは

405 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:01:25 ]
>>402
自分で全体から一部を取り出さなくても、”新着レスの表示”リンクを見れば
URLにちょっと書くだけで差分が送られてくることが分かるだろ

全体を得たとしても、htmlを良く見ればレスがdat落ちと似た形式で一行毎になっているのが確認できるはずだ。
その部分を抜き出せば、レスの件数=行数。差分も得やすくなるだろ。

406 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:02:19 ]
受信した生データはいったんそのままStreamでファイルに保存しておいて、
あらためてファイルからReaderで1行ずつ読み込めばいい

407 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:23:52 ]
>>402
>>404 にも書いてある通りHttpURLConnection 使った方がいいと思うな
www.fk.urban.ne.jp/home/kishida/kouza/kishou/14net.html
てか、content-lengthを取得できないっってことはe-tagも取得できていないでしょ?
サーバに必要なデータを送らないと、ちゃんとデータを送り返してくれないような気がする
差分データはステータスコードを気にしながらコードを書かないいけないので注意



408 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:28:35 ]
>>405

それがdatファイルの扱いに関しては簡単ではないんです。

>>406,407

初回は、HttpURLConnectionで取得しているのですが2回目以降は、最初に取得した情報をファイルに出力しておいて
ファイルの差分をHttpURLConnectionで問い合わせようとしています。
そこで、content-lengthが重要になってくるんです。

javaじゃなければ簡単に処理できんだけど、なんでUTF8以外を扱おうとするとおかしくなるんだろ。


409 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:32:26 ]
>>392 ありがとうございました。

410 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:48:57 ]
>>408

とりあえず、初回読込はネットから取得してSJISファイル保存。
2回目以降のアクセスは、さきほどのファイルからbyteを取得して、ネットから差分取得でうまくいきました。

ありがとうございます。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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