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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。

前スレッド
【初心者】Java質問・相談スレッド81【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1139654818/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりで。
2デフォルトの名無しさん:2006/02/25(土) 23:41:50
2なら >>3 は派遣
3デフォルトの名無しさん:2006/02/26(日) 00:06:09
3 なら >>4 はイナバウアー
4デフォルトの名無しさん:2006/02/26(日) 00:08:20
どうぞよろしく。
5デフォルトの名無しさん:2006/02/26(日) 03:04:10
5 なら >>6 は将来Javaでエロゲを作ってくれる
6デフォルトの名無しさん:2006/02/26(日) 03:07:20
class public test(){
   g.drawRect(20,20,40,40);
}
7デフォルトの名無しさん:2006/02/26(日) 11:11:14
swingでMenuを使っているものですが、教えてください!
MouseAdapterのmousePressedを使って、メニューの中にあるMenuItemをクリックしたのを
判断するには、どういった記述が正しいのですか?
if(e.getSource==item1){;}だと、item1のシンボルが見つからないとでます・・・
8デフォルトの名無しさん:2006/02/26(日) 11:14:45
ActionListener 使え
9デフォルトの名無しさん:2006/02/26(日) 11:19:58
MouseAdapterでは無理なのでしょうか?
10デフォルトの名無しさん:2006/02/26(日) 11:25:46
無理つうか、それじゃマウスでしか操作できなくなるだろが。
JMenuItem 一個ずつに ActionListener 仕掛けとけ。
11デフォルトの名無しさん:2006/02/26(日) 11:31:12
ActionListenerでactionPerformedを使ってメニューアイテムを操作する方法は
サイトを巡って見つけたので、分かるのですが。MouseAdapterを使って判断する仕方が
探すことができなくて、、、
12デフォルトの名無しさん:2006/02/26(日) 12:28:49
>>11
前提が間違ってる。
コンポーネントをマウスで操作したときにMouseListener(MouseAdapter)が必要になるわけではない。

コンポーネントに対してマウスで行った動作をMouseListenerに通知するのである。
同じく、コンポーネントに対して行われた何らかのアクションをActionListenerに通知する。
これらの仕組みは、既に組み込まれており、常に動いているのである。

ユーザの動作を補足したい場合、Listenerをそのコンポーネント(今回はMenuItem)にあらかじめ登録(追加)する。
コレにより、通知がListenerに届き、登録された動作を実行するようになる。
13デフォルトの名無しさん:2006/02/26(日) 12:31:18
JMenu#getComponentAt(e.getX(), e.getY())
とかで出来そうじゃん。
14デフォルトの名無しさん:2006/02/26(日) 12:36:40
なるほど・・・しっかりと理解できてなかったみたいです。すみません
ですが、item1.addMouseListener(new myListener());であらかじめ登録していると
思っているのですが。
なぜシンボルが見つからないと出てしまうのでしょうか・・・
15デフォルトの名無しさん:2006/02/26(日) 12:47:27
e.getSource()==item1
16デフォルトの名無しさん:2006/02/26(日) 12:47:39
>>14
シンボルが見つからないのは、import をミスってるか、
クラス名の書き間違い、だっけ?
17デフォルトの名無しさん:2006/02/26(日) 13:01:10
すみません、解決できました。。。グローバルにitem1を定義していなかっただけだった。。。
さんざんひっぱってすみませんでした、ありがとうです。
18デフォルトの名無しさん:2006/02/26(日) 13:04:35
グローバル?
19デフォルトの名無しさん:2006/02/26(日) 13:09:11
>>18
違うクラスの変数を使おうとしただけじゃね?

まぁ、グローバルなんて何処の世界の住人だろうと思うが
20デフォルトの名無しさん:2006/02/26(日) 13:58:54
javaのソースの公開はどうやればいいですか?ファイル形式ので。
21デフォルトの名無しさん:2006/02/26(日) 14:03:13
>>20
何が言いたいのかよくわからんが圧縮すればいいんでね?
22デフォルトの名無しさん:2006/02/26(日) 14:05:31
>>20
短いならそのまま↓あたりで。長かったらzip圧縮してあぷろだかな。
http://sourcepost.sytes.net/
23デフォルトの名無しさん:2006/02/26(日) 15:12:42
アジャックスがやりたいんだけど
どうすればいいの?
24デフォルトの名無しさん:2006/02/26(日) 15:20:54
>>20,21 ありがとう。自分のホームページで公開するんだけど、
pdfみたいのでなんかない?
2520:2006/02/26(日) 15:26:58
>>23
板違い。Web制作板へ。
>>24
やっぱり意味わからん。「pdfみたい」ってどんなイメージなの?
2621:2006/02/26(日) 15:27:51
鬱。
>25の書き込みは>21によるものです。
27デフォルトの名無しさん:2006/02/26(日) 15:30:35
>>24
っ<pre>
28デフォルトの名無しさん:2006/02/26(日) 15:35:06
すいません、String型の変数に、Integer型の変数に入っている値を入れるには
どうすればよいのか教えてください!
2924:2006/02/26(日) 15:39:45
http://www.〜〜/〜.java っていうのが作りたい。
30デフォルトの名無しさん:2006/02/26(日) 15:41:08
つ FTP
31デフォルトの名無しさん:2006/02/26(日) 15:41:21
>>28
Integer#toString()
32デフォルトの名無しさん:2006/02/26(日) 15:43:07
>>20
Eclipse使っているなら、Java2Html プラグインがある。
http://www.java2html.de/eclipse.html

>>28
String str = intObject.toString();
33デフォルトの名無しさん:2006/02/26(日) 15:43:36
>>29
作ればいいじゃん?
Web製作板へ。行っても蹴られそうだが

おそらく日本人だろうが、日本語の不自由さに哀れみすら感じる。
34デフォルトの名無しさん:2006/02/26(日) 15:53:10
>>29のいったいどこが「pdfみたいの」なのか、誰か俺に解説してくれ
35デフォルトの名無しさん:2006/02/26(日) 15:59:15
日本語の能力が、というよりそもそも知識が皆無なんだろうな。
コンピュータ弄って間もないうちにプログラミングなんかに手を出した結果がこれ。
3621:2006/02/26(日) 16:16:22
なんとなく分かってきた気がする。
>20が言う「pdfみたいなの」とはハイパーリンクのことだろう。
ハイパーリンクはHTMLでやるのが普通。
ただ>20にはHTMLの知識はおろかコンピュータに関する知識も危うい。

>20が何を公開するのか興味あるなあ。
3720翻訳:2006/02/26(日) 16:30:08
Javaのソースをウェブに公開したいのですが、
どのようなファイル形式にするのが好ましいでしょうか?
ソースは自分のサイトに公開するのですが、
もしpdfに似たファイル形式があれば教えてください。

こんな具合だろう。
>29は拡張子のことを表現したかったと思われる。
38デフォルトの名無しさん:2006/02/26(日) 16:35:35
おれの解釈は

Javaのソースを自分のホームページに公開したいです。
JapaneseInterpretException
39デフォルトの名無しさん:2006/02/26(日) 16:59:11
意味わかんね
40デフォルトの名無しさん:2006/02/26(日) 17:01:17
すまんが>>37>>38の翻訳を誰かしてくれ。
意味が分からん。
41デフォルトの名無しさん:2006/02/26(日) 17:04:33
読解力が欠落してるのも問題だな
42デフォルトの名無しさん:2006/02/26(日) 17:07:36
じゃあ>41は>37が分かる?
>37=>41だったらこの質問意味ないが。
43デフォルトの名無しさん:2006/02/26(日) 17:10:53
他人だよ。
ソースを公開したいけどどうしたらいい? 以外に解釈のしようがあるのかと。
44デフォルトの名無しさん:2006/02/26(日) 17:12:26
>>40 に同意。
>>41 はアンカー付けてくれ。
4540:2006/02/26(日) 17:24:24
>>43
「pdfに似たファイル形式」とか「拡張子のことを表現したかった」って何が言いたいか分かる?

「pdfに似たファイル形式」っていう表現は目的語がないからよく分からないのよ。
"ソース"を「pdfに似たファイル形式」で公開するってこと?
もし"ソース"をだったとしたら、何でいちいちそんなめんどくさいことするのか分からん。
テキスト(*.txt)でアップするとかでいい。

「拡張子のことを表現したかった」はお手上げ。まったく分からん。
「>29は拡張子のことを表現したかった」って何?
46デフォルトの名無しさん:2006/02/26(日) 17:31:45
何で必死になってるか知らんが、解釈論で泥沼戦始めるほど馬鹿じゃないんで。
4740:2006/02/26(日) 17:34:57
   ||
 Λ||Λ
( / ⌒ヽ
 | |   |
 ∪ 亅|
  | | |
  ∪∪
   :
   :   第三者に言われるならまだしも・・・

 ‐ニ三ニ‐
48デフォルトの名無しさん:2006/02/26(日) 17:39:21
すいませんが
Java DLセンターに
jdk-1_5_0_06-windows-i586-p.exe 59.86 MB
jdk-1_5_0_06-windows-i586-p-ifw.exe 237.81 KB
の2つがあるのですが
下のほうはなんか関係があるのですか?

49デフォルトの名無しさん:2006/02/26(日) 17:48:23
基地外同士仲良くしろよ
50デフォルトの名無しさん:2006/02/26(日) 17:49:49
>>48
オフラインインストールと
オンラインインストール

後者はインストール時に必要なものを
ネット経由でとってくる。
51デフォルトの名無しさん:2006/02/26(日) 17:50:50
> Windows Online Installation, Multi-language
        ~~~~~~
オフライン版はインストーラーとインストールデータが入っている。
オンライン版はインストーラーだけで、インストールデータはインストールのときに取りに行く。
ディスク容量が切迫してて一時的にもオフライン版を置くのが厳しい場合や、開発環境を
整えるために皆に配る場合、雑誌の配布用 CD-ROM に入れたりだとかそんな用途だと思う。
52デフォルトの名無しさん:2006/02/26(日) 18:02:24
Objectクラスのメソッドのfinalize()って存在する意味はあるのでしょうか。
たとえば、どんな時に使えば良いのですか?
53デフォルトの名無しさん:2006/02/26(日) 18:07:06
javacて重いね
54デフォルトの名無しさん:2006/02/26(日) 18:11:05
>>52
ファイナライザをオーバーライドした中で、スーパークラスのファイナライザを呼び出す時。
55デフォルトの名無しさん:2006/02/26(日) 18:12:04
>>53
ピザでも食っ(ry
56デフォルトの名無しさん:2006/02/26(日) 18:15:33
すっごい初歩的な質問で恐縮なんですが,Javaでの文字列リテラルの扱いがよく分からない..
Stringクラスのインスタンスが作られてそこに格納されるんでしょうか?
それともC言語のように裸の状態(?)で取り扱われるんですか?
57デフォルトの名無しさん:2006/02/26(日) 18:17:41
>>56
char(うにこーど
)の配列
58デフォルトの名無しさん:2006/02/26(日) 18:18:40
>>56
前者
"str".charAt(0);とかメソッドも呼べる。
59デフォルトの名無しさん:2006/02/26(日) 18:21:35
>>56
String クラスのインスタンス
だから "ABC".charAt(1) という書き方も出来る。

>>57
ボケか天然か分かりづらくて絡めないんだが…
60デフォルトの名無しさん:2006/02/26(日) 18:22:43
つまり全ての文字列リテラルにはそれを格納するStringクラスが1つだけ必ずあって,
クラスに属さずに宙ぶらりんの状態では存在しない..ということですね
61デフォルトの名無しさん:2006/02/26(日) 19:17:52
初心者な質問で失礼しますm( )m
「java script」と表示されるリンク先が
開けないのですがどうしたら良いのでしょうか?
62デフォルトの名無しさん:2006/02/26(日) 19:19:53
状況がよくわからない
63デフォルトの名無しさん:2006/02/26(日) 19:20:02
>>61
精神異常は消えろよ
ここはJavaスレだ 関係ない質問持ってくんなよ糞が
6461:2006/02/26(日) 19:23:14
すみませんでした
javaと表示されているのでjavaスレが適切なんだろうかと思ってました…
ご忠告ありがとうございます
65デフォルトの名無しさん:2006/02/26(日) 19:25:03
>>64
JavaかJavaScriptかどっちかはっきりしろよ低能
66デフォルトの名無しさん:2006/02/26(日) 19:27:32
こういう類の質問者に嬉々として食いつく奴って一体w
67デフォルトの名無しさん:2006/02/26(日) 19:34:39
こういう類の質問者に嬉々として食いつく奴に嬉々として食いつく奴って一体w
68デフォルトの名無しさん:2006/02/26(日) 19:40:47
こういう類の質問者に嬉々として食いつく奴に嬉々として食いつく奴に嬉々として食いつく奴って一体w
69デフォルトの名無しさん:2006/02/26(日) 19:41:09
StackOverflowError
氏ね
70デフォルトの名無しさん:2006/02/26(日) 19:45:06
ノリのいいスレですね。
71デフォルトの名無しさん:2006/02/26(日) 19:48:13
Java プログラムでプラグイン機能を実現したい場合、どのようにすれば良いですか?
起動後に特定フォルダ内にある特定拡張子(実質的には .classファイル)のファイルを読み込み、
それを基にしてメニュー項目を追加したりタブ項目を追加したり本体を改造したりしたいのですが・・・
72デフォルトの名無しさん:2006/02/26(日) 19:51:13
>>71
URLClassLoader
73デフォルトの名無しさん:2006/02/26(日) 19:52:56
>>72
ありがとうございます。
74デフォルトの名無しさん:2006/02/26(日) 20:11:39
>>70
ありがとうございます
75デフォルトの名無しさん:2006/02/26(日) 20:13:57
>>76
ありがとうございます。
76デフォルトの名無しさん:2006/02/26(日) 20:19:50
sexさせてくださいー
77デフォルトの名無しさん:2006/02/26(日) 21:59:39
エロサイトくださいー
78デフォルトの名無しさん:2006/02/26(日) 22:41:36
JavaScriptからJavaにチャレンジしようと思ってます
所々JavaScriptと取り扱いが似ている部分がありますね
オラ、なんだかわくわくしてきたぞ
79デフォルトの名無しさん:2006/02/26(日) 22:43:34
前スレの822だが、
awt やらずにいきなり swing の勉強してるが今のところ特に問題ないです。
皆さんが言ってたとおり、必要な部分だけ awt 使って後は swing で出来る
感じですね。今のところなんでこの後はわかりませんが。

楽チンですな。
80デフォルトの名無しさん:2006/02/26(日) 22:46:54
awt やらない奴はぁ〜〜〜アウト(awt)!なんつって
81デフォルトの名無しさん:2006/02/26(日) 22:49:38
まだ間に合う、今、今すぐ前言の撤回を!!!!
82名無し募集中。。。:2006/02/26(日) 22:51:45
80 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/26(日) 22:46:54
awt やらない奴はぁ〜〜〜アウト(awt)!なんつって
83デフォルトの名無しさん:2006/02/26(日) 23:05:02
>>82
あっ、てめぇ、俺の発言パクるんじゃねーYO!
84デフォルトの名無しさん:2006/02/26(日) 23:11:24
メロラップ
8520:2006/02/26(日) 23:14:31
>>37のとうりです。他の人がvisual studioを使ってるのでそれでやります。
以外に読解力が乏しいひとが多いですね。
86デフォルトの名無しさん:2006/02/26(日) 23:37:09
20 名前:デフォルトの名無しさん 投稿日:2006/02/26(日) 13:58:54
javaのソースの公開はどうやればいいですか?ファイル形式ので。

↑いや、単純にこの言葉だけで何をどうしたいのか分かり辛いだろ
読解力じゃなくて、説明する側の説明不足だよ
なんならソースをまるごとアーカイバにしちゃった方が早いだろ
87デフォルトの名無しさん:2006/02/26(日) 23:37:27
と日本語力の乏しい人が言っております
88デフォルトの名無しさん:2006/02/26(日) 23:38:06
>>86
阿呆の相手するな
89デフォルトの名無しさん:2006/02/26(日) 23:42:12
日本語とか英語とか、物事を理解する、相手に理解させる能力の方が重要だろ
コミュニケーションランゲージなんてのは、結局人によって違ってくるんだし
そこを解決するために、プログラム言語に対してコンパイラがある
そのくらい物事が理解できなきゃ、プログラミングの腕も大したこたぁ〜ねぇな
なぁ、粘着>>20よ。自分の世界に入ってねーで、ちったぁインターネットの世界で良いから
海外に向けてみろや?な?
日頃使っている検索エンジンはなんだ?Yahoo!Japanか?
なら www.yahoo.com/ にしてみろ、な?世界が広がるぜ?
90デフォルトの名無しさん:2006/02/26(日) 23:44:02
3行以上は読まない
91デフォルトの名無しさん:2006/02/26(日) 23:44:14
あとな、どの言語にしても英数文字列ばっかりだろ?
なら途中に入れるコメントや注釈も英語で書いてみようぜ?
一文字2バイトも食っちまう全角なんてもったいないだろ?
ソースの無駄遣いだぜ?おっと、お好み焼きにはソースもマヨネーズも
けちけちしないけど適量でたのむぜ
92デフォルトの名無しさん:2006/02/26(日) 23:45:28
はぁ、最近の生ぬるい「ゆとり」教育を受けたガキは集中力が無くて困るぜ
こんなのが日本の未来を担うなんて、日本は終わったな
まぁ、少子化問題は外国人労働者の導入で解決せざるを得ないだろうけど
93デフォルトの名無しさん:2006/02/26(日) 23:50:58
ご飯ないからって残飯食べ漁るようになっちゃおしまいだな
94デフォルトの名無しさん:2006/02/26(日) 23:51:54
おっさんは自分の将来の心配でもしてろよ
その歳でPGって大変だろ
95デフォルトの名無しさん:2006/02/26(日) 23:54:07
>>86
(×) とうり
(○) とおり

(×) 以外に
(○) 意外に


日本語に乏しいようですね。
96デフォルトの名無しさん:2006/02/26(日) 23:54:39
ゆとり教育を受けていない世代におっさんじゃないまだ若い世代がいますが何か?
自分の浅はかな考えで相手を罵倒するとか、やれやれ・・・
>>20のプログラムは参考にならんから、アップすんなよ
どうせ悪さするウィルスだろw
97デフォルトの名無しさん:2006/02/26(日) 23:55:51
>>95
だからさぁ、キチガイ>>20は説明不足だっつってんのよ?
日本語に乏しいとかじゃなくてw
98デフォルトの名無しさん:2006/02/26(日) 23:58:14
20 名前:デフォルトの名無しさん 投稿日:2006/02/26(日) 13:58:54
javaのソースの公開はどうやればいいですか?ファイル形式ので。
↑明らかに説明不足。自分の状況が他人にも理解されないと切れるタイプ
99デフォルトの名無しさん:2006/02/26(日) 23:59:13
阿呆の相手するなって
100デフォルトの名無しさん:2006/02/26(日) 23:59:36
85 名前:20 投稿日:2006/02/26(日) 23:14:31
>>37のとうりです。他の人がvisual studioを使ってるのでそれでやります。
以外に読解力が乏しいひとが多いですね。
↑以外に自分の状況を説明できないひきこもりがいるみたいですねw
101デフォルトの名無しさん:2006/02/27(月) 00:00:39
>>99
はーい、まぁ、アホは自爆するだけだからね
相手を否定して自分を正当かしようとか
相手に落ち度があれば徹底的に責めて
最後に自分がつまらない失敗をしたことで大勢から攻められるんだよなw
102デフォルトの名無しさん:2006/02/27(月) 00:03:01
>>101
情けは人の為ならず、ではありませんが、
攻撃する時は細心の注意を払って行うようにしています。

自爆が一番怖いですなぁ
103デフォルトの名無しさん:2006/02/27(月) 00:10:49
ねぇねぇ、そんなにJavaのプログラミング自身があるなら
ちゃちゃっと僕チンのためにテトリスとかフリーセルを作ってよー
104デフォルトの名無しさん:2006/02/27(月) 00:12:15
>>103
車輪の再発明はよろしくなくてよ
105デフォルトの名無しさん:2006/02/27(月) 00:21:55
>>103
テトリス
ttp://ikeda.gotdns.com/soft/
フリーセルはしらん
106デフォルトの名無しさん:2006/02/27(月) 00:26:02
異常者同士仲良くしろよ
リハビリ用にスレッド一つ立ってんだから
107デフォルトの名無しさん:2006/02/27(月) 00:33:00
オリンピックも終わりじゃ、閉幕式見ろよー
108デフォルトの名無しさん:2006/02/27(月) 00:50:33
マジで英語とかコンピュータとか株とかを小学校で教える暇があったら、
国語の授業を倍くらいにしろよ。情緒的な美的感覚のないやつの書いた
プログラムってぐちゃぐちゃだし勘弁して。
109デフォルトの名無しさん:2006/02/27(月) 00:51:29
>>108
そこでコーディング規約ですよ
110デフォルトの名無しさん:2006/02/27(月) 00:52:25
情緒的で美的感覚で書いたプログラムはただのマスターベーションだけどな
111デフォルトの名無しさん:2006/02/27(月) 00:54:51
質問させてください。

Dateインスタンスの属性のうち、
YEAR/MONTH/DAY/HOURを残して
残りをすべて0に設定したいのですが、
以下のやり方でよいのでしょうか?

Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.set(MINUTE, 0);
cal.set(SECOND, 0);
d = cal.getTime();

よろしくお願いします。
112111:2006/02/27(月) 01:03:18
補足です。

おたずねしたいのは、
calendarにSECONDより小さな属性は含まれていないのかということと、
何となく回りくどく見えるが、これがもっともストレートな記法なのかということです。

どうかよろしくお願いしますm(_ _)m
113デフォルトの名無しさん:2006/02/27(月) 01:07:24
114デフォルトの名無しさん:2006/02/27(月) 01:48:33
>>112
CalendarのAPIにざっと目を通せば明らかだと思うんだが、
Calendar.MILLISECONDがある。

115デフォルトの名無しさん:2006/02/27(月) 01:54:46
awt やらない奴はぁ〜〜〜アウト(awt)!なんつって
116デフォルトの名無しさん:2006/02/27(月) 01:55:55
そうだそうだ、絶対にawtはやれ!
117デフォルトの名無しさん:2006/02/27(月) 02:08:39
こんなのはどうかな?あんまり変わらんか・・・

Date sourceDate = new Date();
Calendar c1 = Calendar.getInstance();
c1.setTime(sourceDate);
Calendar c2 = new GregorianCalendar(c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), c1.get(Calendar.DAY_OF_MONTH), c1.get(Calendar.HOUR), 0, 0);
Date resultDate = c2.getTime();

System.out.println(c1);
System.out.println(c2);

System.out.println(sourceDate);
System.out.println(resultDate);
118デフォルトの名無しさん:2006/02/27(月) 02:13:55
>>113,114
レスありがとうございます!!

> CalendarのAPIにざっと目を通せば明らかだと思うんだが

確かにありました!
お手数おかけしてすみません。

ということは
Calendar#getTime()を呼び出した際にmsecは
勝手に切り捨てられるわけですね。

何となく腑に落ちませんが、
無理矢理納得することにします(>_<)







119デフォルトの名無しさん:2006/02/27(月) 02:15:53
ちなみに、ミリセカンドはJavaScriptにもあるメソッドなんだなぁ〜
120デフォルトの名無しさん:2006/02/27(月) 02:23:40
>ということは
>Calendar#getTime()を呼び出した際にmsecは
>勝手に切り捨てられるわけですね。

DateもCalendarもミリ秒単位だから切捨ては起きないと思うが。
121デフォルトの名無しさん:2006/02/27(月) 02:38:57
>>120
ええ〜っ

Date#getMillisecond()は存在しないので
てっきりmsecはないものだと思ってました。
ありがとうございますm(_ _)m

>>117
ありがとうございます!
参考にさせて頂きます。


日付計算めんどくさいです、、、
getRange(開始日時(n時ぴったりを指定)、終了日時)
っていうインターフェースに
getRange(今日の3時、明日の5時)
って指定したいだけなのに、もうソースぐちゃぐちゃ、、、(T-T)

どなたか助けてください(>_<)
122デフォルトの名無しさん:2006/02/27(月) 02:40:46
助けたいけど、どんなソースを書いているのか分からんからダメぽ
123デフォルトの名無しさん:2006/02/27(月) 02:50:56
>>122
おおお。

こんな感じのコードが山ほどです(>_<)

public class DateTest {
public static void main(String[] args) {
Date d = new Date();
Calendar today3 = Calendar.getInstance();
today3.setTime(d);
today3.set(HOUR, 3);
today3.set(MINUTE, 0);
today3.set(SECOND, 0);
today3.set(SECOND, 0);
Calendar tomorrow5 = Calendar.getInstance();
tomorrow5.setTime(d);
tomorrow5.add(DATE, 1);
tomorrow5.set(HOUR, 5);
tomorrow5.set(MINUTE, 0);
tomorrow5.set(SECOND, 0);
tomorrow5.set(SECOND, 0);
ArrayList<Hoge> hoges = Fugo.getRange(today3, tomorrow5);
}
}
124デフォルトの名無しさん:2006/02/27(月) 02:51:54
>>123
んでな、そのソースが「何の処理をする目的」かも分からんと
助言すら出来んのよ
125デフォルトの名無しさん:2006/02/27(月) 02:52:34
すみません、失敗しました。

public class DateTest {
public static void main(String[] args) {
Date d = new Date();
Calendar today3 = Calendar.getInstance();
today3.setTime(d);
today3.set(HOUR, 3);
today3.set(MINUTE, 0);
today3.set(SECOND, 0);
today3.set(MILLISECOND, 0);
Calendar tomorrow5 = Calendar.getInstance();
tomorrow5.setTime(d);
tomorrow5.add(DATE, 1);
tomorrow5.set(HOUR, 5);
tomorrow5.set(MINUTE, 0);
tomorrow5.set(SECOND, 0);
tomorrow5.set(MILLISECOND, 0);
ArrayList<Hoge> hoges = Fugo.getRange(today3,getTime(), tomorrow5.getTime());
}
}
126デフォルトの名無しさん:2006/02/27(月) 02:54:47
>>124
日時の範囲を指定して、データを取得するコードです。
上記の場合、
今日の3時から明日の5時までのすべてのHogeを取得して
hogesに格納します。
127デフォルトの名無しさん:2006/02/27(月) 02:55:01
Jakarta commons Lang のDateUtils.truncate使うか、そのソース参考にしてみ
128デフォルトの名無しさん:2006/02/27(月) 03:02:57
いちいち毎回setするのが面倒ならメソッドにわけろ。
それか分・秒・ミリ秒を無視するSimpleDateFormatで文字列化して、それをもう一度parseしろ。
129デフォルトの名無しさん:2006/02/27(月) 03:15:48
>>127,128
レスありがとうございます!
長々とお付き合い頂きありがとうございます。

>>truncate
確認しました!少し楽にかけそうです。


ところで、いちいちCalendarが介在するために
ソースがだらだらしてしまうのではないかと思います。

もはやオブジェクト間で日付の受け渡しをする際は、
以下のように、Dateではなく、Calendarを用いるべきなのでしょうか?

fugo#getData(Date date) → fugo#getData(Calendar cal)

Dateの存在意義って、、、!?
130デフォルトの名無しさん:2006/02/27(月) 03:21:19
そもそも、hogeについて分からんチンな俺は助言すら出来ないのよ
ゴメソ OTL せめて hage ならカツラを勧めてやるのだが
131デフォルトの名無しさん:2006/02/27(月) 04:42:37
>>129
Date の一行目を見よう。
ちなみに英語の Calendar に対応する日本語は暦である。
132デフォルトの名無しさん:2006/02/27(月) 05:00:48
マルチスレッドの話であるクラスにsynchronizedなメソッドが複数あった場合
あるスレッドがそのメソッドを実行中は他のスレッドは他の
synchronizedなメソッドを実行することは出来ますか?
分かりづらくてすみません。
一つのクラスの複数のsynchronizedなメソッドは同時に
ロックがかかるのかなと思ったんですがどうなんでしょうか?
133デフォルトの名無しさん:2006/02/27(月) 05:14:21
134デフォルトの名無しさん:2006/02/27(月) 11:30:19
x=0〜700,y=180〜600の間で画像をランダムに表示させるにはどうしたらいい
ですか?randomをつかってもうまくいきません。
135デフォルトの名無しさん:2006/02/27(月) 11:41:49
意味が分からんし、どううまくいかないかも分からん
136デフォルトの名無しさん:2006/02/27(月) 11:47:20
>>134
(int) (random() * 700)
(int) (random() * 420) + 180
137デフォルトの名無しさん:2006/02/27(月) 12:05:36
Vectorの使い方がよくわからないので質問したいのですが、
ArrayListに追加した内容をVector配列に追加したいのですが普通にaddじゃで機内みたいなんですけど
どのようにしたらいいのでしょうか?
138デフォルトの名無しさん:2006/02/27(月) 12:16:35
>>137
・生成
ArrayList al = new ArrayList();
(なんやらかんやら)
Vector v = Vector(al); // そのまんまですな
・コピー
ArrayList al = new ArrayList();
(なんやらかんやら)
Vector v = Vector();
v.addAll(al);

ArrayListに入れてるのに、なんでVectorに入れなおすのかが意図不明。
もしかしたら、もっとすっきりしたコードになるかもよ。
139デフォルトの名無しさん:2006/02/27(月) 12:31:12
すいません、教えてください!
javaで作ったファイルを、exeファイル等で起動することはできませんか?
よければやり方を教えていただけませんか?
140デフォルトの名無しさん:2006/02/27(月) 12:33:22
>>139
JNI
141デフォルトの名無しさん:2006/02/27(月) 12:33:34
C/C++なら
system("java hoge");
とか
142デフォルトの名無しさん:2006/02/27(月) 12:45:27
>>139
前スレでも似たようなのあったな。
VMあるという前提なら、exewrapとかで良いかと。
143デフォルトの名無しさん:2006/02/27(月) 13:00:53
すいません質問です。
String型の配列の、"配列の長さ"を調べる方法ってありますか?
String.length()じゃなくて、 new String[n]; のnを調べる方法です。
144デフォルトの名無しさん:2006/02/27(月) 13:01:55
String[] array = new String[n];
System.out.println(array.length);
145デフォルトの名無しさん:2006/02/27(月) 13:07:56
>>144
Σ(・Д・;三・д・)

インデックス指定じゃなくて、配列の元からlength()かけると出るんですか。
ありがとうございます。
146デフォルトの名無しさん:2006/02/27(月) 13:10:34
>>145
配列はオブジェクト扱いだから。Stringの配列に限りませんね。
147デフォルトの名無しさん:2006/02/27(月) 15:00:02
コンパイル後、
Could not create the Java virtual machine.
と出て実行できません。
助けてください。
お願いします。
148デフォルトの名無しさん:2006/02/27(月) 15:04:21
149147:2006/02/27(月) 15:13:24
>>148
ググリましたがわからないので質問させていただきました。

よろしくお願いします。
150デフォルトの名無しさん:2006/02/27(月) 15:19:33
>>149
他にメッセージは無いのか?
151147:2006/02/27(月) 15:29:46
実行時 -cp オプションつけて実行していたのですが
Could not create the Java virtual machine.
とでて実行できなくなりました。

-cp オプションつけずに実行しようとすると
Exception in thread "main" java.lang.NoClassDefFoundError:
ってでます(TT)
ググったらクラスパッチの設定が云々で〜と書いてあるのですが
何がダメなのでしょうか?

っていうか中小ITですが、一人ぼっちで早期出社研修とかありえなくないですか?
(TT)

152デフォルトの名無しさん:2006/02/27(月) 15:32:18
>>151
新卒かぁ、がんばれy
153デフォルトの名無しさん:2006/02/27(月) 15:33:41
>>143さんへ

VMというのは、なんの略ですか?
154デフォルトの名無しさん:2006/02/27(月) 15:34:45
> クラスパッチ
噴いた
155デフォルトの名無しさん:2006/02/27(月) 15:39:02
さげ
156147:2006/02/27(月) 15:39:08
ゴメンナサイ
クラスパッチではなく
クラスパスでした。
157デフォルトの名無しさん:2006/02/27(月) 15:40:15
マンコ晒したら回答
チンコ晒したら即死
158デフォルトの名無しさん:2006/02/27(月) 19:14:38
>>151
今までのjava が走りっぱなしとか無いよな?
159デフォルトの名無しさん:2006/02/27(月) 19:29:04
>>158
私の調べたところ、このエラーが出る例で、メモリを過剰に割り当てているものが二つほど見ることができた。
一つは5分おきに実行していた場合である。
もう一つは、-Xmsに512や1024を指定した場合である。
よって、前者の状態に当てはまるのではないか、と推測したわけだが、どうだろうか。
160デフォルトの名無しさん:2006/02/27(月) 19:33:50
いづれにしても提示する情報が不適切だな
161デフォルトの名無しさん:2006/02/27(月) 19:42:36
シーン…
162デフォルトの名無しさん:2006/02/27(月) 20:01:42
AppletのgetDocumentBase() のように
ローカル実行の場合にclassファイルがあるフルパスを取得するには
どうしたらよいのでしょうか。
(設定.iniを読み書きするのにパス名を知りたい)

よろしくお願いします。
163デフォルトの名無しさん:2006/02/27(月) 20:02:54
Javaで組み込みプログラムは可能になりましたか?
164デフォルトの名無しさん:2006/02/27(月) 20:04:35
クラスの置き場所は取れません。

ResourceBundle
Preferences
System.getProprety("user.dir")
System.getProprety("user.home")

のどれかが君の願いをかなえてくれるでしょう。
165デフォルトの名無しさん:2006/02/27(月) 20:11:04
>>163
J2MEをお調べください。…身近な例では、厳密に組み込みと言えないかもしれませんが、携帯がJavaですよね。
166デフォルトの名無しさん:2006/02/27(月) 20:13:27
>>162
jarに固めたりするので、.classの場所=.iniファイルの場所にはならないかと。
>>164さんのいずれかの方法で対処するとか、いっそクラスローダーにまかせちゃうとか。
167162:2006/02/27(月) 20:28:14
>>164
ありがとうございます。
Win環境でですが、System.getProprety("user.dir") で意図したものが取得できました。
初心者なので前2つとかはよくわかりませんが、これから勉強していきたいと思います。
166さんもありがとう。
168デフォルトの名無しさん:2006/02/27(月) 20:41:56
Strutsで開発することになったんだけど
サーブレットもEJBも解らない。
そもそも、Strutsっていきなりそれだけ勉強して理解できるものなの?
169デフォルトの名無しさん:2006/02/27(月) 20:44:07
できません。
170デフォルトの名無しさん:2006/02/27(月) 20:47:30
サーブレット、EJBありきってこと?
171デフォルトの名無しさん:2006/02/27(月) 20:48:35
>>168
とりあえず Struts に関する本を購入してください。
本は偉大です。
172デフォルトの名無しさん:2006/02/27(月) 20:49:56
>>171
本でどうにかなるのか、、、で結局Strutsの本だけである程度行けるってことかな。
とりあえず、会社の本使ってやってみるわ。
173デフォルトの名無しさん:2006/02/27(月) 20:59:58
>>172
大抵の本には、その本のターゲットになるレベルが書いてあるわけです。
それで、そこに書いてある単語が理解できなければ、その単語に関する本も
読めばいいという寸法です。
174デフォルトの名無しさん:2006/02/27(月) 21:03:10
>>173
ご親切にどうもありがとう。明日から暫く精進しますわ。
175デフォルトの名無しさん:2006/02/27(月) 21:13:41
/** キイが押されたときの処理 */
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_RIGHT : px=px+vpx; if(px > xmax-pl) px=xmax-pl; break;
case KeyEvent.VK_LEFT : px=px-vpx; if(px < xmin) px=xmin; break;
}
repaint();
}

/** キイが離されたときの処理 */
public void keyReleased(KeyEvent e) { }

/** キイが押して離されたときの処理 */
public void keyTyped(KeyEvent e) { }
}
最後の}にclassまたはinterfaceがありませんとでるのですが?

176デフォルトの名無しさん:2006/02/27(月) 21:16:58
class または interface 宣言がなかとです
177デフォルトの名無しさん:2006/02/27(月) 21:31:02
>>175
波カッコ {} の対応を疑ってみよう
178デフォルトの名無しさん:2006/02/27(月) 22:02:10
下のファイルをそれぞれTest1, Test2で同時に起動した時に、Share.valの値が
それぞれ0から順にカウントされていくのですが、これって同一VM上ということには
ならないんですか?
互いに干渉し合うようにカウントしたいのですが

--Share.java--
public class Share {
public static int val = 0;
}

--Test1.java--
public class Test1 {
public static void main(String[] args) {
while(true)
Share.val++;
}
}

--Test2.java--
public class Test2 {
public static void main(String[] args) {
while(true)
Share.val++;
}
}
179デフォルトの名無しさん:2006/02/27(月) 22:08:08
>>178
>下のファイルをそれぞれTest1, Test2で同時に起動した時に、

同時に起動って  何?
180デフォルトの名無しさん:2006/02/27(月) 22:09:03
Test1が起動してる最中に、という意味です
181デフォルトの名無しさん:2006/02/27(月) 22:14:14
>>178
> 同一VM上ということにはならないんですか?
なりません。

> 互いに干渉し合うようにカウントしたいのですが
スレッド (Thread) について勉強してください。
182デフォルトの名無しさん:2006/02/27(月) 22:26:51
スレッドは知ってます。
クライアントが2つ立ち上がった場合に、一つのクラスに対して同期を取りながら
アクセスをする方法はありませんか?
183デフォルトの名無しさん:2006/02/27(月) 22:39:29
「クラスにアクセス」ってのが意味分からない
184デフォルトの名無しさん:2006/02/27(月) 22:44:41
分かりませんかね?
インスタンスでもオブジェクトでもリソースでもいいんですが。

178のような方法ではムリだとはなんとなく分かりますが、
いわゆるクライアント−サーバのような機能を同一マシン上で実行するための
Java特有の機能(ツール?)のようなものはありませんか?
185デフォルトの名無しさん:2006/02/27(月) 22:45:53
>これって同一VM上ということには ならないんですか?

なりません。別々のVMです。
したがってこのVM間の通信はスレッド間の通信に等しいことになります。
186デフォルトの名無しさん:2006/02/27(月) 22:56:21
スレッド間の通信というのは手元の本だとwait(),notify()を使っているようなのですが、
これは同じVM上ではないのでしょうか?
それともメッセージ、もしくはソケット通信のようなことですか?
187デフォルトの名無しさん:2006/02/27(月) 22:57:26
>したがってこのVM間の通信はスレッド間の通信に等しいことになります。

すまん間違えた。

したがってこのVM間の通信はプロセス間の通信に等しいことになります。
188デフォルトの名無しさん:2006/02/27(月) 22:58:46
連続ですみません。

一応調べてはいるのですが、VMというのはmain()1つにつき1つということですか?
189デフォルトの名無しさん:2006/02/27(月) 22:59:25
>>187
なるほど、そういうことですか。
ありがとうございました。
190デフォルトの名無しさん:2006/02/27(月) 23:08:23
>>184
プロセス間通信をするなら、ソケットかRMIを使えばいいよ。
この辺に手頃な規模のサンプルがあるので参考になるかも。
ttp://www.hellohiro.com/
191デフォルトの名無しさん:2006/02/27(月) 23:25:42
>>190
ありがとうございます。
実現する機能をリモートと行うにはRMIというのを使えば良いようなことは検索で
分かりましたが、ローカルでテストする場合はどうするのかなと思ってました。
参考にさせて頂きます。
192デフォルトの名無しさん:2006/02/28(火) 00:24:40
すみません、JSPサーブレットの質問はここでも大丈夫でしょうか?
JSPからサーブレットを二つ呼びたいのですが、そういった事は可能なのでしょうか?

例:まず一つ目のボタンで商品名と詳細用のボタンを出し、その後詳細用のボタンを別のサーブレットで処理する。
193デフォルトの名無しさん:2006/02/28(火) 00:31:10
ローカルにだってソケットは開けるし、RMIも使えるしRMIのレジストリも起動できます。
194デフォルトの名無しさん:2006/02/28(火) 00:34:48
>>192
2つ呼んでるようには見えませんが。
1.まず一つ目のボタンで商品名と詳細用のボタンを出し(リクエストとレスポンス)
2.その後詳細用のボタンを別のサーブレットで処理する(リクエストとレスポンス)
1つのリクエストに1つのレスポンスですよね。単に1と2で表示するjspを1つにしたいなら、
そう書けばいいだけで…俺、なんか勘違いしてる?

あと、この手の話題はWebProg板にスレがあったと思います。
195デフォルトの名無しさん:2006/02/28(火) 00:36:32
別に一つ目のボタンを押したときのPOST先をサーブレットAに、
二つ目のボタンを押したときのPOST先をサーブレットBにすりゃ
いいだけだけど。
196デフォルトの名無しさん:2006/02/28(火) 05:17:36
JavaScriptも面白いYO!
197デフォルトの名無しさん:2006/02/28(火) 11:08:19
すみません教えて下さい。
サーブレットなんですが、
ルータを挟んでいる場合のローカル端末(ブラウザを立ち上げた端末)のIPアドレスの取得方法を教えて下さい。
198デフォルトの名無しさん:2006/02/28(火) 11:11:36
>>197
ルータじゃなくてファイアウォールとかNATとかじゃないの?
ただのルータならHttpServletRequestからしかるべきフィールドがとれると思うんだが。
199デフォルトの名無しさん:2006/02/28(火) 12:04:58
>>197
それはHTTPの常識を打ち破る発明をしろと言うことなのだろうか?
200デフォルトの名無しさん:2006/02/28(火) 12:13:32
つまりセキュリティを無効化する方法を知りたいって事じゃね?
201199:2006/02/28(火) 12:17:41
いや、IPの話か。
ルータでパケットのIPを書き換える前のIPを知りたい、ということなのか?
202デフォルトの名無しさん:2006/02/28(火) 12:50:23
IP書き換えるのはルータじゃないよ。確かに最近のルータにNATやIPマスカレードな機能が乗ってること多いけどさ。
ルータはその名の通り、交通整理が仕事。それはさておき。

>>197
直付けクライアントor最後の串は、ServletRequest(HttpServletRequestの親)のgetRemoteAddr()。

なんで相手側のIPが必要なんでしょう?相手がローカルアドレスでDHCPだったりすると、意味なくなること
多いんだけど、ブラウザ起動中ってことなのかな?それでもローカルアドレス取るのはあまり意味内希ガス
NATやIPマスカレードを通すとわかりにくくなるよね。JavascriptやアプレットでIP取れれば返せるけど。
203デフォルトの名無しさん:2006/02/28(火) 14:30:06
MVCモデルは表示部分はJspコントロールはServletSQL発行などはBeansで行うことが
良いといわれています。
ですがServletのrequest.getParameter()で受け取った複数の値をそのままDBに
insertするようなSQL文をわざわざ他のクラス(Beans)で行うと、クラスの引数が
多くなってしまいあまりスマートではないような気がしています。
そのような処理もBeansで行うべきなのでしょうか?
204デフォルトの名無しさん:2006/02/28(火) 14:54:37
>>203
SQL発行をJavaBeans内でやるのは疑問ですが、それは本論と外れますね。
別にクラスの引数は多くなりませんよ。Beanだからnew Bean()で後はsetterを呼び出すだけ。
まあ、setter呼び出しが並ぶことには違いはありませんけど、たいていはO/Rマッピングツールで
やるのでコーディングは不要になったりします。
205デフォルトの名無しさん:2006/02/28(火) 15:00:48
beansとJspのやり取りだけではなく、ServletとBeansのやり取りもセッターと
ゲッターを使うということですね
勉強になりました
206デフォルトの名無しさん:2006/02/28(火) 18:12:26
質問です。
アプリの設定を管理するSettingsクラスを起動時に new し、そのコンストラクタ内で
getClass().getResourceAsStream( 設定ファイル名 ) と Properties#load() で読み込んでます。

これをjarにして起動すると正しく動作するんですが、jwsで呼ぶと load() でぬるぽが出ます。
当然オレオレ署名はしてありますが、セキュリティ例外ならともかくぬるぽなのが謎です。

かなりエロい人、教えてください。 jreは1.5.0_06 です。
207デフォルトの名無しさん:2006/02/28(火) 18:27:34
>>206
設定ファイルはどこにある?jar内?jarの外のフォルダ?
208206:2006/02/28(火) 18:29:29
>>207
jar内です。
クラスパスのルート、パッケージ無しの場所に置いてます。
209デフォルトの名無しさん:2006/02/28(火) 18:48:02
そのクラスからの相対パスにして味噌
210デフォルトの名無しさん:2006/02/28(火) 19:05:55
>>206
俺は意地悪なのでヒントだけあげよう。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/javaws/developersguide/faq.html#211
「このクラスローダには、Class.forName が JNLP ファイルに定義されている
リソースを検索しないという残念な副作用があります。システムクラスローダ
(ClassLoader.getSystemClassLoader) を使用してリソースやクラスを検索
する場合も同様です。 」

ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Class.html#getResourceAsStream(java.lang.String)
「このオブジェクトがブートストラップクラスローダによってロードされた場合、
メソッドは ClassLoader.getSystemResourceAsStream(java.lang.String) に
委譲されます。 」

外してたらスマン
211206:2006/02/28(火) 19:10:10
>>209
ダメでした orz
../../../〜 でダメだったんで、Settingsクラスと同じパッケージに置いてみてもダメでした。
相変わらずjar版は元気に動作します。
212206:2006/02/28(火) 19:12:40
>>210
クラスローダが怪しいなーという気はしてました。もしFAQだったら簡単に答えが
見つかっちゃったりなんかしちゃったりして、という淡い期待で聞いてみたんですが
やっぱりちゃんと嫁って感じですね。 >俺
読んでみます。 どうもです
213206:2006/02/28(火) 19:51:58
報告します。 出来そうです。
実はよく調べたら、クラスパス指定が間違ってたりキャッシュ残ってたりで
かなりヘボい状態でした。 orz 直せば出来そうです。 お騒がせしました。
jwsでのリソース取得について、結果はこんな感じ

System.getSystemResource() : ダメ
getClass().getResource()
 ルートから : ダメ
 相対パッケージ指定 : OK
getClass().getClassLoader().getResource()
 ルートから : ダメ
 相対パッケージ指定 : OK
Thread.currentthread().getContextClassLoader().getResource() : OK

皆様ありがとう。 物凄くエロいです。
214デフォルトの名無しさん:2006/02/28(火) 20:00:00
javaでタブオーダーの設定ってできますよね?
簡単に検索できると思ったのですがなかなか見つかりません。

すみませんが教えていただけないでしょうか
215デフォルトの名無しさん:2006/02/28(火) 20:03:39
>>214
tabindexかな
216デフォルトの名無しさん:2006/02/28(火) 22:45:35
J2SE1.4で現在実行中のスレッドの親スレッドのスタックトレースを取得したいんですが、
APIドキュメントを見てもいい方法が見つかりませんでした(見落としてるかもしれません)
なにかいい方法をご存知の方がいらっしゃいましたらご教示ください。
217デフォルトの名無しさん:2006/02/28(火) 22:49:03
>>216
1.4 じゃねぇな。
親スレッドから子スレッド起動するときに親側で例外一個作って渡しとけ。
218217:2006/02/28(火) 22:50:11
補足: それで取れるのは親のリアルタイムのスタックトレースではないので
219デフォルトの名無しさん:2006/02/28(火) 23:06:22
>>216
やっぱないですかorz

> 親スレッドから子スレッド起動するときに親側で例外一個作って渡しとけ。
それが出来れば簡単なんですが、プラグインを扱うシステムを作っていて、プラグインが生成したスレッドをシステム本体から監視したいので
問題のスレッドがどこで生成されるかを特定出来ないのです。設計見直すしかないでしょうか。
220デフォルトの名無しさん:2006/02/28(火) 23:20:41
バカすぎてJavaの宿題ができません>< 助けて〜
221デフォルトの名無しさん:2006/02/28(火) 23:22:43
>>220
知るかヴォケ、としか返しようがないレスを、今日見つけました。春はもうすぐですね。桜はまだでしょうか。
222デフォルトの名無しさん:2006/02/28(火) 23:27:49
ThreadGroupで例外が受け取れる。スレッド本体が落ちたとき限定だけどね。
メインループでプールされたスレッドの例外がないか監視していくとかなら精度は知らんが簡単
223デフォルトの名無しさん:2006/02/28(火) 23:29:53
>>221
春ですなぁ。花粉の恐怖がもうすぐそこにorz
それはさておき、>>220は宿題スレに誘導しておくのがいいのでは?俺?誘導なんかしませんよ。
224デフォルトの名無しさん:2006/02/28(火) 23:49:38
すみません質問です!jarファイルを作って、ダブクリだけで実行できるようにしようと
しているのですが、画像を使うファイルだった場合、classファイルと一緒に入れるのがよろしいのでしょうか?
jarコマンドの時に、画像を指定していれるのは、どのようなコマンドが必要なのでしょうか?
教えてください!><
225デフォルトの名無しさん:2006/02/28(火) 23:51:33
>>224
画像も JAR ファイルに入れとけ。
226デフォルトの名無しさん:2006/02/28(火) 23:52:34
>>219
設計見直すしかないです。あるいは 1.5 使ってください。
227デフォルトの名無しさん:2006/03/01(水) 00:22:16
Javaの1.5はかなり書き方がかわっていますね。
Java1.5についてのサイトや参考書を教えて欲しいのですが。
228デフォルトの名無しさん:2006/03/01(水) 00:25:31
>>227
このページはいかがでしょうか。
Java 6.0 の情報もありまして。

Java in the Box
http://www.javainthebox.net/
229デフォルトの名無しさん:2006/03/01(水) 00:39:12
>>228
すごくよさそうですね。
じっくり見てみます。ありがとうございます。
230デフォルトの名無しさん:2006/03/01(水) 02:43:56
# ひとりごと
# 最近質問したきり帰ってこない人が居ますが
# 解決したのなら、その旨、書いていただければ
# その症状で困ってる他の人も嬉しくなります。
# 回答側の人にとっても、別のところでまた役に立つかもしれません
231デフォルトの名無しさん:2006/03/01(水) 02:52:58
遅くなりましたが解決しました。
本当にありがとうございました。
232デフォルトの名無しさん:2006/03/01(水) 03:02:23
俺も解決しました。
本当にありがとうございました。
233デフォルトの名無しさん:2006/03/01(水) 03:04:17
おかげで体も引き締まり、女の子にもモテモテです。
ギャンブル運にも恵まれて、今ではちょっとした小金持ちw
本当にありがとうございました。
234デフォルトの名無しさん:2006/03/01(水) 12:42:50
Vectorについて教えてほしいのですが、

Vector v = new Vector();
for(int i=0;i<listProduct.size();i++)
{
prd=(Product)listProduct.get(i);
System.out.print(prd.name+" ");
v.add(prd.name);
for(int x=0;x<v.size();x++)
{
System.out.println("今のvectorの中身"+v);
}
System.out.println("vectorの全内容"+v);
}

このような内容でArrayListの中身は適当にA〜Eとしてください。
このときにVectorを表示するときに

今のvectorの中身ABCDE
vectorの全内容ABCDE

と表示されてしまうのですが、
今のvectorの中身
A
B
C
D
E
vectorの全内容ABCDE

とVectorの中身を上書きせずに改行して表示したいのですがどのようにすればよいのでしょうか?
235デフォルトの名無しさん:2006/03/01(水) 12:56:51
System.out.printlnメソッドを使えば、勝手に改行される。
System.out.printに変えてみるんだ。
236デフォルトの名無しさん:2006/03/01(水) 13:00:27
スマソ・・・勘違いしてた。
こうだね↓

System.out.println("今のvectorの中身");
for(int x=0;x<v.size();x++)
{
System.out.println(v.get(i));
}

System.out.println("vectorの全内容"+v);
237デフォルトの名無しさん:2006/03/01(水) 13:16:51
心の中でIterator、ListIteratorと叫ぶ俺がいる。や、別にいいんだけどね。
238 :2006/03/01(水) 13:37:40
同じコンピュータ上の(同じJavaVM上の)二つの違う種類のJavaプログラムが通信しあう手段はありませんか?
二つとも自分が作るプログラムです。一方が起動してなかったら起動して、起動してたらそれを使う。そしてデータを渡したり、そのためにメソッドを呼び出したりしたいんです。
239デフォルトの名無しさん:2006/03/01(水) 13:43:02
>>236
実行してみました、しかし、

vectorの中身
A
vectorの中身
B
B
vectorの中身
C
C
C
vectorの中身
D
D
D
D
vectorの全内容[A, B, C, D]

と言うふうに表示されてしまいました。できればこのような表示にしたいのですが、

今のvectorの中身 A
今のvectorの中身 B
今のvectorの中身 C
今のvectorの中身 D
今のvectorの中身 E
vectorの全内容ABCDE

どのようにしたら良いのでしょうか?
240デフォルトの名無しさん:2006/03/01(水) 13:44:50
>>238
PipeReader/PipeWriter とか。
あるいはデータ保持用の自作クラス作って
入出力は synchronized のメソッド使うとか。
241239:2006/03/01(水) 13:48:54
すいません自己解決しました。
もしもこれで間違っていたら指摘してください。

System.out.println("vectorの中身");

for(int x=0;x<1;x++)
{
System.out.println(v.lastElement());
}
242デフォルトの名無しさん:2006/03/01(水) 13:59:50
>>241
それ、forの意味はあるのか?
243デフォルトの名無しさん:2006/03/01(水) 14:11:36
ていうかだな。元のプログラムのこれ。

for(int x=0;x<v.size();x++)
{
System.out.println("今のvectorの中身"+v);
}
System.out.println("vectorの全内容"+v);

これの for のブロックの中のこれはなんだこれは?
System.out.println("今のvectorの中身"+v);

というか、Vecotor 全部出したいなら Enumeration 使え。
for (Enumeration e = v.elements(); e.hasMoreElements(); )
 System.out.println(e.nextElement());
244239:2006/03/01(水) 14:20:06
>>243
えっとですね、改行して出したかったので自分なりにはこれで大丈夫かなって思ってたんです。
245デフォルトの名無しさん:2006/03/01(水) 14:22:25
改行とvectorはまったく持って関係ないYO
246デフォルトの名無しさん:2006/03/01(水) 14:24:11 BE:285624083-
独習JAVA第3版の317ページ、問2のことで質問があります。
答えのソースを実行しても、Stackクラスを利用することができません。
ほかに何か設定が必要なのでしょうか?
コンパイラはEclipseのバージョン: 3.1.1で、
JDKは1.5.0_06です。
よろしくお願いします。
247239:2006/03/01(水) 14:26:00
すいません説明不足で。

改行したかのように見せたかっただけです(^_^;)
248デフォルトの名無しさん:2006/03/01(水) 14:27:37
>>246
独習JAVA第3版をここの住民みんなが持ってると思ってるのかー
249デフォルトの名無しさん:2006/03/01(水) 14:28:34
出版者に聞くか、ソースを晒せ
250デフォルトの名無しさん:2006/03/01(水) 14:30:22 BE:428436094-
>>248
別スレに誤爆してしまいました。
http://pc8.2ch.net/test/read.cgi/tech/1112760409/109-111
です。
251デフォルトの名無しさん:2006/03/01(水) 14:32:14
パソコン初心者なのですが
グルセンと言う仮想デバイス?をインストールしたのですが間違えてXP SP2用では無くただのXP用をインストールしてしまい
グルセンがどうやってもアンインストールできません
どうしたらアンインストールできますか?
XP用をダウンロードしたのは私ですがSP2用を再度ダウンロードしようと何度も試みましたが出来ません
何時も
グルセンは実行中です。タスクバー内にあるグルセンのアイコンを右クリックして「終了」選択してからRetryを押してください。
と出るだけでタスクバーには、終了のアイコンが出てきません。
どう言う事でしょうか何度か繰り返したらスタートにもグルセンが消えてもう無くプログラムでも削除を受け付けない為もう打つ手は、在りません。
マジで助けてください
252デフォルトの名無しさん:2006/03/01(水) 14:35:09
誤爆祭り?
253デフォルトの名無しさん:2006/03/01(水) 14:52:45
>>251
リカバリすれば?

いやしかし、どうしてこのスレに書いたのかな?
254デフォルトの名無しさん:2006/03/01(水) 15:06:35
リカバリーの仕方が分かりません
ゴミ箱も自動で削除されてるしどうしたらいいんでしょうか?
255デフォルトの名無しさん:2006/03/01(水) 15:18:24
スレ違いだ死ね
256デフォルトの名無しさん:2006/03/01(水) 15:35:04
>>250
どんなエラーになるんだい?
257デフォルトの名無しさん:2006/03/01(水) 15:38:17
実はグルセンというのはJavaで書かれているとか、特定用途向きのJVMとか…

んなわけないな。なんか、ゲーム用らしいし。
258デフォルトの名無しさん:2006/03/01(水) 15:42:42
>>254
じゃあ Linux をインストールしろ。


      完


259デフォルトの名無しさん:2006/03/01(水) 15:47:38 BE:190416544-
>>256
「型 Stackのインスタンスを生成できません」です。
その結果、PopやPush、empty等が呼び出せません。
260デフォルトの名無しさん:2006/03/01(水) 15:51:26
>>259
1.4にする
261デフォルトの名無しさん:2006/03/01(水) 15:54:04 BE:249921173-
>>260
何をですか?
262デフォルトの名無しさん:2006/03/01(水) 15:57:10
>JDKは1.5.0_06です。
これ
263デフォルトの名無しさん:2006/03/01(水) 16:00:31 BE:380832184-
>>262
設定画面のJDK準拠画面の、
コンパイラー準拠レベルは1.4になっています。
というよりも、1.3、1.4、5.0しか選べないです。
264デフォルトの名無しさん:2006/03/01(水) 16:09:52
うそぉん
コピペしただけでちゃんと動くよん
265デフォルトの名無しさん:2006/03/01(水) 16:21:38
>>263
Eclipseを使う場合、Javaのバージョンが1.5以降だと上手くうごかない。
ちなみに俺は1.4をインストールしてEclipseの設定変えたら動いた。

理由は詳しい人に任せた。
266デフォルトの名無しさん:2006/03/01(水) 16:23:22 BE:95208724-
>>265
今試してます。
267デフォルトの名無しさん:2006/03/01(水) 16:31:07 BE:214218263-
>>265
やっぱりできませんでした。
http://java.sun.com/j2ee/1.4/download.html#sdk
ここの一番上で良いんですよね?
インストール後に、設定>インストール済みのJRE>検索してJDKの設定をする。
何か間違ってますか?
268デフォルトの名無しさん:2006/03/01(水) 16:34:15
>>267
j2se
269デフォルトの名無しさん:2006/03/01(水) 16:35:53
俺は少なくとも1.5.0_06でEclipse動いてるから
270デフォルトの名無しさん:2006/03/01(水) 16:36:58
おれもぉ
271デフォルトの名無しさん:2006/03/01(水) 16:38:47
JAVAのdouble型の範囲について調べていたら。下記の様な表現を見つけたのですが
Eを使ったこの表現の意味がわかりません。
double8bytes±1.79769313486231570E+380〜±4.94065645841246544E-324

浮動小数の扱い方については一応理解しているつもりではいます。(符号部、小数部、
指数部であらわすということ)
スレ違いかとも思ったのですが、最適なスレが見つからないのでこちらで質問させていただきました。
272デフォルトの名無しさん:2006/03/01(水) 16:42:48
それは理解していないということだ
273デフォルトの名無しさん:2006/03/01(水) 16:45:59
俺も1.5.0_06 & Eclipse 3.1.1でコンパイルできる。コンパイル準拠レベルは5.0でも1.4でも可。
>>265は嘘。
274デフォルトの名無しさん:2006/03/01(水) 16:47:37
Eは10だ
E+380は10^380
275246:2006/03/01(水) 17:13:50 BE:107109533-
何をやってもコンパイルできません。
いったいどうしたら・・・。
276デフォルトの名無しさん:2006/03/01(水) 17:17:38
>>275
他のは動くんか?
277デフォルトの名無しさん:2006/03/01(水) 17:18:07
>Eclipseを使う場合、Javaのバージョンが1.5以降だと上手くうごかない。

んなわけあるか。
278271:2006/03/01(水) 17:20:09
>>274

1.79769313486231570E+380〜
というのは。
1.797(略) * 10^380〜

という風に理解していいんでしょうか。
279デフォルトの名無しさん:2006/03/01(水) 17:21:03 BE:428437049-
>>276
Stackクラスを利用しようとするとすべてコンパイルエラーになります。
ほかのものは大丈夫です。
もちろんThreadクラスも利用できました。
280デフォルトの名無しさん:2006/03/01(水) 17:24:34
コンパイラエラーが起こってるとこをコピペして。
281デフォルトの名無しさん:2006/03/01(水) 17:28:17
>>278
いいお
282デフォルトの名無しさん:2006/03/01(水) 17:34:03
ピコーン!!誤爆したソースを見てたら気づいたかも。

>>279
TaskクラスをTask.javaに書き、ResourceクラスをResource.javaに書いて、
Task.javaにだけimport java.util.*; と書き Resource.javaには書いてないとか。
両方のソースにimport宣言書いてる?

Eclipse使ってるなら、コンパイルエラーの箇所にカーソル置いて
Ctrl + 1 を押し、ポップアップからどれか選ぶとだいたい直る。
便利だが、最初のうちは余りこの機能に頼らないように。意味を理解しながら使ってね。
283デフォルトの名無しさん:2006/03/01(水) 17:37:37 BE:333228274-
>>280
コンパイルエラーの箇所が表示されるだけで、
一覧には表示されません。

>>282
ソースファイルは1つだけです。
284デフォルトの名無しさん:2006/03/01(水) 17:38:07
おれはResourcesTasks.javaだけにしたよ
285デフォルトの名無しさん:2006/03/01(水) 17:42:22 BE:535545195-
出来たーーーーー!

import java.util.Stack;


この一文を入れたらコンパイル成功して実行できました。

import java.util.*;も書いているのに何でだろ?
286デフォルトの名無しさん:2006/03/01(水) 18:01:13
すいません、質問です・・・
今javaをインストールしているのですが。(jse 5.0kit)
OSはウィンドウズ2000プロで、「このオペレーティングシステムはサポートされて
いません」みたいなことが出るんです。。。そのまま実行してインストールをしても
プロンプトでjavacを入れると、やっぱりインストールささってません;;
どうすれば、2000で出来ますか?
287デフォルトの名無しさん:2006/03/01(水) 18:16:55
公式見て来い
288デフォルトの名無しさん:2006/03/01(水) 18:17:00
一度Windowsアップデートしてこい。話はそれからだ。
289デフォルトの名無しさん:2006/03/01(水) 21:28:02
>277
3.xからは1.5以降の環境が必要だと思ったけど。
2.xなら1.4以前でも動く。
290デフォルトの名無しさん:2006/03/01(水) 21:32:39
>>289
>3.xからは1.5以降の環境が必要だと思ったけど。

そんなことはございません。
291デフォルトの名無しさん:2006/03/01(水) 21:35:43
>290
ほんとだ。すまんかった。
http://www.eclipsewiki.net/eclipse/?%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB#s1efe92d

3.xが1.4で、2.xは1.3か。
292デフォルトの名無しさん:2006/03/01(水) 21:53:59
mergedocで日本語化されたファイルが生成されなくて困っています。

【環境】
WindowsXPsp2
試したJDKのzipファイル
     jdk-1_5_0-src-jrl.zip  55.6 MB (58,326,364 バイト)
     jdk-1_5_0-src-scsl.zip 55.6 MB (58,338,869 バイト)
試したドキュメントソース
     jdk-1_5_0-doc-ja.zip 45.2 MB (47,498,450 バイト)の解凍したもの

【症状】
はじめは順調に進みますが、53%のところ(j2se/src/share/classes/java/nio/X-Buffer.java)で
エラーと表示され、必ずとまってしまいます。
上記ファイルは解凍してみると問題なく終了します。

なにがいけないかさっぱりです。
どなたかアドバイスをいただけないでしょうか。
よろしくお願いします。
293292:2006/03/01(水) 21:57:11
すいません、補足です。
日本語ドキュメントとJDKソースはともに5.0update6です。
よろしくお願いします。
294デフォルトの名無しさん:2006/03/01(水) 21:59:01
スレ違い氏ね
295デフォルトの名無しさん:2006/03/01(水) 22:06:03
>292
確かMergeDocってjarファイルが実行ファイルだったよね?
java -jar Mergedoc.jar
で警告・エラー時には何かメッセージ出してくれたように思うので
それ見て悩め。
296デフォルトの名無しさん:2006/03/01(水) 22:33:31
>>285
>>import java.util.*;も書いているのに何でだろ?

awt.*;
awt.event.*;

見たいな感じだろ。
297デフォルトの名無しさん:2006/03/01(水) 23:43:03
Javaでプログラミング始めて3ヵ月ほどです。(Eclipse)
ファイル入出力とか、それなりに出来るようになったんで、
これからGUIのアプリケーション作ってみたいんですが、

SWTとSwing、どっちから始めたほうがいいとかってありますか?
298デフォルトの名無しさん:2006/03/01(水) 23:49:42
今 SWT を選択する理由はあるのか?
299デフォルトの名無しさん:2006/03/01(水) 23:51:43
exeからtomcatをインストールしているところなのですが

最後の最後でNo Java virtual machine was found ってでます。

コマンドプロンプトから
未来のcatalina_homeフォルダにCDしてjava -versionはできます。

ほかに原因があるのでしょうか。
300デフォルトの名無しさん:2006/03/01(水) 23:53:26
君のコマンドプロンプトはタイムマシンになってるのか
301デフォルトの名無しさん:2006/03/01(水) 23:53:33
勘違いしてる人がたまにいるけど
SWTは飽くまでEclipseのプラグイン用だよ
6.0からはSwingもよりネイティブルックに近づくしね
302デフォルトの名無しさん:2006/03/01(水) 23:57:39
Datasource、JDBC接続は何が違うんですか?
303デフォルトの名無しさん:2006/03/01(水) 23:58:43
根っこは同じ JDBC
DataSource はコネクションプールしてるだけと思えば良い。
304299:2006/03/02(木) 00:07:08
>>300
未来のcatalina_homeというか
F:\です。

zip版からやると
”-Djava.endorsed.dirs=”が見つかりません
みたいなエラーがでます。

今気づいたんですが、スレ違いでしょうか
305デフォルトの名無しさん:2006/03/02(木) 08:53:20
すいませんが一つ聞きたいのですが、
JTextField text に入力させた任意の文字をString型とint型の変数に格納することは可能なのでしょうか?Apiを見てもよくわからなかったので教えてください。
自分で作ってみたものですが、text の吸出しはできるのですが、変換の仕方がわからないのでよろしくお願いします。

import javax.swing.*;
import java.awt.event.*;

public class TextTest extends JFrame implements ActionListener{
JTextField text;
JLabel label;
public static void main(String[] args){
TextTest test = new TextTest("TextTest");
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
}
TextTest(String title){
setTitle(title);
setBounds( 10, 10, 300, 200);
text = new JTextField("Sample", 20);
JButton btn = new JButton("read");
btn.addActionListener(this);
label = new JLabel("テキストの値を表示");
JPanel p = new JPanel();
p.add(text);
p.add(btn);
p.add(label);
getContentPane().add(p);
}
public void actionPerformed(ActionEvent e){
label.setText(text.getText());
}
}
306デフォルトの名無しさん:2006/03/02(木) 08:56:02
>>305
Integerのメソッドを調べる
307デフォルトの名無しさん:2006/03/02(木) 09:54:14
String strText = text.getText(); //Stringのデータを取得
int nText = Integer.parseInt(strText ) //intに型変換
308デフォルトの名無しさん:2006/03/02(木) 11:14:10
すんません。

i-Studyのような、多肢選択の問題集のアプリケーションをSwingで作ってるんですけど、
決まったパターン( 問題文  解答群  正解番号 など)で、まとまった100コくらいのデータ を扱いたい場合に、
データを保存したり読み込んだりする定石はありますか?

今のところ、
BufferedReaderでテキストファイルから全部まとめて読み込んでそれを元にMondaiオブジェクトを生成するとか、
独自のMondaiオブジェクトをインスタンス化してから、配列にまとめて
オブジェクトストリームで別のファイルに格納しておくとかしか浮かびません。

XMLとかJDBCとか使ったほうがいいのでしょうか?
あいまいな質問で申し訳ありませんが、何かヒントいただけませんでしょうか。

309デフォルトの名無しさん:2006/03/02(木) 11:19:04
>>305
聞き逃げ厨氏ね
310デフォルトの名無しさん:2006/03/02(木) 11:26:05
>>308
生データの編集のしやすさで選ぶ場合、CSVが無難だと思う。
格納したデータの取り扱いを楽にしたいならDBを。
XMLは複数クライアントとサーバ間で、データのやり取りをする場合に。

ぶっちゃけ、実現可能な手段なら何でも良いのだが…
311デフォルトの名無しさん:2006/03/02(木) 11:28:02
まぁ、CSVが一番無難だわな。
EXCELで管理もできるし
312デフォルトの名無しさん:2006/03/02(木) 11:40:07
>>310 >>311
おお、早速のレスありがとうございます。

CSVで保存したものを読み込む方法を、いくつかググったところ、
java.util.regexパッケージのsplitメソッドの使い方を発見しました。

今までStringTokenizer しか知らなかったんでかなり役立ちそうです(まだわかりませんが…)
とりあえずCSVでいってみようと思います。
ありがとうございました。
313312:2006/03/02(木) 11:51:11
と、思ったのですが、
問題文データに、カンマを含む文章が多数あるため
CSVとして保存すると厄介なことになりそうです…orz

問題文データが、改行、スペース、カンマ等を含む文字列なのです。
DBで検討してみます。すんません。
314 :2006/03/02(木) 12:13:08
System.Out.println(output)とかで簡単な整形をして出力をしたいので
行の初めに任意の数の長さのスペースが連続した文字列がほしんですけど、どうしたらいいですか。
自分の思いつくのは面倒くさくて非効率みたいです。

int length;
length = 5;//色々な値をとりうる。

StringBuffer buf = new StringBuffer();
for(int i = 0 ; i < length ; i++){
buf.append(' ');
}
String output = buf.toString() + "hello";
315デフォルトの名無しさん:2006/03/02(木) 12:25:44
あんまし長いスペースじゃなければこんなのふうにもできる
String SPACEPOOL = " ";
int spaceindent = 5;
String aa = SPACEPOOL.substring(0,spaceindent)+"空白"+spaceindent+"個";
out.println(aa);
316デフォルトの名無しさん:2006/03/02(木) 12:26:46
圧縮されちゃったけど
SPACEPOOLは20個ぐらいの固定空白ね。
317デフォルトの名無しさん:2006/03/02(木) 12:29:27
>>314
目的による。

例えば 5.0 以降で右詰め表示や左詰め表示のための
埋め草にしたいのであれば System.out.printf() 使えば良い。
318デフォルトの名無しさん:2006/03/02(木) 13:05:43
メソッド分けするがよろしい

public static String getPadSpaceStr(String arg,int length){
StringBuilder sBui = new StringBuilder(srg)
for(int i =0;i < length;i++){
sBui.append(" ");
}
return sBui.toString();
}

こうすれば、一つのメソッドで全てを補える。
319デフォルトの名無しさん:2006/03/02(木) 13:09:57
スペースの付く位置が逆
320デフォルトの名無しさん:2006/03/02(木) 13:11:43
Sorry 左につけるのか

public static String getPadSpaceStr(String arg,int length){
  StringBuilder sBui = new StringBuilder()
  for(int i =0;i < length;i++){
   sBui.append(" ");
  }
  return sBui.toString() + str;
}
321デフォルトの名無しさん:2006/03/02(木) 13:12:16
public static String getPadSpaceStr(String arg,int length){
StringBuilder sBui = new StringBuilder(srg)
for(int i =0;i < length;i++){
sBui.append(" ");
}
return sBui.toString() + arg;
}
322デフォルトの名無しさん:2006/03/02(木) 13:12:48
あぁ!もう!後は自分で考えろ!
323デフォルトの名無しさん:2006/03/02(木) 14:01:31
まあ、こうだろうなあ。

public static String getPadSpaceStr(String arg,int length) {
 StringBuilder buf = new StringBuilder(length);
 for(int i =0;i < length;i++)
  buf.append(' ');
 return buf.append(arg).toString();
}

Java 5 ならこうだな。フォーマットの解釈で時間が掛かるかも知れないが。

public static String getPadSpaceStr(String arg,int length) {
 return String.format("%" + length + "s", arg);
}

ていうか別関数にする意味はあまりなし。
324323:2006/03/02(木) 14:02:54
ああ、違う。間違い。

最初に length - arg.length() 求めてそれが1以上の場合にその数だけ
右にスペースを付けるようにしないとアレだ。

まあいいや。あとは自分で考えろ。
325323:2006/03/02(木) 14:03:24
右じゃねえ。左だ。

さよなら。
326デフォルトの名無しさん:2006/03/02(木) 14:14:51
こんなUtil的な処理を関数にしないとは・・・
327314:2006/03/02(木) 14:16:00
みなさん、どうもありがとう。
参考になりました。感謝。
328デフォルトの名無しさん:2006/03/02(木) 17:02:11
多態性について勉強しているのですが、原理は理解できたつもりでいるのですが
なぜそれをもってして「多態」と呼ぶのでしょうか。日本語の意味がよくわからないのです

「オブジェクトに応じた、多くの態度をとる性質」ですかね?


--
オブジェクト指向プログラミングにおいて,異なるオブジェクトに対して,同じメッセージを送った場合,そのオブジェクトに合わせて,異なる処理が適切になされること。多相性。
329デフォルトの名無しさん:2006/03/02(木) 17:06:52
>>328
すまんが、元の用語を英語で書いてくれねーと解らん
330328:2006/03/02(木) 17:12:15
331デフォルトの名無しさん:2006/03/02(木) 17:14:06
質問です。

Javaで、システムの状態(メモリ使用量とCPU負荷、各タスクの経過時間)を
取得するにはどうしたらよいのでしょうか?
332328:2006/03/02(木) 17:14:32
プログラム系で調べてると、polymophism って書いてあるんでが…
”r”がないんです。
                     
333デフォルトの名無しさん:2006/03/02(木) 17:20:24
334デフォルトの名無しさん:2006/03/02(木) 17:29:58
>328
辞書でも引けばいいじゃない。国語でも漢和でも。

たい【態】
 1. すがた。さま。ようす。
 2. 心がまえ。身がまえ。

オブジェクトというのは、一つのクラスからも多くの「態」が生まれうる。
それを多態性と呼ぶんでしょ。

俺は名無しだが番号がついてて、レスをしたことで個性が生まれる。
お前は名無しクラスから生まれた>328オブジェクト。
俺は名無しクラスから生まれた>334オブジェクト。
だが、「やい、多態性の質問したやつ手を挙げろ」と言われても、
俺は質問してないので無視する。手を挙げるのは>328だろ?
335デフォルトの名無しさん:2006/03/02(木) 17:46:50
>>331
他のネイティブアプリの情報知りたいなら素直にJNI使うか、外部プロセス使って情報取るしかない。

6.0 からなら CPU負荷については
java.lang.management.ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage()
で取れる事になってる。自分のメモリ使用量についてなら Runtime で大雑把な情報取れるし、
5.0 以降にある MXBean 使えばもうちっと詳しい情報が取れる。
336331:2006/03/02(木) 21:19:39
>>335
まさに求めていた情報です。今回のプロジェクトはJava5なので、渡りに船で
す。大変ありがとうございました。
337331:2006/03/02(木) 21:44:18
すみません、加えてネットワーク負荷、つまりLANポートにかかる負荷を取得
する方法は無いでしょうか?

ちなみに、ディスク容量も求めることになったのですが、こちらは Java6 か
らしか使えないようです。
http://www.02.246.ne.jp/~torutk/javahow2/diskspace.html

それにしても JNI か。今ちょっと見ただけですが、結構大変そうだなあ。
http://www.ki.rim.or.jp/~kuro/Java/JNI/
338デフォルトの名無しさん:2006/03/02(木) 21:46:56
>334
>オブジェクトというのは、一つのクラスからも多くの「態」が生まれうる。
>それを多態性と呼ぶんでしょ。
同一クラスから複数のインスタンスができることを「多態性」っていうんだっけ?
俺は継承関係のことを言ってるんだと思ってたんだけど。。
Student is a Person.
Teacher is a Person.
生徒も先生も同じ人ですよ、と。
339デフォルトの名無しさん:2006/03/02(木) 22:24:01
Stringニ格納されている文字列で指定した文字列よりも右側をすべて削除して再取得する場合
どうすればいいのでしょうか?

たとえば
「七人の侍〜わが青春に悔いなし」
「生まれてはみたけれど〜秋刀魚の味」
とあった場合
「〜」という文字列を指定して(「〜」は必ず一つしかない)
それよりも右にある文字列はすべて削除して

「七人の侍
「生まれてはみたけれど
としたいのですがご教授ください
340デフォルトの名無しさん:2006/03/02(木) 22:27:55
String のAPI見ろ

substringとindexOf使えば良いだろ
341デフォルトの名無しさん:2006/03/02(木) 22:44:40
>>340
すいません
詳しく教えてください

indexOfで文字列を指定するまではいいのですが
それより右を削除ってのがいまいちよく判りません
342デフォルトの名無しさん:2006/03/02(木) 22:53:33
>>341
だーかーらー。substring() の所を読めよ。
343デフォルトの名無しさん:2006/03/02(木) 22:54:46
オブジェクトというのは、一つのクラスからも多くの「熊」が生まれうる。
344デフォルトの名無しさん:2006/03/02(木) 22:56:03
そんな釣りにクマ(ry
345デフォルトの名無しさん:2006/03/02(木) 23:05:44
>>299
>>300

誰か助けてください
346デフォルトの名無しさん:2006/03/02(木) 23:07:22
Tomcat5.0.28+PostgreSQL7.4なんですが、どうやっても以下のエラーが出ちゃいます。
「Cannot create JDBC driver of class '' for connect URL 'null'」

tomcat/common/libには、postgresql用のjarファイルも置いてます。
tomcatのサーバーXMLの内容は↓な感じ。

<Resource name="jdbc/hoge" auth="Container" type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/hogedb"
username="postgres"
password=""
maxActive="4"
maxWait="5000"
maxIdle="2"
/>

どーしたら、このエラーなくなるんかしら、これが正解ってやつ教えてほっしーっす。
347デフォルトの名無しさん:2006/03/02(木) 23:34:41
348デフォルトの名無しさん:2006/03/02(木) 23:36:05
初歩的なんですけど…
Hogeオブジェクトがあったとして

Hoge [] test = new Hoge [3];
test [0] = new Hoge();
test [1] = new Hoge();

と記述すると、test[0]とtest[1]にはHogeオブジェクトの参照が代入されますよね。
オブジェクトを生成してないtest[2]の値ってどうなっているんですかね・・・?
349デフォルトの名無しさん:2006/03/02(木) 23:39:43
>>348
Java言語仕様に従った初期値が入る
350デフォルトの名無しさん:2006/03/02(木) 23:40:38
>>348
null
何のオブジェクトも参照していない。
351デフォルトの名無しさん:2006/03/02(木) 23:41:31
>>348
つ System.out.println(test[2]);

どうなってるって、何が知りたいんだか…
352デフォルトの名無しさん:2006/03/02(木) 23:43:05
>>345
これは針が見えている釣りなのかしら?
353デフォルトの名無しさん:2006/03/02(木) 23:46:23
>>348
http://www.y-adagio.com/public/standards/tr_javalang2/typesValues.doc.html#96595
> 個々のクラス変数,インスタンス変数又は配列構成要素は,
> それを生成するときに デフォルト値(default value) に初期化する (15.9,15.10)。
> # すべての参照型 (4.3) については,デフォルト値は null とする。
354348:2006/03/02(木) 23:52:02
解答が迅速で且つ、とてもよく分かりました。
355デフォルトの名無しさん:2006/03/03(金) 00:05:45
>>339

str = str.substring( 0 ,str.indexOf("〜"));
356デフォルトの名無しさん:2006/03/03(金) 00:25:08
漢字を2進数で表示させたいのですが、どうすればいいのでしょうか??
357デフォルトの名無しさん:2006/03/03(金) 00:35:29
>>356

int i = '胃';
System.out.println( Integer.toBinaryString(i));

こんなんでどうでしょう?
358357:2006/03/03(金) 00:45:41
文字列をまとめてならこっちでも

String str = "東京特許許可局";
for (int i = 0; i < str.length(); i++){
    System.out.println( Integer.toBinaryString(str.charAt(i)));
}

あとマルチポストイクナイ
359デフォルトの名無しさん:2006/03/03(金) 00:47:20
>>338
マルチプル・インスタンスも継承も、直接は多態性ではないよ。マルチプル・インスタンス自体は
多態性とはいっさい関係ないと思う。

本来の話で言えば、型のことは一切考えず、いろんなオブジェクトに全く同じメッセージ(たとえば
draw)を送ると、それぞれに応じた処理が動くことをいうよね。

いろんなオブジェクトがList内に入っているとき、構造化プログラムならまず種類をしらべて、種類に
応じた別の関数を呼ぶようにしないといけない。でもオブジェクト指向言語では、ともかく draw という
メッセージを送れば、それぞれのオブジェクトがそれぞれの処理を行ってくれる。同じ処理なのに、
送る先のオブジェクトが違えば動作も違うから「多態」でしょう。

Java的にいえばすべて同じDrawableオブジェクトなのに、draw()を呼ぶごとに(実クラスが何かに
応じて)動作が変わる。でも見た目上は、それらはDrawableオブジェクト。だから多態性、なんじゃない?
360デフォルトの名無しさん:2006/03/03(金) 01:07:38
>>357
わかりました!早速やってみます!!
361デフォルトの名無しさん:2006/03/03(金) 01:23:09
>>306>>307>>309
解決しましたどうもありがsとうございます。
362デフォルトの名無しさん:2006/03/03(金) 03:24:48
どうでもいいが、
聞き逃げ厨 って言葉の響きにワロタ
363デフォルトの名無しさん:2006/03/03(金) 05:10:59
携帯ゲームを作るんだったらJAVAですか?
364デフォルトの名無しさん:2006/03/03(金) 05:14:49
無謀ですがアプリコンテストに投稿してみたいのですが、携帯ゲームを作るのであればJAVAでプログラムを作るべきですか?
365デフォルトの名無しさん:2006/03/03(金) 05:17:23
その携帯が対応してる言語で作れ。
今 Brew より Java の方が多いんだっけ?
366デフォルトの名無しさん:2006/03/03(金) 07:04:20
BREWでJavaエミュ作ればKDDIに採用されるわグランプリとれるわで大変だと思う
367デフォルトの名無しさん:2006/03/03(金) 07:06:38
それはすばらしいすぎる。1ユーザとしてゼヒほしい。
368デフォルトの名無しさん:2006/03/03(金) 08:15:45
brewアプリはauの審査を受けないと一般には公開できません。
369デフォルトの名無しさん:2006/03/03(金) 08:59:05
JVM on BREWぐらいつくるところはあるだろうが、auに潰されてるんじゃない?
370328:2006/03/03(金) 09:11:48
>>333様 Wikiを引くのは思いつきませんでした、以後気をつけます。
>>334様 大変わかりやすい説明ありがとうございます。
371デフォルトの名無しさん:2006/03/03(金) 09:13:00
au が潰す理由ってあんの? BREW アプリのライセンス料取れなくなるから?
372328:2006/03/03(金) 09:22:05
少し気になったのが
>>334の説明を理解したうえで >>338 の指摘も考えてみたんですが。

よくある多態性の説明だと >>338 だと思うんですね。
・同一クラスから派生した複数のクラスのオブジェクトがある。
メッセージに対してクラスごとにそれぞれ異なる、「態」をなす。


>>334 さんの説明だと、同一クラスからインスタンス化された
複数のオブジェクトがそれぞれのオブジェクトの状態により異なった「態」をなす
っていう説明だと思うんですが、それも含めて多態性と呼んじゃって
いいもんなんでしょうかね。
もっとも>>334さんがナナシクラスとそこから派生したレス番号クラスっていう
意味で書いてたら僕の読み違いなんですが。
373デフォルトの名無しさん:2006/03/03(金) 09:29:19
サーブレットを使っていて、request.getSession()とかやると
HttpSessionインタフェースを持つオブジェクトを得られますよね。
このsessionインタフェースを持ったオブジェクトの実体って何なんでしょうか?
そういうことは考えちゃだめってこと?
374デフォルトの名無しさん:2006/03/03(金) 09:50:02
>>372
>>359 は読みましたか?
375デフォルトの名無しさん:2006/03/03(金) 09:54:16
>>373
その実装が何であるかまでを深く追求しないのはニュートンの時代からの科学的方法論です。
376328:2006/03/03(金) 11:09:31
>>374 すみまんせん 読みすごしてました。ごめんなさい、ごめんなさい。
377デフォルトの名無しさん:2006/03/03(金) 12:30:43
>>362
それおれもワロタ

いつからかこのスレには聞き逃げ厨が
繁殖するようになったなw
378デフォルトの名無しさん:2006/03/03(金) 13:02:49
聞き逃げ厨は自分が聞き逃げ厨だということに気付かないんだろうな
379デフォルトの名無しさん:2006/03/03(金) 13:05:29
いつからって、fj やパソコン通信の時代からずっとじゃん。今頃気づくなよ。
380デフォルトの名無しさん:2006/03/03(金) 13:12:35
dクス

381デフォルトの名無しさん:2006/03/03(金) 13:44:02
食い逃げ厨
382デフォルトの名無しさん:2006/03/03(金) 14:00:27
サーブレットを作っています。サーブレット側での文字コード指定で"Windows31J"を指定しているのです。
ところがたまに文字化けが起こるため、ブラウザ側ではメタタグでShift_JISを指定して受け取ってます。
これっていいんでしょうか?
Windows31JとShift_JISの関係を教えてもらえませんか?
383デフォルトの名無しさん:2006/03/03(金) 14:04:12
>>382
良いよ。
Content-Type の charset 属性と出力文字エンコーディングを分離できてない
サーブレットの仕様が糞なだけ。
384デフォルトの名無しさん:2006/03/03(金) 14:08:40
Shift_JIS → MAC,Windowsでの標準文字コードと世間様では認識されているが

Windowsは正確にはWindows31J(拡張シフトJIS)という文字コードが標準。
JIS X 0208(第1水準・第2水準)に、NEC/IBM外字を加えたもの。
385デフォルトの名無しさん:2006/03/03(金) 14:43:46
URLを指定して、MHT形式で取得してくれるようなjava beanを探していますが、
ありませんか?
386デフォルトの名無しさん:2006/03/03(金) 14:49:49
Componentクラスを使わずに、縦横のサイズのみを指定して
新しいImageを作成することはできますか?
387デフォルトの名無しさん:2006/03/03(金) 14:56:20
>>386
BufferedImage
388デフォルトの名無しさん:2006/03/03(金) 15:10:55
eml形式の受信済みメールファイルから、ヘッダ情報や添付ファイルを
JavaMail使って取り出すには、どうやればいいんでしょう?
389デフォルトの名無しさん:2006/03/03(金) 15:17:12
>>387
感謝
390388:2006/03/03(金) 17:24:56
ここみて自己解決しました。
ttp://www.rgagnon.com/javadetails/java-0458.html

391デフォルトの名無しさん:2006/03/03(金) 17:31:16
Javaソースからオブジェクト図(インスタンス図)を生成するツールってありますか?
392デフォルトの名無しさん:2006/03/03(金) 17:34:00
>>391
Judeで出来なかったっけ?
393デフォルトの名無しさん:2006/03/03(金) 17:51:37
>>392
いや、クラス図は作ってくれるけどオブジェクト図は無理。
オブジェクト図は実行時の動的な側面を持つものなので、
UMLツールで生成するのは無理じゃね?
プロファイリングツールの出番だと思う。
394デフォルトの名無しさん:2006/03/03(金) 17:57:24
JBuilderのプロファイラで見たことあるかも
395デフォルトの名無しさん:2006/03/03(金) 18:01:57
便乗質問。
ソースからUMLのシーケンス図を生成できるフリーのツールってありますか?
396デフォルトの名無しさん:2006/03/03(金) 18:21:08
ポストインクリメントとプリインクリメントの違いを教えてください!
397391:2006/03/03(金) 18:32:09
thanksです。プロファイラの情報漁ってみます
398デフォルトの名無しさん:2006/03/03(金) 19:00:07
int aa = 3;
int bb = 0;
bb = aa++;
out.println("aa++ bb="+bb);

aa = 3;
bb = 0;
bb = ++aa;
out.println("++aa bb="+bb);
399デフォルトの名無しさん:2006/03/03(金) 19:26:17
すみません、質問です!
JListを使っているのですが、リストに入れた文字の大きさを変えるには
どうすればいいでしょうか?
modelもJListと一緒に使っています・・・
400デフォルトの名無しさん:2006/03/03(金) 21:02:31
すいません。

メモリ上にずっと置いておけないぐらいのデータを扱うプログラムを書いているのですが
ある一定量を超えたらファイルに書き出してくれる(LRUとかでキャッシュしてくれるとなおよし)
ようなArrayListなどのコレクションってないでしょうか?

外部ライブラリとかでもかまいません。

ちょっと違うかもしれませんが、RubyのPstore(http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=PStore)のJava版
のようなライブラリでもOKです。

識者の方ご意見御願いします。

401デフォルトの名無しさん:2006/03/03(金) 21:30:54
J2EE以外でデータベースアクセスでトランザクション処理を
やってくれるようなフレームワークはありませんか。
402デフォルトの名無しさん:2006/03/03(金) 21:33:52
403402:2006/03/03(金) 21:35:08
間違えた。
>>402>>399へのレス。

>>401
jtomとか。
404デフォルトの名無しさん:2006/03/03(金) 21:36:05
× >>339
>>399
405404:2006/03/03(金) 21:36:41
おおすまん。
気づいておったか。
406デフォルトの名無しさん:2006/03/03(金) 21:39:40
>>403
トンクス!
だがものすごくこれに関する資料が少ないなw
407デフォルトの名無しさん:2006/03/03(金) 22:30:11
ちょっとお聞きしたいのですが、
Dialogの例外処理ってどうしたらよいのでしょうか?
408デフォルトの名無しさん:2006/03/03(金) 22:45:12
終了させてしまえ
409デフォルトの名無しさん:2006/03/03(金) 22:47:25
>>407
Dialog で例外処理が必要になるプログラムを作らない。
410デフォルトの名無しさん:2006/03/03(金) 23:44:10
Javaを初めてまだまだ初心者です。少々困っている事があります。
どなたかのアドバイス、ご指摘を頂ければと思い、書かせて頂きました。

内容としては、
文字入力待ち→何らかの文字列を入力してEnter→その文字列が表示されて
再び文字入力待ち→入力された文字列が「q」一文字の場合は表示せず終了

というものなのですが、コンパイルが通らずにいます。
public class WaitingAgain {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
String line = reader.readLine();
System.out.println(line);
if (line = reader.readLine() equals('q')) {
System.out.println();
}
} catch (IOException e) {
System.out.println(e);
}
}
}
}
411410:2006/03/03(金) 23:47:18
「ここはこうした方が・・・」「これは違う」といった発見、
ご指摘があれば宜しくお願い申します。上のソースでは、うまく
改行されずに見にくくなってしまい、申し訳ありません。
412デフォルトの名無しさん:2006/03/03(金) 23:53:57
宿題スレに池
413デフォルトの名無しさん:2006/03/03(金) 23:58:13
> for (int i = 0; i < args.length; i++) {

この最初の for 文はなんだ? args.length 回のループ? args.length の意味分かってないのか?

> BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

これは問題ない。

> if (line = reader.readLine() equals('q')) {

これダメ。既に line に1行読み込んでいるんだからそれと比較すればいいだけ。
if (line.equals("q")) { だ。 q はシングルクォーテーションで括ってはいけない。
ダブルクォーテーションだ。

ちなみに Java はダブルクォーテーションで括った文字列の定数は String
クラスのインスタンスだ。なので "abc".charAt(1) のような書き方も可能。
(この場合 'b' が返される)

で、"q" の入力により終るんだろ? "q" が来るまでは同じことを繰り返すん
だろ? だったら外側のループは無限ループにしてしまえ。for (;;) {...} か
while (true) {...} の形だ。で、line.qeuals("q") が true の時に break で
終りにさせろ。

以上。

414デフォルトの名無しさん:2006/03/03(金) 23:58:29
>args.length 
引数を使用するのか?

>if (line = reader.readLine() equals('q'))
if((line = reader.readLine()).equals("q"))
415デフォルトの名無しさん:2006/03/04(土) 00:08:11
>>414
よく見ろ。そこで readLine() しなくてもいいんだって。
416デフォルトの名無しさん:2006/03/04(土) 00:16:18
どうでもええやん
417デフォルトの名無しさん:2006/03/04(土) 00:25:48
このプログラムだと動作はこうなるのかな?
・readLine()で入力読み込み
・読み込んだものを表示
・読み込んだものを"q"と比較
・"q"なら改行
また読み込みに戻り繰り返し。
System.out.println()ってIOExceptionを引数に
取れたっけ?
418デフォルトの名無しさん:2006/03/04(土) 00:30:00
> System.out.println()ってIOExceptionを引数に
取れる。

参照型は Object の奴があるし、プリミティブ型のも全部用意されてるから
println は全ての型に対応してるよ。
419デフォルトの名無しさん:2006/03/04(土) 00:33:28
・・・宿題スレの方で答えちゃったよ・・・
420デフォルトの名無しさん:2006/03/04(土) 00:37:52
参照厨死ねw
421410:2006/03/04(土) 01:08:26
>>412>>415 >>417>>419

皆さん、わざわざ、夜中に様々なご指摘ありがとうございます。
大変有難く存じます。
特にwhileや”については、最近オブジェクト指向の事について
よく分からずにしているうちに大事な点忘れてきている様です。

皆さんの色々なレス、いい意味で刺激になります。m(__)m
422デフォルトの名無しさん:2006/03/04(土) 01:10:43
子クラスから親クラスに記述してある
  this.getClass().getName();

を呼び出すと、子クラスの名前が返ります。
で、ふと思ったんですが

これって、子をnewした段階で、
ファイルは別でも子と親はもはや同じファイルに記述されてるのと
意味的には一緒、と捉えても良いって事なんでしょうか
423デフォルトの名無しさん:2006/03/04(土) 01:17:50
> ファイルは別でも子と親はもはや同じファイルに記述されてるのと
> 意味的には一緒
ってのが何を言ってるのか良くわからんが

多態の事を言ってるなら、「〜と捉えても良い」ような気もする。
424デフォルトの名無しさん:2006/03/04(土) 01:41:52
>>422
コレで理解できるかもしれない。

8.4.8.5 例: 隠ぺいされたクラスメソッドの呼出し
http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#229207

> ファイルは別でも子と親はもはや同じファイルに記述されてるのと
> 意味的には一緒、と捉えても良いって事なんでしょうか

他人と意思の疎通が出来なくなるような世界を構築することは、
今後、学習を進める上で大いなる障害になるだろう。
425デフォルトの名無しさん:2006/03/04(土) 02:31:05
まあ「同じファイル」=「事実上同じもの」といいたいんだろうけど....

同じファイルに書くことと、継承することは意味が違うだろ。
親クラスに書いてあるthis.getClass()が子クラス自体を返すのは、
thisはどんなときでも、メソッド検索の最初のオブジェクト(この場合
子クラス)を指すからだ。まあ、子クラスのインスタンスが生成された
とたんに「俺様(this)」が生成され、それ以降ずっと、俺様は俺様って
ことだ。
426デフォルトの名無しさん:2006/03/04(土) 03:43:55
配列変数宣言についてなんですが

配列を宣言する時に私はString lpStr[];と記述しています。
しかし幾多の参考書や入門サイトではString[] lpStr;とも宣言しています。
どちらも意味的には同じですよね
427デフォルトの名無しさん:2006/03/04(土) 03:46:48
>>426
過去ログに出てたなぁ、というか俺が質問した内容でもあるんだがw
String[] lpStr; の方が一般的らしいよ
変数の方に[]をつけるのはCの名残みたいなもんとか
428デフォルトの名無しさん:2006/03/04(土) 03:55:06
そうですか
デファクトスタンダードに則って配列はString[] 〜と宣言していく事にします。
ありがとうございました
429デフォルトの名無しさん:2006/03/04(土) 04:11:14
またもやすみませんorz
クラスAが定義されているとして
クラスAのメンバ変数は
int[] lpiFlags = {0,1,2,3,4};
String str = "ぬるぽ";
などと宣言されているとします。

そこで何が問題かというと次の様に宣言されている時に困ってしまいました
int []lpiFlags = {0,1,2,3,4};
String str = "lpiFlagsの要素の個数 "+lpiFlags.length;
クラスAのインスタンスが作成された時にこれら変数と初期化作業を行われる訳ですが、
Javaではこの変数の宣言と初期化作業の順番というのは厳密に定められているのですか?
もし定められてなければコンストラクタで初期化作業をしなくてはならないので・・
430デフォルトの名無しさん:2006/03/04(土) 04:28:52
>>429
そういう怪しいコードを書くと、3日後ぐらいには後悔するから。


さて、お決まりの言語規定からの引用

12.4.2 初期化手続きの詳細
http://www.y-adagio.com/public/standards/tr_javalang2/execution.doc.html#44630

8. 次に,クラス変数初期化子及びクラスの静的初期化子,又はインタフェースのフィールド初期化子の
いづれかを,記述してある順序に,それらが単一ブロックであるものとして実行する。ただし,例外として,
値がコンパイル時の定数であるfinalクラス変数及びインタフェースのフィールドは,最初に初期化するもの
とする(8.3.2.1, 9.3.1及び13.4.8)。
431デフォルトの名無しさん:2006/03/04(土) 04:52:27
>>430
日本語の言語規定もしっかりあるのですね
今一度しっかり読んできます
432デフォルトの名無しさん:2006/03/04(土) 08:11:00
>>429
ちょいとごめんなさいね。
   ( ・∀・)   | | ガッ
  と    )    | |
    Y /ノ    人
     / )    <  >__Λ∩
   _/し' //. V`Д´)/
  (_フ彡        /  
433デフォルトの名無しさん:2006/03/04(土) 08:49:01
EJB3.0の情報ってネットにめっちゃ少なくない?
いい本ある?
434デフォルトの名無しさん:2006/03/04(土) 08:51:46
JFileChooserの開くボタンや取消しボタンをカスタマイズするために、
それぞれのボタンのJButtonオブジェクトを取得したいのですが、
どう取得するのが普通でしょうか。

一応こんな↓ムリヤリな方法では取得できたのですが・・・
JButton openButton = (JButton)((JPanel)((JPanel)getComponents()[2]).getComponents()[3]).getComponents()[0];

よろしくお願いします。
435デフォルトの名無しさん:2006/03/04(土) 12:19:33
1. 起動中に、外部のJarファイルのクラスのインスタンスを作った(プラグインみたいな感じ)
2. そのインスタンスのクラスがSerializableを実装していた
3. そのインスタンスをObjectOutputStreamとかでファイルに書き出した

そのとき

4. ObjectInputStreamでそのファイルからインスタンスを取り出す

ってのは可能ですか?
外部のJarファイルはクラスパスの外です。
436435:2006/03/04(土) 13:29:15
実際にやってみたところ、
ClassNotFoundExceptionが出ますた
どうやって読み込んでやればよろしいでしょう
437デフォルトの名無しさん:2006/03/04(土) 13:29:50
>>435
1 でインスタンスを作ったクラスローダの支配下にあるなら普通にできる。

そうでないなら ObjectInputStream#resolveClass(ObjectStreamClass) を上書きして
外部jarを読み込んだクラスローダを使って自力でクラスを解決してやればできるはず。
438デフォルトの名無しさん:2006/03/04(土) 13:32:24
>>437
Thank you!
439デフォルトの名無しさん:2006/03/04(土) 13:32:59
>>436
クラスパスが通って無いのに、最初のインスタンスを
どうやって生成したのだろう…
440デフォルトの名無しさん:2006/03/04(土) 13:37:26
>>439
URLClassLoaderです。
441デフォルトの名無しさん:2006/03/04(土) 13:54:03
>>440
なるほど。それで >>437 なのね。
442デフォルトの名無しさん:2006/03/04(土) 18:04:03
8文字の乱数文字列を表示させたいのですが、どうすればよいのでしょうか?
443デフォルトの名無しさん:2006/03/04(土) 18:06:34
>>442
8文字のどんなランダム文字列なのかを説明しなさいってばよ。
半角英数字でやるのと2バイト文字の全てとでは手法も違うよ
444デフォルトの名無しさん:2006/03/04(土) 18:08:33
表示させたいものは大文字小文字を問わない半角英数字です。
445デフォルトの名無しさん:2006/03/04(土) 18:40:15
>>434
せめて getComponent(2) とかにすれば?
446デフォルトの名無しさん:2006/03/04(土) 18:41:57
そういやこういうのは宿題スレへ誘導せなあかんかったような・・・
まぁいっか。5分くらいで作ったので性能のほどはシラネ

private static char[] hankaku =
("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789").toCharArray();

private Random rand = new Random();

public String getRandomString(int length) {
char[] value = new char[length];
for (int i=0; i<length; i++) {
value[i] = hankaku[rand.nextInt(hankaku.length)];
}
return new String(value);
}
447デフォルトの名無しさん:2006/03/04(土) 18:59:03
変数名の一部に変数名を使いたいのですが、可能でしょうか?

for(int i=;i<10;i++){
String test_i
}

変数名の一部に変数名を使うというのは
例えばこれで、test_1、test_2・・・が10個宣言されるようなイメージです。
例えばの話です。
448デフォルトの名無しさん:2006/03/04(土) 19:08:45
>>447
そういう場合は配列がいいかと
String[] testArray = new String[10];
for(int i = 0; i < 10; ++i)
{
testArray[i] = "ぬるぽ";
}
449デフォルトの名無しさん:2006/03/04(土) 19:14:20
Mapじゃあかんのかね?
HashMap<String, String> map = new HashMap<String, String>();
for (int i=1; i<=10; i++) {
map.put("test_" + i, "String_" + i);
}
System.out.println(map.get("test_3"));
450デフォルトの名無しさん:2006/03/04(土) 19:35:18
>>445
getComponent()の引数なのですが、私の環境に
合わせて決め打ちとかしてしまってよいものなのでしょうか。
451デフォルトの名無しさん:2006/03/04(土) 19:39:18
べつにボタンのテキストを見て検索とかでも問題はないでしょ
コンストラクタのなかで特定しちゃいなよ
452デフォルトの名無しさん:2006/03/04(土) 20:32:49
>>451
その方法はちょっと考えたのですが、ボタンのテキストって
環境依存とかしないものなのでしょうか。
453デフォルトの名無しさん:2006/03/04(土) 21:34:21
>>451
setApproveButtonTextなんかでテキストを変えられるようだが。
454デフォルトの名無しさん:2006/03/04(土) 22:21:28
455デフォルトの名無しさん:2006/03/05(日) 00:03:19
>>442
0〜0x1f はコントロールなので抜きな。

for (int i = 0; i < 8; i++)
 System.out.print((char) (Math.random() * (0x10000 - 0x20) + 0x20));
System.out.println();

でも、本当はこれではダメ。というのはサロゲートな文字があって、
char 2 つないと1文字を表現できないから。
456デフォルトの名無しさん:2006/03/05(日) 00:04:55
>>444
半角文字? そりゃいかんな。Unicode 2.0 にはたしかに HALFWIDTH の
文字はある。あるのだがどちらにしろ環境依存だ。画面にどういった幅で
出るかは予想できない。
457デフォルトの名無しさん:2006/03/05(日) 00:08:14
>>455
お前それ自分で試した?
458デフォルトの名無しさん:2006/03/05(日) 00:09:35
半角英数字のどこが環境依存なんだろう・・・
459デフォルトの名無しさん:2006/03/05(日) 00:17:19
MS WORD で表示すると A も A も同じ幅。
460デフォルトの名無しさん:2006/03/05(日) 00:23:54
>>444,446,455
手を動かすくらいならこれでいいじゃん。
ttp://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/RandomStringUtils.html#random(int, java.lang.String)
461デフォルトの名無しさん:2006/03/05(日) 01:09:26
キーイベントが上手く取得できないんですけど、何がまずいのやら。
期待する動作はキー入力で文字が出る予定なんですけど。
コードは大体下のような感じです。長いんでかなり省略してます。
フレームにはボタンとリストが張り付いてます。

class MyFrame extends JFrame
{
 コンストラクタ{
 MyKeyAdapter ka = new MyKeyAdapter();
 this.addKeyListner(ka);
 }
}

private class MyKeyAdapter extends KeyAdapter
 public void KeyPressed(KeyEvent e){
 System.out.println("キーイベント");
 }
462デフォルトの名無しさん:2006/03/05(日) 01:17:39
質問です。
ボタンをクリックしたらラベルの色を変えて
2秒その色を維持してからまた色を変えたいのですが
以下のコードではうまくいきませんでした。
ボタンをクリックしてもラベルの色が赤にならず
ただ、2秒待ってから緑になるだけでした。
うまくいく方法を教えてください。お願いします。

class TestFram extends JFrame{
JLabel label1;
JButton button1;

public TestFram(){
//省略
button1.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
label1.setBackground( Color.RED);
try{
Thread.sleep( 2000 );
}catch (InterruptedException e) {
System.out.println(e);
}
label1.setBackground( Color.GREEN );
}
});
//省略
}
}
463デフォルトの名無しさん:2006/03/05(日) 01:22:09
>>462
正解は「Threadに投げる」です。
464デフォルトの名無しさん:2006/03/05(日) 01:26:41
>>463
ありがとうございます。できそうです。
465デフォルトの名無しさん:2006/03/05(日) 02:04:46
>>461
×KeyPressed
○keyPressed
466461:2006/03/05(日) 02:22:57
>>465
指摘どうもです。

自分のやり方だとキーイベントを取得できるのが、キーボードフォーカスを
持っているもののみだそうで。JFrameはキーボードフォーカスを持てない
のでイベントが送られてこない様です。
どうしたものか。
467デフォルトの名無しさん:2006/03/05(日) 02:42:39
キーボードフォーカスのメソッドをオーバーライドしてtrueを返せばおk
468デフォルトの名無しさん:2006/03/05(日) 03:25:23
>>467
ありがとうございます。
isFocusableをオーバーライドしてtrueを返すようにしたら
初回表示時はキーイベントを取得できました。
しかし、JFrameに貼り付けてるボタンや、リストを一度選択
するとJFrameにはフォーカスを戻すことができません。
後、特定のキーはフォーカスがボタン、パネル関係なしに
JFrameで処理させたいんですがどのような方法が考えられますか?
469デフォルトの名無しさん:2006/03/05(日) 04:20:43
内部のボタンやパネルを設定するときにaddNotifyを呼ぶと
上位のコンポーネントにキーイベントが伝わるはず。
470デフォルトの名無しさん:2006/03/05(日) 04:28:39
>>469
遅くにありがとうございます。近いうちに試したいと思います。
471デフォルトの名無しさん:2006/03/05(日) 09:34:17
>>468
特定のキーのキーボードストロークを取得して、
ActionMap と、InputMap をWHEN_IN_FOCUSED_WINDOW
で関連付ければいい。

472デフォルトの名無しさん:2006/03/05(日) 11:00:15
Javaで作られたイカしたテトリス知りませんか?
473デフォルトの名無しさん:2006/03/05(日) 11:03:56
イカれたテトリスなら知ってる。
474デフォルトの名無しさん:2006/03/05(日) 11:37:55
サーブレットの勉強してるんですが、トムキャット上では出来るようになったんで
実際のサーバー上で実行してみたいんですが、サーバーにはFTPでクラスファイルを
送ればいいんですか?
475デフォルトの名無しさん:2006/03/05(日) 11:42:20
>>474
おまいの使ってるサーバはサーブレット動くの?
サーブレットやJSPが動くところなぞ、そうないぞ。
476デフォルトの名無しさん:2006/03/05(日) 12:17:38
>>475
それ以前にJavaが実行できるサーバがないかと。
>>474
だから自前で用意してるサーバと仮定して、FTPでもなんでもいいです。
要はwebアプリケーションの階層構造とアクセス権がそのままならいいので。
.warファイルなら、Tomcatのwebappに放り込むだけ。
477デフォルトの名無しさん:2006/03/05(日) 12:34:20
そんな知識もない無能が実際のサーバーにうpしようとしてんのか?
サイバーテロでも起こす気か?
478デフォルトの名無しさん:2006/03/05(日) 12:47:07
>>452
idで識別しとけ。
479デフォルトの名無しさん:2006/03/05(日) 12:51:12
1:Nのクライアント−サーバをRMIで実現する際の構成としては以下のような
感じで良いのでしょうか?

クライアント(クラスA) →(RMI呼出) リモートクラス(クラスB) →(Socket通信) サーバ(クラスC)

クライアントからクラスBのメソッドを呼び出し、Socket作成してクラスCと通信。
サーバ(クラスC)内で要求待ち無限ループを行い、要求があれば処理して結果を返却する。
480デフォルトの名無しさん:2006/03/05(日) 14:20:18
Swingで、JPanelのpaint(Graphcis)をオーバーライドして

private Vector<Element> elements;

public void paint(Graphics g) {
 for(Element e : elements) {
  e.draw(g);
 }
}

こんなかんじで各要素を描画してるんだけど、
elementsの要素が増えてくると重くなるのはわかるんだが
さらに増えると急に動作が軽くなるのは何で?
Vectorクラスの特性?Graphicsの特性?
481デフォルトの名無しさん:2006/03/05(日) 14:22:55
妖精の属性
482デフォルトの名無しさん:2006/03/05(日) 14:24:00
>>480
Graphicsのせいだけど
そんなに描画するならBufferedImageのレイヤーにしたほうがいいよ
JLabelをクリックさせたりするなら別かもしれんけど

てかSwingでpaintをオーバーライドすんなや
483デフォルトの名無しさん:2006/03/05(日) 14:30:32
>>482
トンクス

>てかSwingでpaintをオーバーライドすんなや
なんてリスナー(?)使ったらいいのか教えてくださいませ
484デフォルトの名無しさん:2006/03/05(日) 14:31:16
paintComponent
485デフォルトの名無しさん:2006/03/05(日) 14:38:14
>>484
ありがと〜
486デフォルトの名無しさん:2006/03/05(日) 15:29:15
C/C++いっさいなし、Javaだけで開発されたOS - JNode
http://pcweb.mycom.co.jp/news/2006/03/03/341.html
487デフォルトの名無しさん:2006/03/05(日) 16:28:45
公式サイトからJDK落とせないんですけど、ただのサーバーダウンですか?
488デフォルトの名無しさん:2006/03/05(日) 16:39:57
>>487
確認してみたところ、

Notice: We're Offline for System Upgrades

だってさ。
489デフォルトの名無しさん:2006/03/05(日) 19:42:22
Javaのリフレクションにテンプレートが絡んでくると
ものすごくめんどくさいコードにならない?
490489:2006/03/05(日) 19:59:16
たとえば

new Vector<Rectangle>();

を、Vector.classとRectangle.classと
Class.newInstance()を使って書くとどうなりますか?
491デフォルトの名無しさん:2006/03/05(日) 20:45:34
BitSet a = 00101010(2)
BitSet b = 00111110(2)
であるときaが全てbに含まれていると証明できる高速な演算はありますでしょうか
実際にはもっと馬鹿でかいbit配列なのですが、下記のコードでは実用に耐えられませんでした
BitSet c = (BitSet) b.close();
c.and(a);
return b.equals(c);
492デフォルトの名無しさん:2006/03/05(日) 21:17:54
BitSet に intersects ってメソッドがあるみたいだが
493デフォルトの名無しさん:2006/03/05(日) 21:21:16
それは触れてればOKってだけのもの
1101000
0001000
でtrueになるはず
494デフォルトの名無しさん:2006/03/05(日) 22:32:07
>>491
その馬鹿でかいbit配列は何ビットくらいなの?
495デフォルトの名無しさん:2006/03/05(日) 22:38:32
255bit程です。
496デフォルトの名無しさん:2006/03/05(日) 22:41:41
255bitって、扱い方間違ってねーか?w
497デフォルトの名無しさん:2006/03/05(日) 22:41:59

Javaマルチスレッドのサンプルコード説明などを見ると、以下のようなカウンタクラス(Count)において、
カウンタの値(count)を スレッドセーフにするには、 countUp()をsyncronized宣言する。もしくは、
countUpメソッドの内部をsyncronizedブロックで囲むといった 説明がされているように思います。

public class Counter {
 public static int count;
 public static void countUp() {
 int n = count;
 何らかの処理;
 count = n + 1;
 }
}

たしかに、上記を1000スレッドから実行し、実行後のcountの値を参照すると、期待される結果(1000)
では無く、もっと少ない値が返されます。
同期処理の定跡に従って、countUpをsyncronized宣言すると、最終的なcountは1000になってくれるので、
それはそれで良いのですが、一方で、 加算処理をインクリメント演算子に書き換えると、syncronized
宣言するまでもなく、countは期待通りに1000になってくれます。

public class Counter {
 public static int count;
 public static void countUp() {
  ++count;
 }
}

インクリメント演算子の実態は、count = count + 1 といった処理なのだと思いますが、このような1行処理であれば、
syncronizedを宣言するまでも無く、スレッドセーフになってしまうものなのでしょうか?
498デフォルトの名無しさん:2006/03/05(日) 22:48:44
>>497
1.
>  int n = count;
>  何らかの処理;
>  count = n + 1;
2.
>   ++count;

2は count = count + 1 になる。
1は count = n + 1 と見えるのだが。
499デフォルトの名無しさん:2006/03/05(日) 22:50:22
>>496
全てフラグですので間違ってはいないかと。
new boolean[255]より高速に出来て欲しいのです。
500デフォルトの名無しさん:2006/03/05(日) 22:53:46
>>498
レスありがとうございます。

1の場合、変数nと変数countの実体は別。
2の場合、変数countの実体は同じもの。

同じ変数を操作しているので、2の場合は問題は生じない。
と考えればよいのでしょうか?それとも的外れですかね。。
501デフォルトの名無しさん:2006/03/05(日) 22:56:38
>>499
そりゃ、メモリを犠牲にすれば早くもなるだろう
502デフォルトの名無しさん:2006/03/05(日) 22:58:55
>>501
どっちも消費メモリは同じくらいでは?
boolean[255]とlong[4]の違いですよ
503デフォルトの名無しさん:2006/03/05(日) 23:05:23
255bitって言ったら、値にして2の255乗ですよ?
現在のIPアドレスといえば、8bitを4ブロックに分けた32bitってのがあるが
値にして約43億。その値だけでもかなりのものなのに
504デフォルトの名無しさん:2006/03/05(日) 23:08:11
long4つで何を騒いでるの?
505デフォルトの名無しさん:2006/03/05(日) 23:14:18 BE:208786469-
実行中のプログラムから自分自身を新しく作るにはどうすればいいのでしょうか?
例えばAを実行している時に違うウィンドウでAを実行するようなことなのですが。
506デフォルトの名無しさん:2006/03/05(日) 23:19:54
>>503
そもそも消費メモリの話しをしてるのになぜ値になるのかと。

別に491は255bitのフラグを扱うだけで255bitの整数を扱うと言ってる訳じゃないし
507デフォルトの名無しさん:2006/03/05(日) 23:59:16
>>499
BitSetのソースを見る限りでは、それほど遅い処理には思えませんでした。
BitSetを継承して、期待する処理を行うメソッドを追加するのはどうでしょうか?

>>500
実装依存だと思うので、明示的に同期処理をしたほうが無難だと思います。
# 2の演算がアトミックであれば、問題ない
508デフォルトの名無しさん:2006/03/06(月) 00:15:46
>>499
俺も一応試してみたけど別に遅いとは感じなかったけど…
499が言ってた実用に耐えられないというのはこれぐらいの処理時間で?

long start = System.currentTimeMillis();
while(count < 10000){
//ランダムに生成した500ビットのフラグa,bの比較
  BitSet c = (BitSet)a.clone();
  c.and(b);

  if(a.equals(c)) break;
  count++;
}
System.out.println(count + "回処理を実行しました \n1回の処理時間: " + ((double)( System.currentTimeMillis() - start ) / count) + "ms" );

出力(例)
10000回処理を実行しました
1回の処理時間: 0.0016ms
509デフォルトの名無しさん:2006/03/06(月) 00:22:47
>>507

疑問ついでに、同期処理関連でvolatile演算子について調べていたのですが、
参考になるサイトがありました。結局、volatile演算子もあてにはならない
ようなので、507さんのおっしゃるとおり、明示的に同期処理すべきとのこと
でした。

http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000466.html

510デフォルトの名無しさん:2006/03/06(月) 00:37:20
>>508
1000000ループで使っていました。
その後もいろいろ試してみたのですが
下記のコードの効率が良さそうでした。

a.xor(b);
boolean result = !a.intersects(b);
a.xor(b);
return result;

これ以上は本格的にビット演算学ばないと向上しなさそうですね
ともあれありがとうございました。
511デフォルトの名無しさん:2006/03/06(月) 00:45:50
>>505
  class A extends Thread {
または
  class A implements Runnable {
としておいて
  A a = new A();
  a.run();
じゃだめなの?
512デフォルトの名無しさん:2006/03/06(月) 00:49:09
>>491
return b.and(a).xor(a).isEmpty();
とどっちが速い?
513デフォルトの名無しさん:2006/03/06(月) 00:51:43
>>509
おせっかいな細かい訂正を。
volatileは、演算子ではなく、(フィールド)修飾子です。以上。
514デフォルトの名無しさん:2006/03/06(月) 01:02:25
>>512
xorを2度すると元に戻るという法則でcloneを避けたほうが効率的
ビット演算そのものより、newをさせない手法のが結果的に高速
515デフォルトの名無しさん:2006/03/06(月) 02:15:48
>>497
> カウンタの値(count)を スレッドセーフにするには、 countUp()をsyncronized宣言する。もしくは、
> countUpメソッドの内部をsyncronizedブロックで囲む

半分しかあってない。public なフィールドが不気味
同期には、排他制御の他に原子性や可視性に注意する。

>>507
> 結局、volatile演算子もあてにはならない

言語仕様 ver.3 (Java 5.0 以降)では、
volatile や finel 等のメモリモデルの改善がなされているので注意する。

http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000466.html
> volatileは実際には実装されていない場合があり、その場合は機能しない。
そんなの Java じゃないクマー
516デフォルトの名無しさん:2006/03/06(月) 02:43:34
>>515
publicのままだと、他のクラスからcountを書き換えることができるから、
まずいかもしれないということでしょうか。

private static int count;
public static getValue() {
  return count;
}
とすることで、原子性と
517デフォルトの名無しさん:2006/03/06(月) 02:44:49
すいません途中で書き込んでしまいました。

publicのままだと、他のクラスからcountを書き換えることができるから、
まずいかもしれないということでしょうか。

そうすると、、、

private static int count;
public static getValue() {
  return count;
}

とすることで、原子性と可視性に気をつけたことになるのかな?
518515:2006/03/06(月) 02:44:49
脳内フィルタリングしてたが

http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000466.html

volatile 修飾子つけると、++ や -- が排他的に演算できると書いてあるが、
そうだったっけ?
519デフォルトの名無しさん:2006/03/06(月) 02:59:43
>>516
簡単にフォーリングっぽく言うと、

原子性は、double と long はとにかく同期しないとだめということ。
2バイトで構成されるであろうこれらは、
1バイトだけ変化したとんでもないモノが読めてしまう可能性がある。

可視性は、読み取り側も同期しないといけないこと。
ここで、同じオブジェクトのロックを取得することが重要。
static メソッドの synchronized は
そのクラスオブジェクトのロックを取得するシンタックスシュガー
520デフォルトの名無しさん:2006/03/06(月) 03:00:55
>>519
>簡単にフォーリングっぽく言うと、
フィーリングだ フォーリングってなんだorz もう寝る
521デフォルトの名無しさん:2006/03/06(月) 03:10:01
>>519
そうすると、countがlongの場合、こうなのだろうか。。

private static long count;
public static syncronized long getValue() {
  return count;
}

マルチスレッドで動作する読み取り側は、
以下のようにカウンタ値を操作すればよい?

Counter.countUp();        // カウンタを上げる
long l = Counter.getValue();  // カウンタ値を取得する。
522デフォルトの名無しさん:2006/03/06(月) 03:48:40
>>521
long でなくとも、countUp および getValue は synchronized にし、
フィールドは直接触れないようにするべき。

ただし、例えば GUI 上に進捗状況を表示するために読み取るなど
遅延がそれほどクリティカルではない場合は、
(long や double でない限り)読み取り側の同期をせずスループットを優先する
という方法もあるかもしれないが、
まあ、そんな微妙な(危険な)方法はプロファイラを見てからの話だろう。

要は、

>>497
>たしかに、上記を1000スレッドから実行し、実行後のcountの値を参照すると

どうやって参照してるかいな と突っ込みを入れたかっただけ
523デフォルトの名無しさん:2006/03/06(月) 08:50:14
>>519
> 原子性は、double と long はとにかく同期しないとだめということ。
> 2バイトで構成されるであろうこれらは、
2バイトじゃないぞ。
524デフォルトの名無しさん:2006/03/06(月) 10:06:46
ほー、longの読み取りはアトミックじゃないんだ。
じゃあ、intの読み取りは必ずアトミック?16bitのVMでも?
525デフォルトの名無しさん:2006/03/06(月) 10:19:37
16bitのVMって言語規定とVM規定に違反しないか?
526デフォルトの名無しさん:2006/03/06(月) 10:27:03
>>525
16bitのVMがあってもいいけどintの読み書きがアトミックじゃないと違反する
527デフォルトの名無しさん:2006/03/06(月) 10:27:51
528デフォルトの名無しさん:2006/03/06(月) 14:39:41
うちの Athlon 64 は x86_64 版 Java VM で動いている時は
1回の処理で書けてるかな?

まあでもそのうち 128 bit CPU なんて出てきたら 64 ビットは
一回で書けてもあまり効率よくなくなっちゃうんだろうなあ。
529デフォルトの名無しさん:2006/03/06(月) 16:07:39
JNIのスレが無いのでここでJNIについて質問です。
CからJAVAをJAVAからCを呼ぶようなプログラムは可能ですか?
JAVAとCをクロスして呼ぶとJNIの関数で異常終了を起こしてしまうので
宜しくお願いします。
530529:2006/03/06(月) 16:14:50
わかりづらいので補足です。
JAVA側でnative宣言したC側の関数を実行し、C側ではCall***Method関数で
JAVA側を呼ぶという事をすると異常終了しまいます。
531デフォルトの名無しさん:2006/03/06(月) 16:18:08
昔 Java → C → Java で呼ぶプログラム作ったけど (JDK 1.2, 1.3, 1.4) なんとも無かったけどな。
C 側で UTF-8 ⇔ Shift_JIS 変換する必要があったって面倒なので Java のメソッド読んだ。
532デフォルトの名無しさん:2006/03/06(月) 16:18:34
>>530
普通に呼べる。

★お前らJavaはJNIで組もうぜ★
http://pc8.2ch.net/test/read.cgi/tech/1033795664/
533デフォルトの名無しさん:2006/03/06(月) 17:05:30
Jakarta Lucene+Senで日本語検索処理を試しているんだけれど、
同じ組み合わせでやってる人いますか?

インデックス作成対象のファイルがSJIS以外の場合の検索って、
どうすんだろ・・・?
534533:2006/03/06(月) 17:21:08
自己解決した。
535デフォルトの名無しさん:2006/03/06(月) 20:19:09
Java コンソールでvを押すと強制終了するのは仕様ですか?ブラウザはIE6.1
Java VM: Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode, sharing)
536デフォルトの名無しさん:2006/03/06(月) 20:34:07
そんな仕様だったかなあ?
とりあえず '?' を入力してみな。ヘルプ出ると思うから。
537535:2006/03/06(月) 20:45:01
?を入力しても何も起こりません。
vを押すとhs_err_pidXXX.txt(XXXは毎回異なる数字)というファイルがデスクトップに作成されます。
ブラウザ起動から1度もAppletを使用していないときにコンソールでvを押すと強制終了するみたいです。
538デフォルトの名無しさん:2006/03/06(月) 20:54:37
現在、Javaアプレットを使って、
xmlファイルを作るプログラムを作っています。

jre1.3だとちゃんと動作するのですが、
jre1.4で実行した時、下記のようなエラーが発生してしまいます。
java.lang.NoClassDefFoundError: org/apache/xerces/framework/XMLParser

xmlを作成・更新するクラスの中で、jre1.3とjre1.4で使えるクラスに差があるのでしょうか?
あと、両方で動作するようにするにはどうすればいいのでしょうか?
539デフォルトの名無しさん:2006/03/06(月) 21:13:32
>>538
>xmlを作成・更新するクラスの中で、jre1.3とjre1.4で使えるクラスに差があるのでしょうか?
大きな声で、Y e s !
1.3→1.4のとき、XMLパーサが組み込みになりました。ただしXMLライブラリは、crimsonというものです。
エラーメッセージではXerces-Jを要求しているみたいですね。
たぶんCLASSPATHに指定されているのでしょうが、残念ながら組み込みが優先されてしまいます。
そのようなときは、「-Djava.endorsed.dirs=Xercesを置いたディレクトリ」をjavaコマンドの引数に
つけてください。
540デフォルトの名無しさん:2006/03/06(月) 21:18:34
>>537
あれ? 違ったかな? 'h' かも知れない。
ていうか、ヘルプを出すには何かを押せっていうのが Java Console の上の方に出てない?
541デフォルトの名無しさん:2006/03/06(月) 21:29:16
配列作るとき、毎回ArrayListとか使ってるんだけど普通だよね?
[]←これ全然使わない。
後々何か追加したい時があるかもしれないってどうしても思うでしょ。
よっぽど変更は無いって自信がない限り []←これ使わないでしょみんな?
542デフォルトの名無しさん:2006/03/06(月) 21:32:04
>>541
ものによるな。
543デフォルトの名無しさん:2006/03/06(月) 21:33:35
俺は追加があると確定してるもの以外は配列派。
544デフォルトの名無しさん:2006/03/06(月) 21:35:56
たしかにものによるな
ゲームとかだとCollectionはHashMapくらいしか使わなくなる
逆にアプリとかだとプリミティブはintとbooleanくらいしか使わない
545デフォルトの名無しさん:2006/03/06(月) 21:40:57
>>543
おれも。
ArrayListも無理やり[]にして回す。
546デフォルトの名無しさん:2006/03/06(月) 21:43:55
>>545
何の必要があって?
547デフォルトの名無しさん:2006/03/06(月) 21:47:12
508やろうとしたけど動かない。。
Exception in thread "main" java.lang.NoClassDefFoundError: Loop
ってでる

import java.util.BitSet;

public class Loop {
public static void main (String args[]){
Loop l = new Loop();
l.Loop2();
}

public void Loop2(){
         〜508の処理〜
}
}
548デフォルトの名無しさん:2006/03/06(月) 21:55:14
>>547
これの意味を冷静に考えてみてくれたまえ。

> java.lang.NoClassDefFoundError: Loop
549デフォルトの名無しさん:2006/03/06(月) 22:26:07
postgreSQL7.3で、ユニークキーの削除と、追加をしたいんですが、できません。
データを消さずにやりたいのですが、どうすればいいでしょうか?
alter table でできないでしょうか?
550538:2006/03/06(月) 22:42:02
>>539
レスありがとうございます。

jre1.4で実行した場合、
読み込むXMLパーサーとしてcrimsonとxercesがあり、
必要とされるのがxercesであるにもかかわらず
crimsonが優先されて実行されてしまうのでエラーが起こったということですね?

そこで、「-Djava.endorsed.dirs=Xercesを置いたディレクトリ」とすることで、
明示的に読み込むXMLパーサーをxercesにすればいい、ということでしょうか?
551デフォルトの名無しさん:2006/03/06(月) 23:47:20
>>550
その理解でいいかも。詳しくお知りになりたければ、JDKのドキュメントにendorsedについて載ってます。
でもアプレットでどうやるかは、私は知りません(´・ω・`)
552デフォルトの名無しさん:2006/03/06(月) 23:58:10
・あるクラスらはある共通のインタフェースを実現している
・クラスらはあるビーンズクラスをそれぞれの形で生成できる
・ビーンズクラスはインタフェースの引数に使われる

こんな条件でコーディングをしたいのですが
interfaceはstaticを宣言できないそうなので共通化に苦慮しています
abstract classにimplementsしたものをクラスらが継承するのが望ましいのでしょうか?
553デフォルトの名無しさん:2006/03/07(火) 00:05:40
よく分らないんだけど
どうして共通化にstaticが必要なの?
554デフォルトの名無しさん:2006/03/07(火) 00:07:07
インタフェースが引数とするビーンズを生成するメソッドを定義するためです
555デフォルトの名無しさん:2006/03/07(火) 00:27:14
>>552
何がやりたいのか分からないが、言語規格にまで反するならば、
設計を見直すべき。
そもそも beans と static は相性悪いからなぁ

場合によっては、Javaという枠組みでやること自体、考え直したほうが良いのかも。
556デフォルトの名無しさん:2006/03/07(火) 00:29:53
public abstract class Hoge implements Foo {
    public static Bean createBean(int n) {
        throw new UnsupportedOperationException("タダでは使わせんぞ、小僧。");
    }
}
邪道?
557デフォルトの名無しさん:2006/03/07(火) 01:05:42
クラス変数をメソッドの引数として渡して
渡されたメソッドの戻り値を同じクラス変数名で受け取りたいのですが
なんか奇妙に感じるのですが、きれいな方法ってありますでしょうか?


クラス変数A = メソッドA(クラス変数A);

---------------------
メソッドA(クラス変数A);
return クラス変数A
---------------------
558デフォルトの名無しさん:2006/03/07(火) 01:08:08
>>556
>>424 のリンク先を見れば載ってるけれど、
staticは上書きできませんのでアシカラズ。
559デフォルトの名無しさん:2006/03/07(火) 01:14:16
>>557
クラス変数というのはstaticフィールドのことだろうか?

値を変更することを前提にメソッドを作っているならば、
メソッドの中で書き換えればよろしいかと。
560デフォルトの名無しさん:2006/03/07(火) 01:25:36
>>552
エスパーに挑戦してみる。

要するに abstract factory を作りたいに違いない
561デフォルトの名無しさん:2006/03/07(火) 03:05:42
>>557
そういうのは Java ではクラスを介してやるしかない。
たとえば文字列でいいなら StringBuffer のインスタンスの参照を
渡せば渡した側と渡された側は同じインスタンスを参照しているので
渡された側での書き変えがそのまま反映する。


呼出し側
StringBuffer buf = new StringBuffer();
methodA(buf);
System.out.print(buf); // ここで methodA() で書き変えた内容が出る。

呼び出される側
void methodA(StringBuffer buf) {
buf.append("Hello");
}

その他の場合も考え方は同じで、内容を書き変え可能になっているクラスの
インスタンスを渡して渡された側で内容を書き変えるという方法を使う。
望みの型がなければ自作する。(しかし int 型一つなどの場合は一々クラスを
new するコストの方が高く付くのでやらない方がいいと思う)。
562デフォルトの名無しさん:2006/03/07(火) 08:13:40
サーブレットのセッション管理に関する質問です。
あるサーブレットで次の方法でセッションの有無を
確かめてました。
if(request.getSession(false)==null)
これでnullの場合タイムアウトの画面に
遷移させるという風にしてたのですが…
何も無い状態からこのサーブレットを呼ぶと
タイムアウト画面に遷移してくれるのですが、
最初にJSPの別画面を表示させた後、POSTメソッド等で
このサーブレットを実行するとsessionオブジェクトが
帰ってきてしまいます。

JSPを起動すると自動的にセッションが開始されると
言うことなのでしょうか?


563デフォルトの名無しさん:2006/03/07(火) 08:17:17
<%@ page language="java" ... session="false" %>
564デフォルトの名無しさん:2006/03/07(火) 08:31:12
>>563 ありがとうございます、ぐぐって見たらそれらしい情報がみつかりました。
http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp06.html
565デフォルトの名無しさん:2006/03/07(火) 10:06:52
ものすっごい初心者な質問で申し訳ないですが
Eqlips3.0.2に対応したストラッツのバージョンが判らなくて困っています
どなたかご教授いただけないでしょうか?
566デフォルトの名無しさん:2006/03/07(火) 10:13:33
サーブレットでJSPファイルやHTMLファイルからエクセルファイルへの
リンクを張ったのですが、ブラウザ内にバイナリコードが表示されてしまいます。
ネットで調査してみたところMIMEタイプの設定をしなければならないとの事でしたので
web.xmlで下記の(*1)のコードを他のマイムタイプマッピングと同様に宣言してみました。
ところが、相変わらずエクセルファイルとして表示してくれません。
同じような症状を体験したかたいらっしゃらないでしょうか
TOMCATのバージョンは4.1.31です。

(*1)
<mime-mapping>
<extension>xls</extension>
<mime-type>application/x-excel</mime-type>
</mime-mapping>
567566:2006/03/07(火) 10:20:05
ググッたら自己解決しました。ブラウザのキャッシュが残っていたためにおきた現象でした。
568デフォルトの名無しさん:2006/03/07(火) 10:27:06
>>565
そういうのはStrutsプラグインによるので何ともかんとも。
これは1.2対応らしい。
ttp://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi?page=StrutsIDE

Strutsプラグイン使わないなら、1.2でも1.3でも使えるよ。
569デフォルトの名無しさん:2006/03/07(火) 10:29:08
>>568
ありがとうございます、やってみます。
570デフォルトの名無しさん:2006/03/07(火) 11:55:49
ServletのAPI(JAVADOC)の日本語版ってどこでダウンロードできますか?
とりあえず↓を読んでいるんですが…
http://www.ingrid.org/jajakarta/servletapi/servletapi-4.0/docs-ja/index.html
571デフォルトの名無しさん:2006/03/07(火) 12:15:28
J2EE の日本語版 API リファレンス落とせ
572デフォルトの名無しさん:2006/03/07(火) 15:21:14
配列って何のために必要なんでしょうか?まだJavaに少し触れただけですがただ見た目の問題だけのような…
進んでいくと分かるようになりますか?
573デフォルトの名無しさん:2006/03/07(火) 15:22:32
分らない人間には全く分らないし
分る人間には分る
574デフォルトの名無しさん:2006/03/07(火) 15:24:52
メソッド間のパラメータの受け渡し(つまり引数な)に配列は必須。
いちいちコレクションに詰めるわけにもいかんしな。
575デフォルトの名無しさん:2006/03/07(火) 15:36:33
>>572
同じ意味の値の集合を扱いたい場合に必要となる (順序に意味がある
場合にも使える)。もちろん配列クラスを使わないで ArrayList や Vector
クラスでやってもいいが、Java の場合は配列が言語レベルでサポート
されているため無駄が少ない。

で、具体的にどういう時に使うのかというと、たとえば何かの棒グラフや
折れ線グラフを作る時の元の値の並びを入れておくのに使える。テストの
点数を一つづつ並べて入れておいて後で表示したり平均点を計算するとかに
使える。表計算プログラムを作る時や、表計算プログラムで作られた表を
扱う時に、各セルの状態を入れておくのに使える。
576デフォルトの名無しさん:2006/03/07(火) 15:41:51
配列がなかったらバイナリ読み出しで 1 バイトずつ Byte インスタンスに
なった List を使うんだよなぁ…

ガクブル
577デフォルトの名無しさん:2006/03/07(火) 15:47:44
>>576
配列がなかったら… 配列クラスを自作して肝心な所は
native でやるしかないかな?
578デフォルトの名無しさん:2006/03/07(火) 15:48:46
リンクリストを配列とみなせば native なしでも行けるか…。
アクセスの仕方によっては無駄が多そうだが。
579デフォルトの名無しさん:2006/03/07(火) 15:52:23
ArrayListって配列で実装されてるからArrayなの?
580デフォルトの名無しさん:2006/03/07(火) 16:17:17
名前を付けた人に聞いてください。
581デフォルトの名無しさん:2006/03/07(火) 16:21:21
普通にArrayListのソース見ればええやん
582デフォルトの名無しさん:2006/03/07(火) 16:53:12
java.lang.ArrayIndexOutOfBoundsException

eclipseでやってたらこんなエラー出てきたんすけど
これって何?
583デフォルトの名無しさん:2006/03/07(火) 16:54:28
APIぐらい見ろ
584デフォルトの名無しさん:2006/03/07(火) 17:02:08
public class ArrayIndexOutOfBoundsException
extends IndexOutOfBoundsException

不正なインデックスを使って配列がアクセスされたことを示すためにスローされます。
つまり、インデックスが負または、配列のサイズ以上の場合です。
585デフォルトの名無しさん:2006/03/07(火) 17:10:20
>>582
java.lang.ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException

Array Index Out Of Bounds Exception

array 配列
index インデックス(添字)
out of bounds 範囲外
exception 例外
586デフォルトの名無しさん:2006/03/07(火) 17:41:46
/*
お時間ある方、下のコード実行してみてもらえないでしょうか?
*/
String[] array = new String[1000000];
ArrayList arrayList = new ArrayList();

for(int i = 0; i < array.length; i++){
array[i] = "a";
arrayList.add("a");
}
System.gc();
System.out.println("wait 5 seconds...");
try{
Thread.sleep(5000);
} catch(InterruptedException ie){}

/*
587586:2006/03/07(火) 17:42:17
つづき
*/
String tmp;

long time = System.currentTimeMillis();
for(int i = 0; i < array.length; i++){
tmp = array[i];
}
System.out.println("Array : " + (System.currentTimeMillis() - time) + " ms");

time = System.currentTimeMillis();
for(int i = 0; i < arrayList.size(); i++){
tmp = (String)arrayList.get(i);
}
System.out.println("ArrayList : " + (System.currentTimeMillis() - time) + " ms");

time = System.currentTimeMillis();
String[] tmpArray = new String[arrayList.size()];
arrayList.toArray(tmpArray);
for(int i = 0; i < tmpArray.length; i++){
tmp = tmpArray[i];
}
System.out.println("toArray : " + (System.currentTimeMillis() - time) + " ms");
588586:2006/03/07(火) 17:44:25
ArrayListと配列を比べた場合、
圧倒的に配列が速いのは知っていたのですが、
そのため、わざわざtoArrayして回していたのです。

ためしに上記コードを実行してみたら、
ArrayListとtoArrayがほとんど同じ速度です・・・・
皆さんのPCでも同じような結果でしょうか?
589535:2006/03/07(火) 17:59:40
>>586
PentiumM1.2GHz メモリ512MB Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
Array : 0 ms
ArrayList : 47 ms
toArray : 110 ms
590デフォルトの名無しさん:2006/03/07(火) 18:02:35
>>586さん
JDKのバージョンが抜けてますよ?
591589:2006/03/07(火) 18:03:36
自分の名前間違えた589≠535
592586:2006/03/07(火) 18:45:21
>>590
失礼しました。

C:\j2sdk1.4.2_11\bin\java -server Test
wait 5 seconds...
Array : 30 ms
ArrayList : 190 ms
toArray : 150 ms

C:\j2sdk1.4.2_11\bin\java -client Test
wait 5 seconds...
Array : 20 ms
ArrayList : 80 ms
toArray : 220 ms

C:\jrockit-j2sdk1.4.2_08\jre\bin\java -server Test
wait 5 seconds...
Array : 10 ms
ArrayList : 100 ms
toArray : 111 ms

C:\jrockit-j2sdk1.4.2_08\jre\bin\java -client Test
wait 5 seconds...
Array : 10 ms
ArrayList : 70 ms
toArray : 211 ms

この辺りでやってみました。
Pentium3 700MHz 512M です。
593デフォルトの名無しさん:2006/03/07(火) 20:59:49
要素数10倍でやってみた。
(home)>java -Xms192M -Xmx192M -showversion String9
java version "1.5.0_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_03-b07)
Java HotSpot(TM) Client VM (build 1.5.0_03-b07, mixed mode, sharing)

wait 5 seconds...
Array : 101 ms
ArrayList : 320 ms
toArray : 311 ms

>>588
>ArrayListと配列を比べた場合、
>圧倒的に配列が速いのは知っていたのですが、

単にArrayList#toArray()のオーバーヘッドで相殺されただけじゃね。

単純にArrayListと配列の速度比較したら配列が遅いかもしれんが、
だからって「ArrayListが遅い」わけじゃない。

99.9%の場面でArrayListのスピードで十分。
「配列と比べたArrayListの速度」が問題になるようなの極々わずか。
594デフォルトの名無しさん:2006/03/07(火) 21:59:34
ArrayList って名の通り、中身は配列だからな。
この場合もinitialSize設定しとけば、差はかなり縮まるはず。
595デフォルトの名無しさん:2006/03/07(火) 22:07:09
rockitってJBossのとこのJREだっけ?はえぇなおい。
インデクサや関数呼び出しのオーバーヘッドの差かな?
596デフォルトの名無しさん:2006/03/07(火) 22:21:48
>>595
jrockitはWebLogicのBEAのやつなん。
速度はすごく速い。
でも、地味にバグを見つけてしまった・・・・
597デフォルトの名無しさん:2006/03/07(火) 23:06:12
ArrayListが遅かったのはキャストのコストのせいじゃ?
最近のVMだとそのへんの最適化が進んでるって話だし。
598デフォルトの名無しさん:2006/03/07(火) 23:17:37
>>561
戻り値を明確にして、分かりやすいコードを書くために
以下のように、メソッドの引数と同じ変数名で戻り値を受け取るのは
よくないのでしょうか?

呼出し側
StringBuffer buf = new StringBuffer();
buf = methodA(buf);
System.out.print(buf); // ここで methodA() で書き変えた内容が出る。

呼び出される側
StringBuffer methodA(StringBuffer buf) {
buf.append("Hello");
retrun buf;
}
599デフォルトの名無しさん:2006/03/07(火) 23:24:21
よくなくはないとおもうが、無意味なコードじゃね?
↓これでも同じ動作だろ?

呼出し側
StringBuffer buf = new StringBuffer();
methodA(buf);
System.out.print(buf); // ここで methodA() で書き変えた内容が出る。
600デフォルトの名無しさん:2006/03/07(火) 23:27:48
>>598
呼び出し側からは、methodA の引数と戻り値が同じインスタンスなのか
判別できません。

# 個人的にはオカシイと思う点が少なくても二箇所あります。
# 自分向けの表現では気持ち悪い、気味が悪いかな
601デフォルトの名無しさん:2006/03/08(水) 00:28:32
>>598
>>StringBuffer buf = new StringBuffer();
>>buf = methodA(buf);
おい!!
602エスパー:2006/03/08(水) 01:17:54
インスタンス作ってからstaticよんでるんじゃない?
ちょっと変か
603デフォルトの名無しさん:2006/03/08(水) 01:54:22
>>598
メソッド引数と、その戻り値を受け取る変数が同じなんてことはざらに
あるぞ。別におかしくともなんともないだろ。

たとえば、ある文字列を渡すと、後ろに「hoge」とくっつけるメソッドが
あるとしたら

String testStr = "test";
testStr = appendHoge( testStr);
System.out.println( testStr);

って普通のコードだと思うけど?

ただな、StringBufferを引数で渡して、そのStringBufferを戻り値で返すって、
いったい何がしたいんだよ。俺も>>599と同じように思った。
604デフォルトの名無しさん:2006/03/08(水) 02:09:07
ArrayList の public <T> T[] toArray(T[] a) は同じインスタンスが
返されるかも知れないし、返されないかも知れない。
605デフォルトの名無しさん:2006/03/08(水) 03:02:20
>>603
StringBufffer sb = new StringBuffer().append( 1 ).append( -1.3 ).append( "hoge" );
例えばこういった append の連続使用は多いケースだろ。
606デフォルトの名無しさん:2006/03/08(水) 03:36:17
>>605
それ「StringBufferを引数で渡して」るわけじゃないし。
607デフォルトの名無しさん:2006/03/08(水) 06:11:02
>>604
toArray(Object[] nArray) の場合は、引数である配列の要素数が足りなかったとき、
メソッド内部で新しい配列を生成するので、違うインスタンスが返される。
足りてれば問題ない。
ただし、この場合にも、引数と戻り値は別物として扱ったほうが無難だと思う。
# 変数名の再利用はバグの温床になるからである。

>>605
appendの場合は、目的がハッキリしている。

返って>>598の場合は、「戻り値を明確に」するという目的はあるものの、
その目的とソースが一致していない。
目的を達成するためにそのように記述する必然性が全く無い。
608デフォルトの名無しさん:2006/03/08(水) 12:44:48
JTAを使ってトランザクション管理を行いたいのですが、
ドライバーマネージャーを使った接続でもJTAを適応できるでしょうか?
JTAに関する説明のサイトを見るとほとんどがデータソースを使っているので…
609デフォルトの名無しさん:2006/03/08(水) 13:29:02
>>586
バージョンや環境でえらく差が出るような。
こっちで実行した結果を挙げとく。
(ハードは PowerPC G4 800MHz, 640MBの iBook G4)
$ uname -a
Darwin xxxxx.local 8.5.0 Darwin Kernel Version 8.5.0: Sun Jan 22 10:38:46 PST 2006; root:xnu-792.6.61.obj~1/RELEASE_PPC Power Macintosh powerpc


$ java -Xms192M -Xmx192M -showversion ss
java version "1.4.2_09"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-232)
Java HotSpot(TM) Client VM (build 1.4.2-54, mixed mode)

wait 5 seconds...
Array : 47 ms
ArrayList : 174 ms
toArray : 99 ms
610デフォルトの名無しさん:2006/03/08(水) 15:29:09
最近、ロギング用のフレームワークのSimpleLogってのを
いじってるんだけど、なかなか良い感じ。
ttps://simple-log.dev.java.net/

ライセンスは、Apache License 2.0。
Log4jとの比較情報とかもある。
ttps://simple-log.dev.java.net/log4jComparison.html

簡単なオブジェクトダンプとかもやってくれるんで便利。
試しにネストさせたArrayListとかを放り込んでみたら、
ちゃんとネストしてログ出力されたス。
名前通り、設定もシンプル。
611デフォルトの名無しさん:2006/03/08(水) 16:07:03
なんかJavaの解説書とか解説サイトって
専門用語ばかり使ってて、お前ら初心者がプログラミングなんかやるのは100年早ぇんだよ
ってな空気プンプン漂ってない?
分かりやすく理解できるような参考書って無いよね
612デフォルトの名無しさん:2006/03/08(水) 16:09:22
2chと同じ
バカが近寄らないようにしてるだけ

2chはバカばっかりじゃねーかってツッコミは無しな
613デフォルトの名無しさん:2006/03/08(水) 16:13:57
真面目にやる気ある奴さえふるい落とすのはどうかと思うがな
614デフォルトの名無しさん:2006/03/08(水) 16:22:13
Cの基本文法くらいは覚えてこいってこった
615デフォルトの名無しさん:2006/03/08(水) 16:29:40
入学早々Javaから始めたうちの大学はかなりのバカってことか
616デフォルトの名無しさん:2006/03/08(水) 16:38:57
いや、ちゃんと説明してくれるならむしろそのほうがいい。

始めからオブジェクト指向に慣れたほうが。
617デフォルトの名無しさん:2006/03/08(水) 17:35:18
印刷について教えてください。
プリンターの用紙・トレイ一覧を取得する際、以下のような処理でMediaアトリビュートを
取得できるのですが、これの名称の取得をするにはどのようにすればよいのでしょうか?
(特に、MediaTrayの定数に無いものの名称が知りたいです)

Media[] media= (Media[])PrinterJob.getPrinterJob().getPrintService().getSupportedAttributeValues(Media.class,null,null);

javaのダイアログでは「トレイ1」といった名称が出ているので、取得できそうなのですが
方法がわかりません・・・・

よろしくお願いいたします。
618デフォルトの名無しさん:2006/03/08(水) 17:44:52
double d1 = Double.valueOf(args[0]).doubleValue();

double a = Double.parseDouble(args[0]);
の違いってなんですか?
619デフォルトの名無しさん:2006/03/08(水) 18:06:05
>>618
なんでそんなことが気になるのかわからんが…
前者はDoubleのインスタンスが生成されてて、後者は生成されない。
620デフォルトの名無しさん:2006/03/08(水) 18:11:09
>>619
チョイ待て。後者だってDoubleのインスタンスは作られないだろ。
621デフォルトの名無しさん:2006/03/08(水) 18:11:40
すまん。見間違えだった・・・
622デフォルトの名無しさん:2006/03/08(水) 18:15:32
>>618
好き嫌い
623デフォルトの名無しさん:2006/03/08(水) 18:25:09
好き嫌いもなにも前者はあきらかなオーバーヘッドだろ。
後者を使うべし
624デフォルトの名無しさん:2006/03/08(水) 19:08:32
>>620>>621
プギャー
625デフォルトの名無しさん:2006/03/08(水) 19:20:32
>>623
ところで↓こういうコード知ってる?
public static double parseDouble(String s) throws NumberFormatException {
  return FloatingDecimal.readJavaFormatString(s).doubleValue();
}
626デフォルトの名無しさん:2006/03/08(水) 19:37:38
オーバヘッドというか、オブジェクトが生成されているという
実装上の都合が、漏洩しているのが良くないのだろう。
627デフォルトの名無しさん:2006/03/08(水) 19:41:19
実装上の都合が漏洩って、こりゃまた難しい日本語を使う方が来ましたな。
628デフォルトの名無しさん:2006/03/08(水) 21:05:43
>>626
日本語でおk
629デフォルトの名無しさん:2006/03/08(水) 22:28:16
>>611
Eclipseスレにまで同じ質問しただろ。
コピペすんな馬鹿
630デフォルトの名無しさん:2006/03/08(水) 22:29:18
>>615
え、1年のときからJavaを教わることができる東大は馬鹿なのか?

うちは三流大で未だにCでやってる
631デフォルトの名無しさん:2006/03/08(水) 22:31:27
システム会社で硬い事務系のシステムをやってますが、
Javaをはじめようと思ってます。
Cはある程度できるけど、Web系のシステムは全然やったことありません。

どの本からはじめたらいいでしょうか。あるいは勉強法など。

※Sunのオンラインチュートリアルを途中まで進めましたが、
英語なのでやはり時間がかかってしまい。
632デフォルトの名無しさん:2006/03/08(水) 22:38:15
>>630
いいじゃないか、C。
Cでスタックとヒープのメモリ管理の仕方を覚えておくと、
JavaやC#に移行したときに原理が解っていいぞ。
633デフォルトの名無しさん:2006/03/09(木) 01:59:40
>>609
クラス名の先頭は大文字にしろや!!!
634デフォルトの名無しさん:2006/03/09(木) 02:14:18
>>632
Cをやることは大いに構わないと言うか
お勧めするが、それしかやらないのは非常にいたい。
オブジェクト指向一つ理解できないのが情報工学科を
卒業するなんて恥ずかしい。
635デフォルトの名無しさん:2006/03/09(木) 02:17:02
言語やんのは情報工学科だけじゃねぇだろ。
636デフォルトの名無しさん:2006/03/09(木) 10:06:51
データベースのコネクションを取得してオートコミットをOFFにして
SQLを発行して、コネクションをクローズした場合、発行したSQLはコミットされますか?

--
Connection con = コネクション取得処理
con.setAutoCommit(false);
//con に対してINSERTなどのSQL発行
con.close();
637デフォルトの名無しさん:2006/03/09(木) 10:28:09
No
638636:2006/03/09(木) 11:08:16
>>637
質問しといてアレなんですが、実際に確かめてみたらコミットされるようでした。
(Oracle10g)


下記によると、DBによって異なるが必ずコミットかロールバックされる様ですね。
http://akimoto-jp.com/java/Database/Jdbc-api/Connection.html
639デフォルトの名無しさん:2006/03/09(木) 11:18:10
>>638
俺もされないと思ってた。
参考になった。サンクス。
640デフォルトの名無しさん:2006/03/09(木) 11:20:15
それにしても閉じたらcommitしちゃうのは危ない仕様だな・・・・
641デフォルトの名無しさん:2006/03/09(木) 11:21:24
DBは何使ってるのよ?
642636:2006/03/09(木) 11:37:54
>>641 Oracle10gです。
ところで、データベースアクセスエラー時の動作検証などみなさんどうやって行ってますか?

僕の場合、SQL発行してるところでLANケーブル抜いてみる
->ただし、この場合コネクションオブジェクトごと壊れるみたいで、クローズもロールバックもきかない
ソースコード中にエラーが起こるようなコードを書く
->書き換えたコードを元に戻さないと大変なことになる

やってて、どうもスマートじゃないなぁと思う今日この頃です。
643デフォルトの名無しさん:2006/03/09(木) 11:48:54
>僕の場合、SQL発行してるところでLANケーブル抜いてみる

スゴスwwwwwwww
644デフォルトの名無しさん:2006/03/09(木) 12:14:15
>>642
うちのテストも似たようなものです。スマートじゃなくてもいいんじゃない?
直接関連する部分は広くない(例外あげりゃいい)し、そういうところは使いまわしてるし。
645デフォルトの名無しさん:2006/03/09(木) 12:39:02
任意の位置で SQLException 投げられる JDBC ドライバ作る。回帰テスト自動で
出来なきゃちょっと辛いでしょ。大体いつも設定ファイルの記述でデータソースと
JDBC ドライバ直呼びと選択できるよう設計するし。
646637:2006/03/09(木) 13:04:56
おれはPostgreSQLでしたorz
647デフォルトの名無しさん:2006/03/09(木) 15:33:35
例外に関する質問です。あるthrows句もつメソッドを呼び出したときに呼び出し元で
例外処理を書かなければコンパイルを通らない場合と、例額処理を書かなくても
コンパイルを通る場合があるようですが、これは何がちがうんでしょうか?


public class TryTest
{
public static void main(String[] args)
{
ExThrowSQL();//これは例外を書かないといけないが
ExThrowOutBounds();//こっちは例外を書かなくてもコンパイルできる
}
public static void ExThrowSQL() throws SQLException
{
;
}
public static void ExThrowOutBounds() throws ArrayIndexOutOfBoundsException
{
;
}
}

648647:2006/03/09(木) 15:34:38
激しく誤字してすいません。

あるthrows句もつメソッド⇒あるthriows句をもつメソッド

例額処理⇒例外処理

です
649デフォルトの名無しさん:2006/03/09(木) 15:40:02
>あるthrows句もつメソッド⇒あるthriows句をもつメソッド

( ´・ω・`)?
650デフォルトの名無しさん:2006/03/09(木) 15:43:57
651デフォルトの名無しさん:2006/03/09(木) 15:48:10
もうお前は一生誤字してろw
652デフォルトの名無しさん:2006/03/09(木) 15:50:51
>>650 RuntimeExceptionクラスの派生クラスの場合キャッチしなくてもコンパイル通っちゃうってことですね
ありがとうございました。
653デフォルトの名無しさん:2006/03/09(木) 15:53:51
質問です。

JAVAの特徴の一つとして、よくマルチプラットフォームがあげられますが
それだった,NetmowrsoujaNpaidesukak fwfwqうえwwwwwwwwwd
654デフォルトの名無しさん:2006/03/09(木) 15:55:58
(#・∀・)カエレ!
655デフォルトの名無しさん:2006/03/09(木) 15:58:30
なんでそういうことを言うんですか?
ここは質問Wofesuresfzyanaidenasdうえeeawwwwwwwww
656名無し募集中。。。:2006/03/09(木) 16:02:32
VIPPERはあふぉばっかりで困る
657653,655:2006/03/09(木) 16:08:25
すまん。仕事があまりにも暇で遊んでしまいました。
正直すまんかった。
今では反seiSiterwurwreうえwaawwweefr
658デフォルトの名無しさん:2006/03/09(木) 16:11:39
キーボード 壊れてますよ
659デフォルトの名無しさん:2006/03/09(木) 16:50:07
GyRCJEokcyRAJDMkTiU5JWwkTxsoQj8K
660デフォルトの名無しさん:2006/03/09(木) 22:07:20
int count = 0;
int number = 2;
do{
boolean prime = true;
for(int i = 2; i < number / 2 + 1; i++){
if((number % i) == 0) prime = false;
}
if(prime == true){
System.out.print(number + " ");
++count;
}
++number;
}while (count < 10);
System.out.println("");

素数を書き出すプログラムなんですが、これの
for(int i = 2; i < number / 2 + 1; i++)
この部分で何をやってるのかよく分からないのですが…
661デフォルトの名無しさん:2006/03/09(木) 22:16:30
Javaとは全く関係ない。数学的な話。
662デフォルトの名無しさん:2006/03/09(木) 23:16:09
本当はnumber/2 ではなくて √number で良いんだけどな
663デフォルトの名無しさん:2006/03/09(木) 23:18:43
numberそのままでもいいぞ
664デフォルトの名無しさん:2006/03/10(金) 00:25:17
動的にテキストファイルを作って、クライアントにダウンロードさせる
サンプルってどこかにないでしょうか?
665デフォルトの名無しさん:2006/03/10(金) 00:48:07
テキストファイルを何が作るのか
何からクライアントにダウンロードするのか

話はそれからだ
666デフォルトの名無しさん:2006/03/10(金) 00:56:52
んーなの、入口出口がファイルかネットワークかの違いだけだから、いくらでもサンプルあるでしょ。
サーバ側でファイル作ったらFileOutputStreamで保存しておいて、クライアントの要求によって
それをstreamに書き出せばいい。
クライアントってぐらいだから、多分ネットワーク経由でデータを流したいんだろうけど
それはsocketからoutputStreamを読めばいいだけの事。 別に特別な事はない。
I/O関係とネットワーク関係のサンプル見れば解る。
667デフォルトの名無しさん:2006/03/10(金) 03:29:49
VC++で出力されたバイナリファイルをJavaで読み込みたいのですが、
float型の扱いに困っています。VC++で出力されたfloatの値は
4バイトで出力されますが、Javaでは8バイトで読み込まないと
いけないのですが、どう対処すればよいでしょうか?
668デフォルトの名無しさん:2006/03/10(金) 03:45:53
Javaでもfloatは4byteのはずだが。
どうやって読み込んでるの?
669デフォルトの名無しさん:2006/03/10(金) 03:54:15
public static float Float#intBitsToFloat(int)
670デフォルトの名無しさん:2006/03/10(金) 04:00:07
まずは、OSネイティブでは浮動小数点をどうやって実現しているかをチェックし、
次にJava に対しても同じようにチェックし、
両者の違いがないこと、または、違いを吸収できるような仕掛けを考える。

大抵は、IEEEのなんたらに「準拠」しているっぽい?が、
あまり、「だいたい上手く動く」というアプリケーションは使いたくない。
671デフォルトの名無しさん:2006/03/10(金) 04:20:05
http://www.microsoft.com/JAPAN/developer/library/vccore/_core_ieee_floating.2d.point_representation_and_microsoft_languages.htm
VC++限定でいいならfloatはJavaと同じIEEE 数値規格っぽいな。

>public static float Float#intBitsToFloat(int)
これってint読んでるんだから4byteじゃね?
672デフォルトの名無しさん:2006/03/10(金) 10:29:44
継承と委譲について下記のサイトで勉強しているのですが
http://www.nurs.or.jp/~sug/soft/java/java32.htm

文中の…

アクセスを禁止したい基底クラスのメソッドは、「委譲」されたクラスで定義しなければ、呼び出されようがないのである。

という意味がさっぱりわからないのですが、教えていただけないでしょうか。
673デフォルトの名無しさん:2006/03/10(金) 10:40:24
親子関係と使用人関係のちがいみたいな。
674デフォルトの名無しさん:2006/03/10(金) 10:41:36
起動する全てのJVMに特定のプロパティをつける方法ってないでしょうか。
具体的に付けたいプロパティは、swing.defaultlaf。
欲を言えば、JNI_CreateJavaVMで起動されるJVM全て、
無理なら、java.exe、javaw.exeのような、プラットフォーム毎のjvm起動コマンドで
作られるJVM。
環境変数とかで、なんとかなりそうなんですが。
675672 :2006/03/10(金) 10:59:18
ナニがわからないのか、自分の中で整理してみました。

委譲における
「基底クラス」って何なのかがわからないんです。

↓の場合Aが基底クラス?それともB?

class A{
 B b = new B();
 A.meth1()
 {
  b.meth1()
 }
}

Class B{
 public int meth1(){
  ......
 }
}
676デフォルトの名無しさん:2006/03/10(金) 11:13:10
>>675
基底クラスの意味を間違えてる。

クラス:Tabemono

Tabemonoを継承して クラス:Kudamonoを作ったとする

Kudamonoを継承して クラス:Apple とクラス:Orangeを作ったとする

この場合、Tabemonoが基底クラスとなるわけだ。
677デフォルトの名無しさん:2006/03/10(金) 13:40:48
Javaでは、switchで、あるcaseから他のcaseに
フォールスルーを使わずに移ることはできないのでしょうか?
678デフォルトの名無しさん:2006/03/10(金) 14:26:45
>>677
無理。 C# だと goto できるけど。
679デフォルトの名無しさん:2006/03/10(金) 15:48:23
メソッドって全部覚えなきゃならないんですか?
680デフォルトの名無しさん:2006/03/10(金) 15:54:57
うん。プロのPGなら全部覚えてて当たり前
681デフォルトの名無しさん:2006/03/10(金) 16:01:22
世界中に何億メソッドあると思ってるんだ
682デフォルトの名無しさん:2006/03/10(金) 16:11:06
え?おまえ覚えてないの?まじで?
683デフォルトの名無しさん:2006/03/10(金) 17:58:42
APIを見て理解出来れば十分でないの?
って釣られた?
684デフォルトの名無しさん:2006/03/10(金) 18:12:39
1.2 とか 1.4 で追加されたパッケージで未だに無縁の機能がたくさんあるなぁ。
律儀に java.beans.context 使ってるフレームワークとか見たことないんだが。
685デフォルトの名無しさん:2006/03/10(金) 18:14:48
ImageIO で遅い回線からロード中のイメージを
ブラウザみたいに非同期に表示するのは
どうすればいいっすか?

下記みたいな昔ながらの方法だとHTTPのURLしか使えないし。
好きな入力ストリームを使いたいっす。(ZipStreamで展開しながらとかいろいろ)

//これだとHTTPしかできないから駄目
public class JImgPanel extends JPanel {
  private Image image;
  public void setImageURL(String url) {
    try {
      image = getToolkit().getImage(new URL(url));
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
    repaint();
  }
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (image != null) {
      g.drawImage(image, 0, 0, this);
    }
  }
}
686685 :2006/03/10(金) 18:16:11
上のクラスのsetImageURLの中身を
ためしにこんなふうにしてみたけど
やっぱり非同期にはなってないっぽいです。

InputStream is = ほげほげ;

Iterator readers = ImageIO.getImageReadersBySuffix("jpg");
if (readers.hasNext()) {
  ImageReader reader = (ImageReader)readers.next();
  
  ImageInputStream stream = ImageIO.createImageInputStream(is);
  reader.setInput(stream);

  image = reader.read(0);
  reader.dispose();
}else{
  image = null;
}
repaint();
687デフォルトの名無しさん:2006/03/10(金) 18:18:11
>>685
Toolkit.createImage() には色々な引数を取るやつが…
688デフォルトの名無しさん:2006/03/10(金) 18:19:57
非同期にしたけりゃスレッドが…
689デフォルトの名無しさん:2006/03/10(金) 18:20:25
>>685
独自プロトコルでやりたいなら非同期ロードを自作するより URLStreamHanderFactory を
自作するとかの方が良いかも。どっちにしても大変だけど。
690685:2006/03/10(金) 21:41:33
>>687
ストリームを引数にするやつはなかったです。
唯一使えそうなのが
public abstract Image createImage(ImageProducer producer)
だけど、イメージプロデューサーを1から自作するのはツライっす
ていうか俺はJPG展開処理なんか書けナイッス。

>>688
スレッドで解決するならいくらでもスレッドnew する用意はあるんですけど
問題は image = reader.read(0); が
画像読みきるまで処理が帰ってこないっぽいんですよ。

>>689
独自プロトコルっていうかj
本当はakartaのHttpClientを使ってみたいだけなんですけどね。
こっちのほうがkeepAliveとか、プロキシとかいろいろできるんで、、

独自プロトコルとなるとHttpClientを自分で
自作するのと変わらないわけで、、、

ImageIOってそもそも
従来のImageProducer ImageConsumer 的な
非同期はサポートしてないんでしょうか。
691デフォルトの名無しさん:2006/03/10(金) 21:44:13
>>672
>アクセスを禁止したい基底クラスのメソッドは、
>「委譲」されたクラスで定義しなければ、呼び出されようがないのである。

基底クラスのメソッドでアクセスを禁止したいものがあったとする。
その場合は、継承でなく委譲を使うと良い。
なぜなら、基底クラスのメソッドは、委譲されたクラスで定義されなければ、
委譲されたクラスを経由して基底クラスのメソッドを呼び出すことができようがない。

の超略とエスパーしてみる。
(そもそも委譲されるクラスを、基底クラスってよんだっけ?)

その後、この web ページに
>これは基底クラスのメソッドを整理し、アクセス制限をする有効な手段である。
>これは Facade として知られている。

とか書いてあるが、Facade は
高レベルのインタフェースを用意するのが目的のデザインパターンなので、
騙されないようにw
692691:2006/03/10(金) 21:51:02
ああ、よく読んでみると、「委譲する」と「委譲される」がごっちゃになってら。

クラス A がクラス B へ委譲するとき、

A が「委譲するクラス」
B が「委譲されるクラス」=継承における「基底クラス」

という日本語の使い方が正しいのかな。

>なぜなら、基底クラスのメソッドは、委譲されたクラスで定義されなければ、
>委譲されたクラスを経由して基底クラスのメソッドを呼び出すことができようがない。

(書き直し)
なぜなら、基底クラスのメソッドは、委譲するクラスで定義されなければ、
委譲するクラスを経由して基底クラスのメソッドを呼び出すことができようがない。
693デフォルトの名無しさん:2006/03/10(金) 21:56:48
質問させてください。

現在のクラスがどういうパッケージ階層に位置しているのかを、文字列として返してくれる
ような便利なメソッドってありますでしょうか?
694デフォルトの名無しさん:2006/03/10(金) 22:00:41
>>693
this.getClass().getName()

695デフォルトの名無しさん:2006/03/10(金) 22:01:34
>>693
this.getClass().getName()
696デフォルトの名無しさん:2006/03/10(金) 22:04:48
>>693
this.getClass().getName()
697デフォルトの名無しさん:2006/03/10(金) 22:14:23
>>694
ありがとうございます!
698デフォルトの名無しさん:2006/03/10(金) 22:53:39
double plus=0.1;
double plussed=0;
for(int i=0;i<=4;i++){
Systen.out.println(i+"回目"+plussed);
plussed+=plus;
}
結果
0回目0.0
1回目0.1
2回目0.2
3回目0.3000000000000004
4回目0.4

これは一体どういうことなんですか?
三百回目になると更に既に30.00(中略)023てな具合で
しかも再現性100%
この誤差はどうにかできますか?
まぁ実際使うときは100倍とかして小数点以下を切り捨てればいいのでしょうが。
699デフォルトの名無しさん:2006/03/10(金) 23:08:32
つ BigDecimal
700デフォルトの名無しさん:2006/03/10(金) 23:12:09
丸め誤差
701デフォルトの名無しさん:2006/03/10(金) 23:15:03
class Cliant{
〜〜〜
Socket socket;
PrintWriter out=new PrintWriter(socket.getOutputStream());
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
〜〜
}

でサーバー側にout.println();out.flush();で送ったバイト列をクライアント側のin.realLine()で読み込んでしまうんだけどなんで?
702デフォルトの名無しさん:2006/03/10(金) 23:16:36
Client
703デフォルトの名無しさん:2006/03/10(金) 23:26:13
送られた文字列をサーバがそのまま送り返してるからだろ。echo みたいに。
704デフォルトの名無しさん:2006/03/10(金) 23:28:05
705デフォルトの名無しさん:2006/03/10(金) 23:41:46
>>703
ありがとうございます
サーバー側のプログラムを見直してみます
706デフォルトの名無しさん:2006/03/11(土) 02:50:38
>>690
処理が帰って来ない部分をnewしたスレッドにやらせて、親スレッドはimageがnullのまま進めればいいじゃないか。
つかそれ以外どうやってスレッド使う気なんだ?
707685:2006/03/11(土) 03:51:22
>>706
いや、自分がやりたいのは
ブラウザみたいに
ファイルを一部読み込んだところから
ずりずりと先に画像を出したいんです。

706にすると
読み込み開始したあとタイムラグがあって
突然全体が表示されるように見えると思います。
708デフォルトの名無しさん:2006/03/11(土) 04:05:55
デフォルトパッケージにあるクラスから下位のパッケージのファイルを
インポートする場合

import パッケージ名.ファイル名

でインポートできるのですが、
デフォルトパッケージにあるクラスを、
そのパッケージ(ディレクトリ)の下にあるパッケージで使うには
どうやってimportしたらいいんですか?
import クラス名;
だと"."がありませんというエラーが出てしまうのですが。
709デフォルトの名無しさん:2006/03/11(土) 04:13:26
1.4あたりからデフォルトパッケージはimportできなくなりました。
710デフォルトの名無しさん:2006/03/11(土) 04:17:38
>709
回答ありがとうございます。
ということは、プログラムを動かすためにはデフォルトパッケージのファイルを、
下位のパッケージに移さなければならないということでしょうか?
711デフォルトの名無しさん:2006/03/11(土) 04:55:15
>>710
全てのクラスにパッケージ名をつけるべきだ、とは言わないが、
複数のクラスを作成し、関連させてプログラムを作るならば、
なんらかのパッケージ名をつけるべきだと思う。
# 結果的に、一つのパッケージで足りるとしても。
712デフォルトの名無しさん:2006/03/11(土) 05:15:00
>>707
・自力で ImageProducer または URLStreamHandler を実装する
・普通に URL から Image を構築する
・見栄えの問題なので諦める

空きなの選べ
713デフォルトの名無しさん:2006/03/11(土) 12:50:17
すみません、ちょっとお願いします。
ttp://www.java.com/ja/download/manual.jsp
の上から二つ目(Windows (オフラインインストール)
(ファイルサイズ: 16.00 MB)
途中でタイムアウト、とういか全く展開しないのですが、みなさん開けます?
私のパソコンの設定が悪いのかしら?
714デフォルトの名無しさん:2006/03/11(土) 13:49:20
>>713
今ダウソしてみた。正常にダウソできた。

よっておまいの環境がおかしい
715デフォルトの名無しさん:2006/03/11(土) 15:17:18
変数の宣言について質問です。
とりあえず、説明しやすくする為に適当な以下のようなクラスを作りました。

public class Hensu {
Hensu(String title) {
System.out.println(title);
}
}

以上が説明の為のクラスです。
で、メインメソッドで以上のクラスを使うとします。
下のように使うと

Hensu h = new Hensu("変数の" + 0);
Hensu h = new Hensu("変数の" + 1);
Hensu h = new Hensu("変数の" + 2);

ローカル変数の重複でエラーが出ます。
Hensu h を1回だけにすればエラーが出なくなるのはわかりますが、

次に

for(int i = 0; i < 3; i++) {
Hensu h = new Hensu("変数の" + i);
}
このようにfor文でインスタンス3つ作って実行させても問題ありませんでした。
Hensu h を同じように3回宣言しているのにfor文を使った場合は
問題なく実行できるのが良く分かりません。なんか理由がありますか?
716デフォルトの名無しさん:2006/03/11(土) 15:39:19
forのは↓みたいなもんと思えばいい。
要するに「スコープ内」で変数が重複するかどうか。

{
Hensu h = new Hensu("変数の" + i);
}
{
Hensu h = new Hensu("変数の" + i);
}
{
Hensu h = new Hensu("変数の" + i);
}
717デフォルトの名無しさん:2006/03/11(土) 15:39:23
>>715
変数を考える時にはブロックの概念レベルで考えると良い。
ブロックとは波カッコ { } で囲まれた部分、一つひとつのことである。

開き波カッコごとに変数を格納するスタックが用意されて、
閉じ波カッコを通るとそのスタックが破棄される、と考えると良い。

一つのスタックでは同じ変数は二つ以上存在できないし、
違うスタックなら同じ名前の変数でも問題ない。
ただし、ブロックの影響範囲は入れ子の中にも及ぶので、
外のブロックで宣言した変数名は、中のブロックで宣言出来ない。
718デフォルトの名無しさん:2006/03/11(土) 15:45:40
>>716-717

ご教授ありがとうございます。よくわかりました。
719デフォルトの名無しさん:2006/03/11(土) 19:47:05
wiki繋がらないんだが俺だけ?
720デフォルトの名無しさん:2006/03/11(土) 20:31:14
繋がるの時間がかかるねえ。
pingは通るんだが。
まだFirefoxのステータスバーに wikiroom.comを待っていますと表示される。
まだ繋がらない
721デフォルトの名無しさん:2006/03/11(土) 21:09:28
よくあること
722デフォルトの名無しさん:2006/03/11(土) 22:39:40
JVMのアーキテクチャの資料ってどっかに落ちてない?
723デフォルトの名無しさん:2006/03/12(日) 00:31:26
SUNにあるだろ
724デフォルトの名無しさん:2006/03/12(日) 00:55:09
日本語でお願いします
725デフォルトの名無しさん:2006/03/12(日) 01:06:27
どの辺が日本語でないと思うのですか。
726デフォルトの名無しさん:2006/03/12(日) 01:19:56
コマンドラインにて命令を実行する際に
ワイルドカードを用いて全ファイルを指定する場合の記述
ってわかります?

727デフォルトの名無しさん:2006/03/12(日) 01:28:17
わかりますよ。
728デフォルトの名無しさん:2006/03/12(日) 01:39:03
あの〜すいません
教えてくれませんか?
729デフォルトの名無しさん:2006/03/12(日) 01:40:10
何を?
730デフォルトの名無しさん:2006/03/12(日) 01:41:14
copy *.java src
731デフォルトの名無しさん:2006/03/12(日) 01:48:21
ありがとうございます。
これって基礎ですか?
732デフォルトの名無しさん:2006/03/12(日) 01:49:06
大学院で初めて習うよ
733デフォルトの名無しさん:2006/03/12(日) 01:53:35
本当にありがとうございました。
734デフォルトの名無しさん:2006/03/12(日) 02:12:12
もう「本当にありがとうございました」って言われるとネタとしか思えん。
735デフォルトの名無しさん:2006/03/12(日) 02:18:53
一定時間に1回、所定のボタンを押すようにできませんか?
1Secで問題ないです。コマンド プロンプトでお願いします。
736デフォルトの名無しさん:2006/03/12(日) 02:26:33
F5攻撃でもするの?
737デフォルトの名無しさん:2006/03/12(日) 02:26:57
ボタンを押す必要なんてあるの?
そのComponentにアクセスできればいいのでは?
マクロの類ならRobotがあるけど
738デフォルトの名無しさん:2006/03/12(日) 02:30:17
Robot でええやん。
739デフォルトの名無しさん:2006/03/12(日) 05:43:05
>>711
このプログラム実行するためにはどうしたらいいのでしょうか。
どうやってもエラーが消えないのですが。
たぶんデフォルトのパッケージをインポートしてるとか、そういう
問題だと思うのですが。

ttp://www.cs.technion.ac.il/Labs/Lccn/projects/spring97/project9/
740デフォルトの名無しさん:2006/03/12(日) 10:56:10
自分で答えだしてるじゃん
それに JDK1.0とか 1.1の時代の遺物じゃないのか?
741デフォルトの名無しさん:2006/03/12(日) 14:41:50
JSPをやっています。
自分で作ったパッケージを利用する場合、
クラスパスはどこで設定すればよいのでしょうか?
742デフォルトの名無しさん:2006/03/12(日) 15:19:49
>>741
お前さんが作ったパッケージの設置場所は、お前さんにしか分からない。
743デフォルトの名無しさん:2006/03/12(日) 15:51:48
Javaプログラム+JNI+Nativelibの環境で、アプリケーションの自動更新
を行いたいと考えています。(上記の3種全てを更新対象とする。)
何か良い方法はないでしょうか?

自分で考えて(試して)断念した方法です。

(1)Setup.exeを作っておき、実行中のプログラムからネットワーク
経由でそれを取得し、Process#execでSetup.exeを実行して
プログラムを書き換える。
これは、アプリケーションを上書きするために、親プロセスを終了
させなくてはなりませんが、終了させるとSetupを実行している
子プロセスの処理が止まってしまいます。そのため、断念しました。

(2)Java Web Startを使用する。
以下の理由で無理があると判断しました。

・ディスクに保存してある設定ファイルを読み込んで処理されるアプリ
ケーションであること。
・配布する対象は基本的にjarファイルに収めておかなければならないが、
そうすると大幅なプログラム改造が必要となるから。

744デフォルトの名無しさん:2006/03/12(日) 15:54:00
>>743
細かくjar化してUpdateする分をだけ書き換えればいいじゃん
745デフォルトの名無しさん:2006/03/12(日) 16:03:43
やさしいJavaシリーズと、エクスメディアのビュジアルラーニングだったら、ビジュアルラーニングの方が分かりやすそうだったのですが、
やさしいJavaの方がいいですか?

やさしいJavaの本を持っているのですが、ビジュアルラーニングの方は、もっていません。
746デフォルトの名無しさん:2006/03/12(日) 16:35:43
public class class10 {
public static void main(String[] args) {
int i = 5;
int j[] = {1,2,3,4};
StringBuffer sb = new StringBuffer("abcde");
display(i,j,sb);

a(i,j,sb);

display(i,j,sb);
}

static void a(int i, int j[], StringBuffer sb){
i = 7;
j[0] = 11;
sb.append("fghij");
}

static void display(int i, int j[], StringBuffer sb){
System.out.println(i);
for(int index = 0; index < j.length; index++){
System.out.print(j[index] + " ");
}
System.out.println("");
System.out.println(sb);

}
}
747746:2006/03/12(日) 16:36:21
public class class102 {
public static void main(String[] args) {
int x[] = {1,2,3,4,5};

display(x);

change(x);

display(x);

}
public static void change(int x[]){
int y[] = {5,6,7,8,9};
x = y;
}

public static void display(int x[]){
for(int index = 0; index < x.length; index++){
System.out.print(x[index] + " ");
}
System.out.println("");
}
}
748746:2006/03/12(日) 16:37:13
この二つ、配列の表示が変わったり変わらなかったりするんだけど、
どこがどう違うんですか?
publicがついてるかついてないかしか分からないんですが…これによって変わるんですか?
749デフォルトの名無しさん:2006/03/12(日) 16:54:46
String型についての質問ですが、

String型で保持している文字列の内容をコピーするメソッドとかありますか?
CのStrcpy()関数のような。

String s1, s2;
s1 = s2;

はアドレス代入ですよね?
あと、どのようなメソッドがあるか載っているHPとかありますか?よろしくお願いします。
750デフォルトの名無しさん:2006/03/12(日) 17:19:08
>>749
s2 = new String(s1);で違うインスタンスとすることはできます。
が、Stringは不変インスタンスなので、コピーを作る必要性に乏しいかと思われます。
751デフォルトの名無しさん:2006/03/12(日) 17:23:05
>>746
2番目のプログラムについて
> public static void change(int x[]){
> int y[] = {5,6,7,8,9};
> x = y;
> }
これはyの内容をxにコピーしたいという意図があるのかと思われますが
コピーされません。ローカル変数xの参照がyと同じになった、というだけです。
コピーしたい場合は1番目のプログラムで j[0] = 7 とやっているように
要素ごとに代入する必要があります。
例えばこの場合 x[0] = y[0] 〜 x[4] = y[4] のように要素ごとに代入するか
System.arraycopyなどを使ってコピーします

>>749
s1 = s2の代入はCでいうポインタの代入ですので(s1 == s2)の結果はtrueになります
s1 = new String(s2) みたいにすればs1は一応違うオブジェクトになりますが
そもそもStringは不変ですのでコピーするということはあまり意識しなくてもいいかとおもいます
752749:2006/03/12(日) 17:23:37
>>750
なるほど、ありがとうございました。
753749:2006/03/12(日) 17:27:44
>>752
ありがとうございます。早く一通り文法を覚えねば
754デフォルトの名無しさん:2006/03/12(日) 17:28:38
javadocでの質問
protected以上の可視性を持つクラス、メンバについてのドキュメントを作成したい場合に
隠蔽された親クラス(パッケージプライベートとか)で定義された
public finalメソッドに記述されたjavadocの内容を
publicサブクラスのjavadocに引用する方法がわかりません。

finalでない場合はサブクラスでメソッドをオーバーライドしjavadocを書かなければ
親のjavadocの内容が引用されますが、finalメソッドについてもそれと同じように引用する方法はありませんか?
よろしくお願いします。
755デフォルトの名無しさん:2006/03/12(日) 17:51:20
756デフォルトの名無しさん:2006/03/12(日) 19:04:53
参照型のコピーはどう作成すればいいのでしょうか?
自分でコピーを作成する用のメソッドを定義しないと駄目ですか?
757754:2006/03/12(日) 19:33:30
>>755
回答ありがとうございます。
@inheritDocですが、子クラスで継承されたメソッドのjavadoc内で記述すれば
親のメソッドのjavadocの内容を埋め込める、というものなのでしょうか?
親のメソッドはfinalで継承不可なので、そもそも子で当該メソッドのjavadoc自体書くことが
できないため、このタグを子クラスで使う方法がわかりませんでした・・・
何か間違っているのでしょうか?
758デフォルトの名無しさん:2006/03/12(日) 19:55:59
>>756
clone();
759デフォルトの名無しさん:2006/03/12(日) 20:40:15
>>757
それは javadoc コメントを書く場所が適切ではない、というのが原因だと思うぞ……。
或いは、親クラスの API を見ればわかることを子クラスに書こうとしてるのが間違っている。
760デフォルトの名無しさん:2006/03/12(日) 20:53:24
すみません。TextAreaに文字列をappendしていくと画面がちらつくので、
JTextAreaに変えました。
TextAreaだと、自動縦スクロールしてappendした文字列が見えるのですが、
JTextAreaだと、スクロールしません。JTextAreaで、自動スクロールもしくは
appendした際に明示的に下スクロールさせるにはどうしたらいいのでしょうか?
761760:2006/03/12(日) 21:04:13
TextAreaでappendしても画面がちらつかない方法でも結構です。
よろしくお願いいたします。
762デフォルトの名無しさん:2006/03/12(日) 21:05:25
>>758
はい、一応objectクラスのcloneメソッドの存在は調べていたのですが使い方がわかりません。

・・・なのですが今までずっと調べて今使い方がわかりました。結構面倒なんですね(´・ω・`)
763デフォルトの名無しさん:2006/03/12(日) 21:47:12
public static void main(String args[]){
int x[] = {1,2};
copy(x);

for(int i=0; i<x.length;++i)
{
 System.out.println(x[i]);
}
}

public static copy(int x[])
{
int y[]={3,4};
x = y.clone();
}

これじゃぁ、コピー渡しても、表示されるのは1、2なんですが
どうやってコピーすれば・・・。
764デフォルトの名無しさん:2006/03/12(日) 21:48:14
>>762
ん?
Integer[] I = new Integer[4];
I[0] = new Integer(50);
I[1] = new Integer(1);
I[2] = new Integer(1);
I[3] = new Integer(1);

Integer [] I2 = (Integer[])I.clone();
System.out.println(I2[0].intValue());

どの辺が面倒?
765デフォルトの名無しさん:2006/03/12(日) 21:49:35
配列のコピーにはarraycopy使え
766764:2006/03/12(日) 22:00:31
あぁ。ごめん
これならどう?
public static void main(String args[]){
int x[] = {1,2};
copy(x);

for(int i=0; i<x.length;++i)
{
System.out.println(x[i]);
}
}

public static void copy(int x[])
{
int y[]={3,4};
System.arraycopy( y, 0, x, 0, y.length);
}
767754:2006/03/12(日) 22:00:47
子クラス以降で利用可能なfinalユーティリティメソッドを親クラスで用意する、なんて
よくありそうな話だとおもったんですけど・・・
公開される子クラス群を実質的な基本抽象概念としたい場合、子クラス群で共通化される
ユーティリティメソッドだけを持つ親クラスなんぞはクラス階層上不要なので・・・
そこで、隠蔽された親のpublic finalユーティリティメソッド分を
あくまで子クラスの公開メソッドとしてjavadocのMethod Detailに反映されるようにしたかったのです。
javadocでは無理なのでしょうか・・・
768デフォルトの名無しさん:2006/03/12(日) 22:38:30
>>767
標準のjavadocではできませんが、それはあなたの発想が特殊なためです。

ユーティリティメソッドのjavadocを各クラスにコピーするなんて無駄、1カ所にまとめろ、
リンクが張られているから実質的に参照できる、というのが、javadoc設計者の考え方で
あなた以外はこの方法でやっています。

どうしても妥協できなければ自分でjavadocをカスタマイズすればできるでしょう。

ところで、継承の理由が、final宣言されたユーティリティメソッドの提供にのみあるのなら、
それは継承の必要はないですね。設計を見直した方がいいと思います。
769デフォルトの名無しさん:2006/03/12(日) 22:57:38
>>763
C言語を知っていればポインタだだと思え、の一言で済みそうな話ではあるな・・・。
770デフォルトの名無しさん:2006/03/12(日) 23:01:43
Javaの場合ポインタが参照している物を保存するとなると結構問題が出る
771754:2006/03/12(日) 23:18:33
>>768
まあユーティリティメソッド云々は状況を説明するための例え話なんで聞き流してください。
なんにせよ出来ないというのがと分かってすっきりしました。
設計はまだまだ練っている段階ですのでこれからもっと見直すべきだと思います。
ありがとうございました。
772デフォルトの名無しさん:2006/03/12(日) 23:29:02
Spring2.0でトランザクション制御できた人いますか?
例外出してもロールバックしてくれん
773デフォルトの名無しさん:2006/03/12(日) 23:56:08
>>769
Cなら解るんだが、javaでもメソッドの中で、x=y;なら
スコープ抜けるから参照先が無くなるっていうのは
理解できる。しかしx=y;にしたとき、main関数の中で
表示すると、1、2が表示される。これは動作が不定
なだけなのかな?

後、メソッドの中でclone()ってやってるのにコピーされて
いないから解らない。ならclone()ってそもそも何するのよ?
って感じ、わけわからん('A`)。
774デフォルトの名無しさん:2006/03/13(月) 00:12:11
>>773
コピーと代入の違いを知れ。
775デフォルトの名無しさん:2006/03/13(月) 00:13:12
>>763 のコードはこういうこと
void copy(int[] x){
  int y[] = {3, 4};
  x = malloc(2 * sizeof(int));
  memcopy(y, x, 2 * sizeof(int));
  return;
}

おまいさんがやりたいのはこれだろ?
public static void copy(int[] x){
  int[] y = {3, 4};
  System.arraycopy(y, 0, x, 0, y.length);
  return;
}
776デフォルトの名無しさん:2006/03/13(月) 00:13:47
そもそも>>763はコンパイル通らないだろ
777デフォルトの名無しさん:2006/03/13(月) 00:17:56
>>773
本当にC解ってる?Cでも同じ振る舞いになるよ?
メソッドcopy()の中で
x = y;
としたとしても、変更されるのはメソッドcopy()の引数xの参照であって、
メソッドmain()のローカル変数xの参照じゃない。
778デフォルトの名無しさん:2006/03/13(月) 00:24:25
メソッドのJAVADOCはメソッドを実装したクラスに生成される。
ただそれだけだ
779デフォルトの名無しさん:2006/03/13(月) 00:25:25
俺も先輩に何度か説明したことがあるが
Javaは参照渡しですら値渡しだ
逆をいうとJavaに参照渡しなど存在しない

参照型を値渡ししていると覚えてください
780デフォルトの名無しさん:2006/03/13(月) 00:26:54
そうそう。>>763をC言語風にするこうだ。

void copy(int x[])
{
 int y[] = {3, 4};
 x = y;
}

そっくりなわけだが、これじゃなんも変わらんね。
変えたきゃ x = y; じゃなくて memcpy(x, y, 2 * sizeof(int)); とかだね。
781デフォルトの名無しさん:2006/03/13(月) 00:28:21
参照型を値渡しって普通の参照渡しのことじゃね?
782デフォルトの名無しさん:2006/03/13(月) 00:28:41
>>779
そうそう。

実はC/C++でのポインタだと考えると分かり易かったりする。
783デフォルトの名無しさん:2006/03/13(月) 00:33:22
VMを実装しようとしてるわけではない
だから変数はオブジェクトを入れる器(もしくはオブジェクトの名前)だと思えばいい
参照だの値だのはオブジェクト指向の本質ではない
784デフォルトの名無しさん:2006/03/13(月) 00:34:17
Cも値渡ししかなかったっけ?
Delphiだと、varパラメータとかあるけど
785デフォルトの名無しさん:2006/03/13(月) 00:35:54
誰もオブジェクト指向の本質を語ってない件について
786デフォルトの名無しさん:2006/03/13(月) 00:39:08
>>784
そう。その通り。
787デフォルトの名無しさん:2006/03/13(月) 00:41:20
>>774
x=y.clone();ってしてるからコピーを代入してるんじゃないの?

>>775
受け取ったアドレスの領域確保して、値をコピーしてるんだから
どっかでfreeしない限り保障されてる気がする。
俺マジでCも解ってなさそうだ('A`)。
ところでmemcopyって、後ろから前へコピーじゃね?

arraycopyとforループで要素を一個ずつ代入していくのが等価と考えていいんですよね。

>>776
ソースコピペしてないからミスあるかもしれんが、JDK1.5+eclipseでコンパイルできてる。

>>777
C解ってないかもしれん。mainでxのアドレスが0x01としたら、メソッドcopy()へ渡したら
copy()内のxのアドレスも0x01じゃないの?そしてそのアドレスをyのアドレスに書き換える?
む、こんがらがってきた。
788デフォルトの名無しさん:2006/03/13(月) 00:41:45
>>784
scanf("%s %d",name, &value);
789デフォルトの名無しさん:2006/03/13(月) 00:42:43
Cで参照渡しが無いとすると
検索で引っかかってくるサイトは全部嘘か
790デフォルトの名無しさん:2006/03/13(月) 00:44:17
typedef struct _hoge {
  int x, y, z;
} hoge;
hoge a0, b0, *a1, *a2;

で a0 = b0; が値渡し、a1 = a2; が参照渡し。
参照の値渡しって何?
791デフォルトの名無しさん:2006/03/13(月) 00:44:21
恥ずかしい流れだな・・・
Cを知らずにCを語るな
Javaを知らずにJavaを語るな
792デフォルトの名無しさん:2006/03/13(月) 00:45:47
>>787
x = y.clone();
これって通るか?
793デフォルトの名無しさん:2006/03/13(月) 00:46:33
mainのxのアドレスは0x05とかで、値が0x01
それをcopy()に渡すと
0x01という値が、copy()の変数x(アドレス0x0a)に渡される
794デフォルトの名無しさん:2006/03/13(月) 00:47:26
>>790
仮引数の側に&や*に相当するものはJavaにはない
795デフォルトの名無しさん:2006/03/13(月) 00:49:17
>>794
ああ、無いな。でそれが何の回答?
796デフォルトの名無しさん:2006/03/13(月) 00:50:54
>>795
hoge != &hoge[0]
797デフォルトの名無しさん:2006/03/13(月) 00:54:35
>>792
キャスト無いと通らんと思われ。
798デフォルトの名無しさん:2006/03/13(月) 00:55:42
>>796
なんでいきなり配列先頭のアドレス? ごめん何が言いたいのか意味不明。
799デフォルトの名無しさん:2006/03/13(月) 00:56:20
>>792
>>797
キャストしてないけど通るよ。

>>793
main(){
int x[]={1,2};
copy(&x);
}

copy(int *x){
int y[]={3,4};
*x = y;
}
これでいいのかな?Cの質問になってもうしわけない。
800デフォルトの名無しさん:2006/03/13(月) 00:57:15
>>790
pass-by-value で参照を渡す事。

ちなみに、a1=a2 は普通は「参照渡し(= pass-by-reference)」とは言わない。
801デフォルトの名無しさん:2006/03/13(月) 00:57:16
>>798
Cなら==ってこった
802デフォルトの名無しさん:2006/03/13(月) 00:59:31
803デフォルトの名無しさん:2006/03/13(月) 01:00:07
>>772
何ですと?!
それって2.0だと非検査例外が起きてもコミットしちゃうってこと?

Spring使いじゃないんだが気になったので。質問で返しちゃてごめん。

804デフォルトの名無しさん:2006/03/13(月) 01:01:48
>>797
JLS3rdからはキャスト無しで通るらしい。
http://java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7
805デフォルトの名無しさん:2006/03/13(月) 01:02:54
>>800
それは単に英語で良い直しただけやん。>>790 の例で何が参照渡しで何が参照の値渡しか
ちょっとやっていただけないでしょうか?

>>801
ANSI でポインタどうしの == は保障されてなかったはずだが。てか何でポインタ/参照の比較の
話になってんの?
806デフォルトの名無しさん:2006/03/13(月) 01:06:02
>>805
java初めて三ヶ月だけど、
class Test{
public static void main(String args[]){
String s = "hogehoge";
Test test = new Test();
test.hoge(s);
System.out.println(s);
}
void hoge(String str){
str=null;
}
}

こう?
807デフォルトの名無しさん:2006/03/13(月) 01:06:13
ダメだこいつらw
一生C厨に馬鹿にされてろw
808デフォルトの名無しさん:2006/03/13(月) 01:08:18
>>806
こう? といわれても何が? としか返せないんだが…
809デフォルトの名無しさん:2006/03/13(月) 01:11:47
下記例のAの処理で、@の状態を変えようとすることに
違和感を覚えない人はオブジェクト指向をもう一度学習
し直すことをおすすめする。
(→Aの出力が"次の文字列"となることを期待する人。)
どの言語からJavaに移行してきたかなんて関係ない。
オブジェクト指向として変であることを感じましょう。
風を感じるよりは現実的。

これを理解した上で、C++ならできる、Javaならできない
ということを知ればいい。

Class A {
 String foo = "最初の文字列";
 getFoo() {return foo;}
 setFoo(String hoge) {foo = hoge;}
}

Class B {
 execute() {
  A anObject = new A();・・・・・・・・・・・・・@
  bar(anObject.getFoo());
  System.out.print(anObject.getFoo());・・A
 }
 bar(String foo) {
  foo = "次の文字列";・・・・・・・・・・・・・・・B
 }
}
810デフォルトの名無しさん:2006/03/13(月) 01:12:25
誤>下記例のAの処理で、@の状態を変えようとすることに
正>下記例のBの処理で、@の状態を変えようとすることに
811デフォルトの名無しさん:2006/03/13(月) 01:14:31
コレ何言語だよ
812デフォルトの名無しさん:2006/03/13(月) 01:15:09
>>805
C言語なら
int array[] = {1,2};
func(&array); //これが値渡し。「参照の値渡し」的に言うなら「ポインタの値渡し」

C++には参照渡しあるけどね。
813デフォルトの名無しさん:2006/03/13(月) 01:15:12
完全なJavaコードじゃないと理解できないなら理解しなくていいよ。
814デフォルトの名無しさん:2006/03/13(月) 01:16:58
レベル低すぎて失笑
815デフォルトの名無しさん:2006/03/13(月) 01:17:11
>>807
たまに「ポインタを渡す=参照渡し」とかアホな事を書いてるC言語の入門本見て
参照渡しと値渡しの区別が付かなくなってる可哀そうな人が来るんですよ。
816デフォルトの名無しさん:2006/03/13(月) 01:18:05
Java厨と俺との違いは、
基礎を知らずにCommonsを語る奴とそうでない奴との違いだと分かった。
817806:2006/03/13(月) 01:20:14
実行して…
ええと、hoge()でstrの指すものをnullにしている。このとき参照渡しならsもnullになるはず。でもならない。
つまり、内部でs=strとやってからhoge()が実行されるってこと。これが「参照の値渡し」。
818デフォルトの名無しさん:2006/03/13(月) 01:22:01
おっと、値渡し/参照渡しは代入じゃなくて引数の渡し方だっけか?

void func(hoge x);  → 値渡し
void func(hoge* x); → 値の参照渡し
void func(hoge& x); → 参照渡し

って言ってるの? だったら Java が値の参照渡しだってのは納得。
819デフォルトの名無しさん:2006/03/13(月) 01:22:03
>>814
俺の関わったソフトが世の中に流れてると思うと、マジで恐ろしい。
次の職に就けるわけでもないから、辞めるに辞められんしなぁ。
820806:2006/03/13(月) 01:22:56
>>817>>808ね。

ちなみに俺はVBA→HSP→Java。VBAにも参照渡しって指定できたような気がする。
Cなんてさっぱり。ポインタって参照のことでしょ?
821デフォルトの名無しさん:2006/03/13(月) 01:24:04
>>818
ちなみに中間のは値渡しだから。

一番下は単なる C++の参照渡し。
822デフォルトの名無しさん:2006/03/13(月) 01:24:12
>>815
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLD,GGLD:2003-39,GGLD:ja&q=C%E8%A8%80%E8%AA%9E%E3%80%80%E5%8F%82%E7%85%A7%E6%B8%A1%E3%81%97

こいつら殆ど間違ってるんだな勉強になったよ
・・・ってなんでJavaスレでC言語の勉強してるんだよ俺
823デフォルトの名無しさん:2006/03/13(月) 01:26:35
>>817
じゃあ参照渡しって 「参照の参照渡し」 って呼んだほうが良いんじゃね?
ポインタのポインタでしょ。
824デフォルトの名無しさん:2006/03/13(月) 01:28:10
C言語では仕様上参照渡しが無いが
ポインタの値渡しで代用してるってことでしょ
825デフォルトの名無しさん:2006/03/13(月) 01:29:23
>>821
ごめん、真ん中の呼び方間違い。参照の値渡しって書くつもりだった。
真ん中のが参照の値渡しってことで良いわけね?
826デフォルトの名無しさん:2006/03/13(月) 01:29:49
そゆ事。で、馬鹿は「ポインタの値渡し」を「参照渡し」と呼ぶ。
827デフォルトの名無しさん:2006/03/13(月) 01:31:43
なんかすごく参考になった。
ここ見ててよかったよ。
参照の参照渡しか。
828デフォルトの名無しさん:2006/03/13(月) 01:32:42
参照の参照渡しなら受けては&になるだろ
829デフォルトの名無しさん:2006/03/13(月) 01:33:17
>>820
VBA は知らんが、VB は値渡しか参照渡しか指定できたはず。 ByVal とか ByRef とかで。
830デフォルトの名無しさん:2006/03/13(月) 01:34:33
参照の参照渡しってのは何か間違ってるような気もするが。
面倒だから放っておこう。
831デフォルトの名無しさん:2006/03/13(月) 01:34:58
>>826
OK、分かった。
でもポインタの値渡しと参照渡しを言葉上明確に区別する必要が出てきたのって
C++ で参照型 & が出てきてからでしょ。後から来たのに「実はこっちが本当の
参照型」ってことになったから、昔のままの認識で来てんじゃね?
832デフォルトの名無しさん:2006/03/13(月) 01:36:59
>>831
は?C時代から参照元を上書きできますが?
833デフォルトの名無しさん:2006/03/13(月) 01:37:20
public void hoge(Nanka n){
n = null;
}

Nanka n = new Nanka();
hoge(n);

このとき、
nへの参照がコピーされて、
渡されるってことか。
nそのものの参照が渡されるわけではなくて。
834デフォルトの名無しさん:2006/03/13(月) 01:39:05
>>831
昔から、例えば Fortran とか参照渡しする言語は普通にあったのよ。

C言語しか出来ない人には、C言語に参照渡しがなかったため、参照渡しを理解できなかった人も居た。
彼等の中の一部は「ポインタの値渡し」を「参照渡し」と呼んだ
835デフォルトの名無しさん:2006/03/13(月) 01:39:10
>>833
そう、Nankaはhogeなんかに束縛されないのだ
836デフォルトの名無しさん:2006/03/13(月) 01:39:15
こうして 「参照型」 は 「シミュレーション」 や 「名誉挽回」 のような、
正しく使わないと馬鹿に見られる試金石になったとさ。
837デフォルトの名無しさん:2006/03/13(月) 01:40:00
>>832
だれが上書きの話なんかしてんの?
838デフォルトの名無しさん:2006/03/13(月) 01:41:07
>>836
「参照型」と「参照渡し」は違うから。
839デフォルトの名無しさん:2006/03/13(月) 01:42:30
多種多様な馬鹿が入り乱れててワケワカメ
840デフォルトの名無しさん:2006/03/13(月) 01:44:08
Javaのオーバーヘッド対策の限界を知るには良かったんじゃないか?
若い諸君らは、Bufferを駆使してJavaの常識を一新してくれよ
841806:2006/03/13(月) 01:49:27
>>823
ごめん、ポインタがわからん。でも参照の参照渡しじゃないと思う。値の参照渡しもあるから。
悪いけど、いきなり俺言語で説明する。
(1)hoge(int a As値渡し){a=10}//値の値渡し
(2)hoge(int a As参照渡し){a=10}//値の参照渡し。
main{
int foo=1;
hoge(foo);
}
とすると、
(1)を呼び出すとfooは1のまま。aとfooは別の変数。
(2)を呼び出すとfooは10になる。aとfooは同一。
参照渡しってのは、#const a fooってのがメソッド内だけ適用されるようなものだと思う。
わかりにくくてごめんなさい。

>>829
それです。ありがとうございます。
842デフォルトの名無しさん:2006/03/13(月) 01:49:56
>>834
ああ、C/C++/Java と来た今の俺がまさにそれだな。メモリブロックのコピーが渡る、
メモリブロックを指すポインタのコピーが渡る、メモリブロックそのものが渡る、って
のは理解できるんだが、「参照渡し」 から連想するものがちょっと混乱する。
843デフォルトの名無しさん:2006/03/13(月) 01:51:20
VB 上がりが C 上がりに唯一優越感持てるネタがあると聞いて飛んできました。
844デフォルトの名無しさん:2006/03/13(月) 01:54:48
参照渡しって呼び出し側の使ってるメモリ領域がそのまま呼び出し先に渡るイメージなんでしょ?
実体渡しとかいう名前に変えた方がよくない?
845デフォルトの名無しさん:2006/03/13(月) 01:58:39
>>844
やりたきゃ、どうぞご勝手に。
世間が従うとは限らんけどね。
846833:2006/03/13(月) 01:59:46
たとえば
>>833
Nanka に
public int value;
があるとして、

public void setValue(Nanka n){
n.value = 100;
}

としたときに、参照のコピーをいじったことにより
参照アドレスのデータが変わったから、
まるで参照渡しの様に見えたというわけですか。
847デフォルトの名無しさん:2006/03/13(月) 02:18:47
参照渡しと参照の値渡しって、厳密に言えばレベルのただの言葉遊びで、設計上の意味は同じじゃね?
848デフォルトの名無しさん:2006/03/13(月) 02:22:16
矢切の渡し
849デフォルトの名無しさん:2006/03/13(月) 02:25:04
参照渡しだったら呼びさされた方でその変数に
代入することで呼び出した方の値を変えられる。
参照の値渡しだったら変えられない。

本当の参照渡しを体験するためにFortranでもやってこい。
850デフォルトの名無しさん:2006/03/13(月) 02:26:17
今夜は Fortran 厨がうれしそうな夜ですね
851デフォルトの名無しさん:2006/03/13(月) 02:27:28
>>847
>>846のメソッド内で

n = xxx;

と参照を変えた場合に、
参照渡しだと思ってたら、
呼び出し元も変わると思っちゃうんじゃね?
852デフォルトの名無しさん:2006/03/13(月) 02:27:30
>>847
いや、全然違うだろ。
853デフォルトの名無しさん:2006/03/13(月) 02:28:13
真夜中の大論争。

そして明日はみんな遅刻。
854デフォルトの名無しさん:2006/03/13(月) 02:29:38
論争なんかないだろ。論争する点がないんだから。
単にわかってる人とわかってない人がいるだけ。
855デフォルトの名無しさん:2006/03/13(月) 02:31:01
>>853
うふ、明日はお休み。
856デフォルトの名無しさん:2006/03/13(月) 02:31:18
いやコードの上っ面でどう書けるかじゃなくて、もっと上位の設計上の話だって。
857デフォルトの名無しさん:2006/03/13(月) 02:35:54
おはようございます さくやは おたのしみでしたね
858デフォルトの名無しさん:2006/03/13(月) 02:36:07
859デフォルトの名無しさん:2006/03/13(月) 02:36:08
オブジェクトランドで語れよ、おまえら
860デフォルトの名無しさん:2006/03/13(月) 02:40:07
>>858
日本語でおk
861デフォルトの名無しさん:2006/03/13(月) 02:41:02
そんなことよりまんこの話をしようぜ
862デフォルトの名無しさん:2006/03/13(月) 02:42:22
また参照渡しのはなしか.... とっとと終わらせることにする。

世の中のCの本で「参照を渡すから参照渡し」とか書いてるのは、バカが書いたんで
あって全部間違い。Cには値渡ししかないってのが言語仕様だしカーニハンに聞こうが
リッチーに聞こうがそう言う。

参照渡しというのはVBのByRefとか、Pascalのデフォルト動作をいうの。

String hoge = "hoge";
func( hoge);
System.out.println( hoge);

void func( String arg) {
//なんか処理
}

参照渡しでは、hogeとargは完全に同一の変数として扱われる。だからfunc内でarg="nullpo"と
やると、argはもちろん、hogeの値も「nullpo」になる。イメージとして変数を考えると、変数を渡すと、
変数がもってる値じゃなくて、変数という参照自体が渡ってるような感じなので「参照渡し」という。
一方で、変数の値が渡るのが「値渡し」。

CとかJavaは値渡しだから、func( hoge)としたときには、hoge変数のもつ値(この場合は
String参照。C言語だったらポインタ)が、hoge変数とはまったく関係ない、argというまったく別の
変数に格納される。

argはhogeとは別の変数だからarg="nullpo"とかやろうが、hogeには関係ない。
これが値渡し。CにもJavaにも昔からこの方式しかない。

参照渡しが死滅した方式なら別に参照の値渡しを参照渡しと呼んだっていいが、未だに
VBなんかでも普通に使ってるんだから、ちゃんと区別しないと今みたいに恥ずかしい目にあう
ってことだ。
863756:2006/03/13(月) 02:42:46
今日も良く釣れたw
864デフォルトの名無しさん:2006/03/13(月) 02:52:39
もうとっくに終わってる話に「とっとと終わらせる」と言いつつ力説始める人は
周りに童思われるでしょうか。>>865 さん、お答えください。
865デフォルトの名無しさん:2006/03/13(月) 02:54:32
866756:2006/03/13(月) 02:54:36
>>862
変数hogeもしくはargを経由して操作できるオブジェクトは同じものだよ。

値渡しは、同値だが同一ではないオブジェクトを渡すことだ。

Javaでは実際には比較できないが、hoge==argかつhoge.equals(arg)かつarg.equals(hoge)を満たす。

あと、Stringではなく、Listなどのオブジェクトで考えてみな。

arg.clear()を行えば、hoge.isEmpty()だ。
>argはhogeとは別の変数だからarg="nullpo"とかやろうが、hogeには関係ない。
つまり、これは部分的に正しくない表現。
867756:2006/03/13(月) 02:56:59
オブジェクト渡し

今日からそう呼ぼうぜ。

868デフォルトの名無しさん:2006/03/13(月) 02:57:54
おれ渡し、おまえ渡し、の方が良い
869デフォルトの名無しさん:2006/03/13(月) 02:58:28
矢切の渡し
870デフォルトの名無しさん:2006/03/13(月) 02:58:29
871デフォルトの名無しさん:2006/03/13(月) 02:58:44
2秒遅かったか
872デフォルトの名無しさん:2006/03/13(月) 02:59:49
> 参照渡しが死滅した方式なら別に参照の値渡しを参照渡しと呼んだっていいが、未だに
> VBなんかでも普通に使ってるんだから、

あれ? Java や C のコンテキストで話す分には参照の値渡しを参照渡しと表現してもかまわない、
と読めるますなw
873デフォルトの名無しさん:2006/03/13(月) 03:02:17
実質、目的は変わんねぇから言葉遊びにしか見えないんだよ。
874デフォルトの名無しさん:2006/03/13(月) 03:02:24
参照渡しとか値渡し、矢切の渡しとかいってる人は
Adaでも学習した方がいいよ
875デフォルトの名無しさん:2006/03/13(月) 03:06:38
>>868
Call by 俺
Call by オマエ
876デフォルトの名無しさん:2006/03/13(月) 03:07:21
結着が付くまで寝るな。

と、蒲団の中からノートPCで書く俺。
877デフォルトの名無しさん:2006/03/13(月) 03:07:42
ぬるぽ渡し
878デフォルトの名無しさん:2006/03/13(月) 03:10:36
>>872
おいおい、なんで「参照渡しが死滅したら」がJavaやCのコンテキストだったらに
変換されるんだよw

JavaやCのコンテキストから出た途端にバカにされるやつが続出の予感。
879デフォルトの名無しさん:2006/03/13(月) 03:19:41
所詮呼び方知ってるかどうか程度の話じゃん。それでバカ認定とかってぜんぜん本質的じゃないな。
880デフォルトの名無しさん:2006/03/13(月) 03:36:11
>>879
カワイソス
881デフォルトの名無しさん:2006/03/13(月) 03:40:27
頭悪そうだなおまえ
882デフォルトの名無しさん:2006/03/13(月) 03:53:49
修飾子とかぜんぜん覚えらんねーorz
883デフォルトの名無しさん:2006/03/13(月) 03:56:39
private static final
protected
だけで80%はいける
884デフォルトの名無しさん:2006/03/13(月) 04:30:49
>>883
public は最重要
885デフォルトの名無しさん:2006/03/13(月) 04:53:11
参照の値渡しってえらい回りくどい言い回しだけどさ、これポインタのない言語使いが
ポインタ渡しの目的を理解できなくて付けた名前じゃね?
ポインタ渡しの目的を理解できてりゃ素直に参照渡しって呼んでると思うけど。
886デフォルトの名無しさん:2006/03/13(月) 05:02:48
>ポインタ渡しの目的を理解できてりゃ素直に参照渡しって呼んでると思うけど。

「本来の参照渡し」が実現できない言語がポインタ渡しで代用したものを
誤 っ て 「参照渡し」と呼んだのがおかしいんだよ。
「本来の参照渡し」も知らないでアホなこと言うのはやめてくれ。

というかお前、オブジェクト自体とオブジェクトへの参照との違いもわかってないだろ?
887デフォルトの名無しさん:2006/03/13(月) 05:06:31
>>886
プッ 苦しくなったらレッテル貼りw
おまえ、参照渡しをサポートしている言語が内部で暗黙的に参照の値渡しをやってると理解してないだろ?
888デフォルトの名無しさん:2006/03/13(月) 05:13:24
本来の参照渡しw つまり、おまえが心の拠り所にしてる「本来の参照渡し」なんてのは
単なる言語上の糖衣でしかないんだよ。プログラマがやりたいことも言語がやってることも
実質何も変わってない、だがなんとなくポインタには抵抗あるので差別化したい、が本音だろw
889デフォルトの名無しさん:2006/03/13(月) 07:06:34
>>847
違う。言語機能の違いを表してるから。

その主張は、例えば ++i; も i = i + 1; も結果は同じ。
結果が同じだから i = i + 1; を「前置インクリメント式」と呼んで何が悪い?
って言ってるのと同じ。

同じ動作をするからといって同じ呼び名がついてるとは限らん。
890デフォルトの名無しさん:2006/03/13(月) 07:09:00
>>847 のどこに「参照の値渡しを参照渡しと呼んで何が悪い?」なんて書いてるの?
891デフォルトの名無しさん:2006/03/13(月) 07:11:58
>>890
つ「ただの言葉遊びで、設計上の意味は同じじゃね?」
892デフォルトの名無しさん:2006/03/13(月) 07:12:41
893デフォルトの名無しさん:2006/03/13(月) 07:13:01
いまひどい曲解を見た
894デフォルトの名無しさん:2006/03/13(月) 07:13:08
「ただの言葉遊び」って事にしたい人もいるみたいだね。

自分が用語を間違ってたのは調べりゃわかったろうし。
895デフォルトの名無しさん:2006/03/13(月) 07:15:39
どうでも良い事に拘る人って居るよね
896デフォルトの名無しさん:2006/03/13(月) 07:16:38
そうそう、間違ってたんだから尻尾巻いて逃げりゃいいのに、粘着する阿呆とかね。
897デフォルトの名無しさん:2006/03/13(月) 07:18:04
粘着してるのはどっちだよwww
898デフォルトの名無しさん:2006/03/13(月) 07:19:01
俺が寝ておきても、まだ続けてるキミの事だよ。
899デフォルトの名無しさん:2006/03/13(月) 07:19:56
俺が起きてもw
900デフォルトの名無しさん:2006/03/13(月) 07:20:32
おやおや、勝手に曲解してたのが恥かしくなって今度は決め付けで煽りですか。
901デフォルトの名無しさん:2006/03/13(月) 07:21:12
春休みは学生がPG気取りで書き込むからな
902デフォルトの名無しさん:2006/03/13(月) 07:21:26
>>890 のレスの速さみても、粘着して無いって主張するのは無理だろ。
903デフォルトの名無しさん:2006/03/13(月) 07:22:55
この議論に参加してる人間全部粘着質だとしか思えない
904デフォルトの名無しさん:2006/03/13(月) 07:24:01
>>902 は専ブラも知らんのか…
905デフォルトの名無しさん:2006/03/13(月) 07:25:50
おはよう。また火つけちゃったバカがいるの?
906デフォルトの名無しさん:2006/03/13(月) 07:27:26
>>905
悪い。まさか相手が 未だに燃え上がるよーな粘着質だったとは知らなんだ。
907デフォルトの名無しさん:2006/03/13(月) 07:28:20
もう、「参照渡し」については決着ついてるしね。
908デフォルトの名無しさん:2006/03/13(月) 07:29:57
話題に乗り遅れてるのに後から高説垂れ始める馬鹿がいる限り
909デフォルトの名無しさん:2006/03/13(月) 07:33:36
決着付いてるところにガソリンまき始める奴の方が粘着だな。
910デフォルトの名無しさん:2006/03/13(月) 07:35:40
どっちが粘着か勝負したい?
911デフォルトの名無しさん:2006/03/13(月) 07:53:27
ヨソでやれ
912デフォルトの名無しさん:2006/03/13(月) 07:56:40
>>906
お前も相手するなウザい
913デフォルトの名無しさん:2006/03/13(月) 07:58:25
こういう時はしりとりでもしてちょっとスレ流すべ。

きりん
 ↓
914435:2006/03/13(月) 08:05:10
ンゴマ
http://www10.plala.or.jp/nkosi/nkosi%20African%20instruments.html


class A {
private B b;
}

こんなふうになってるクラスで>>435をやってみると、
ClassCastExceptionがでて、メッセージ内容が
cannot assign instance of B to field A.b of type B in instance of A
ってなるんだが
別のURLClassLoaderを使って読み込まれたクラスは別物として扱われてる?
915デフォルトの名無しさん:2006/03/13(月) 08:09:45
別物というか、その URLClassLoader を明示的に使ってやらないと復元できないだろう。
A の復元に使ったクラスローダーからじゃ B (のインスタンスの実装クラス) をロードできないんだから。
916435:2006/03/13(月) 08:21:01
>>915
すまん、よく分からん。
明示的に使うってのはどういうこと?
今やってる手順としては、

1. Jarファイルからクラスを読み込み、インスタンスを作る
2. そのインスタンスをObjectOutputStreamでファイルに書き出す。
3. プログラムを再起動する
4. resolveClassを上書きしたObjectInputStreamを使ってファイルから読み込む。

なんだが。
resolveClassでは
URLClassLoaderに最初のJarファイルを指定してloadClassしてるんだが。
917デフォルトの名無しさん:2006/03/13(月) 08:33:33
復元に使うクラスローダーは A も B もロードできるように作ってあるってこと?
だったらごめん、分からん。
918デフォルトの名無しさん:2006/03/13(月) 08:38:07
> 別のURLClassLoaderを使って読み込まれたクラスは別物として扱われてる?
基本的に別物。
919デフォルトの名無しさん:2006/03/13(月) 08:43:05
ん? 動的に JAR を読み込んで B をロードしたクラスローダーと、復元に使おうとしてる
クラスローダーのインスタンスが違うなら、同じ B でも違うクラスと見なされるよ。
そうではなくて? 何か混乱してきた…
920デフォルトの名無しさん:2006/03/13(月) 09:02:44
>>919
そうです。

どうやったら同じものになりますか?
プログラムを再起動するので同じURLClassLoaderを使えないんですが。
URLClassLoaderも保存したら大丈夫ですか?
921435:2006/03/13(月) 10:00:41
というかプログラムの起動中に読み込むJarファイルが追加されたりするんで、
どちらにせよURLClassLoaderをそのたびに作らなくてはいけないんですが。
922デフォルトの名無しさん:2006/03/13(月) 10:26:44
>>921
試してないので保証はしないけど、
URLClassLoader#addURL(URL)というメソッドがあるので、
URLClassLoaderを継承して動的にURLを追加できるクラスローダを
作れるんじゃね?
923435:2006/03/13(月) 10:32:31
>>922
ウホ、いいprotectedメソッド!
publicしか見てなかった。
サンクス
924435:2006/03/13(月) 11:05:17
出来ました。
みんなトンクス!
925デフォルトの名無しさん:2006/03/13(月) 11:24:25
出来たなら後学の為にソースとかPlz
926デフォルトの名無しさん:2006/03/13(月) 11:34:34
[本音] こたえる気はないけどソースは下さい
927435:2006/03/13(月) 11:43:12
>>925
どのへん?
URLClassLoader?
ObjectInputStream?
全部でもいいけど。
オープンソースのつもりだから。
928デフォルトの名無しさん:2006/03/13(月) 13:06:29
>>691 遅レスですが。エスパー翻訳ありがとうございます。それなら納得いきます。
929デフォルトの名無しさん:2006/03/13(月) 13:45:36
System.out.println("foo");
について質問です。Systemクラスはなぜインポートしなくても使えてしまうんですか?
インポートしなくても使えるクラスは何と呼ばれてるのでしょうか?
930929:2006/03/13(月) 13:46:57
すいません。自己解決しました

java.lang パッケージはインポートしていないのですが
System.out.println() 等が使えるようです。なぜ?


[S017 A-13]
java.lang パッケージはシステムの動作に必要となるクラス群が格
納されているため、ほっておいてもインポートされた状態になるため
です。

931デフォルトの名無しさん:2006/03/13(月) 13:47:18
java.lang.*
932デフォルトの名無しさん:2006/03/13(月) 13:54:18
1分で自己解決するような問題をここで聞くな。
まずは自分で調べるところから
933435:2006/03/13(月) 14:15:12
>>925-926
一区切りしたんでリリースついでにソースコードもアップした。
http://www.co0.net/solver/release/solver20060313.zip

zipの中にsrc.zipが入ってる。
934デフォルトの名無しさん:2006/03/13(月) 14:25:12
すいません、swing関係の質問です。
テキスト入力フィールド全般で、最初に表示した文字のみを固定して表示させ続けることはできるのでしょうか

たとえば、初期で「ABCD」と表示されていたとします。
この「ABCD」は、消すことはできず、「ABCD」の後ろに文字を追加入力していく形にしたいのです。
勿論、getValue等で値を取得した時は「ABCD」+入力した値として取得できるようにしたいのです。

説明がわかりにくいかもしれませんが、よろしくお願いします。
935435:2006/03/13(月) 14:26:01
リリースしたって言ってもソフト自体は使える状態じゃないから
使おうとか思わないでくれw
936デフォルトの名無しさん:2006/03/13(月) 14:59:32
>>934
ABCDが固定ならABCD-なんてラベル作ってその隣に続けてテキストフィールド置くとか。
937デフォルトの名無しさん:2006/03/13(月) 15:07:57
厳しいが1文字ごとにKeyListnerをキャッチしてABCDが消されていたら無理やり復元するしかないような。
これ表面上は固定に見える
938934:2006/03/13(月) 15:12:18
>>936
返答ありがとうございます。
その案も考えたのですが、できるだけ一つのフィールド内で実現したいのです。
具体的に言いますと、JTable内の一つのセル内で上記の機能を実現したいのです。
試しにJLabelをaddしてみたのですが、コードが表示されるのみでラベルオブジェクトが表示されませんでした
939デフォルトの名無しさん:2006/03/13(月) 15:14:41
>>938
パネルかなんかにラベルとテキストフィールド入れたら?
940934:2006/03/13(月) 15:15:25
>>937
矢張りそれしか無いですか・・・orz
Listnerを利用すると、ペーストされた場合等に消されてしまう可能性がありそうで微妙だと思ったんですが・・・
941デフォルトの名無しさん:2006/03/13(月) 15:19:03
まぁ、一瞬消えるわな・・・
942デフォルトの名無しさん:2006/03/13(月) 15:19:39
さらにフォーカスロスト時に復元のイベントをつける(; ^ω^)
943デフォルトの名無しさん:2006/03/13(月) 15:22:07
そこまでがんばらなくてもエラーで再入力でいんじゃね
944デフォルトの名無しさん:2006/03/13(月) 15:33:20
客にJavaの仕様上、無理ですと言うんだ
945デフォルトの名無しさん:2006/03/13(月) 15:35:59
そこでネイティブコード。
946934:2006/03/13(月) 15:38:46
>>939
やってみましたが、やはりコードが表示されるだけになってしまいます。
なんとなく、無理っぽい気がしてきましたorz

>>944
見つからなければそうしようと思います。
といっても、方法は限られて無く、希望としての提案だったので、変更は簡単だと思います。

取り敢えず複数フィールドでの実現法を適用して、
方法が見つかったらすぐ切り替えられるようにしておこうと思います。
もし方法が見つかったら、こちらにフィードバックしようと思います。
返答頂いた皆様、ありがとうございました。
947デフォルトの名無しさん:2006/03/13(月) 16:26:11
class Singleton{
static Singleton singleton;

private Singleton(){
}
}

これの二行目って何をしてるんですか?
948デフォルトの名無しさん:2006/03/13(月) 16:33:24
staticな変数を定義してる。
949デフォルトの名無しさん:2006/03/13(月) 18:24:14
どの2行だよ
}
}
かい?
950J:2006/03/13(月) 18:42:54
証券会社のjavaが走るリアルタイム株価の文字をユーザー側でスクリプト変えてを大きくできるかな?
951デフォルトの名無しさん:2006/03/13(月) 18:58:03
>>950
通報しますた
952デフォルトの名無しさん:2006/03/13(月) 19:30:44
>>732
> 大学院で初めて習うよ

ちょっとwwwwwwwwwおまwwwwwwww
んなの大学院生じゃねえよ(ワラ
953デフォルトの名無しさん:2006/03/13(月) 19:58:44
>>816
> Java厨と俺との違いは、
> 基礎を知らずにCommonsを語る奴とそうでない奴との違いだと分かった。

とりあえず、Commonsを知っているお前もJava厨。

954デフォルトの名無しさん:2006/03/13(月) 20:01:26
>>840
> Javaのオーバーヘッド対策の限界を知るには良かったんじゃないか?
> 若い諸君らは、Bufferを駆使してJavaの常識を一新してくれよ

お前はマ板のJavaスレからやってきたな。
バブル世代のオッサンだろ。

ただたたやみくみにパフォーマンスC言語厨原理主義者のように
Bufferを使えばいいってもんじゃない。
あれは外部のリソースを使用するが使い方を誤ると
メモリリークを起こす。通常の配列宣言とは違う。
よって馬鹿みたいにBuffer使えばいいってもんじゃない。
本当に必要な時にだけ使うべきだ。
955デフォルトの名無しさん:2006/03/13(月) 20:04:11
>>950
楽天証券のAppletのことを言ってるのか?
956デフォルトの名無しさん:2006/03/13(月) 20:22:04
>>954
プロファイラ使うのが常識となってるJavaの今で、
なんでそんな過去ログ辿って息巻いてるの?
957デフォルトの名無しさん:2006/03/13(月) 20:33:13
過去ログ?
マ板にあるスレタイにJava とバブルがつくスレで
Bufferの話が出ていたんだけど
958デフォルトの名無しさん:2006/03/13(月) 20:33:31
Eclipse Profiler使ってるのか
959デフォルトの名無しさん:2006/03/13(月) 20:34:21
アホ、時代はnetbeansだろw
960デフォルトの名無しさん:2006/03/13(月) 20:43:38
netbeans(笑)
961デフォルトの名無しさん:2006/03/13(月) 20:45:39
>>960
んだと、こらぁ
IBMの奴隷なんかにゃ遅れは取らないぞ
962デフォルトの名無しさん:2006/03/13(月) 20:56:20
eclipse >>>>> netbeans(笑) = JBuilder ヾ(*´・∀・`*)ノキャッキャ
963デフォルトの名無しさん:2006/03/13(月) 20:57:55
>>962
netBeans >>>>>> eclipse = 秀丸
964デフォルトの名無しさん:2006/03/13(月) 20:58:29
秀丸suge-!
965デフォルトの名無しさん:2006/03/13(月) 21:23:49
>>962
俺の中ではEclipseもNetBeansもどっちも使えて,
もうJBuilderは眼中から消えてしまってる。

通常アプリ、web開発
Eclipse + WTP + Sysdeo Tomcat + JBoss-IDE > NetBeans > JBuilder > 秀丸
だが
Swing開発では
NetBeans > Eclipse + Visual Editor
になってる。これは確実。
あれだけEclipseを大絶賛していた俺もSwing開発に関しては
NetBeans最強としか言いようがない。

Eclipse3.1.2では他にCheckstyle, Findbugs, LaTeXプラグイン, DocJar, D言語プラグイン、
epic Perlプラグイン、PHPEclipse, Subclipse, Omondo EclipseUML,
Code Analysisプラグイン、CrossJ PropEditor, Mevenide, Maven workshop, m2eclipse,
Bytecode Outlineプラグイン, Wikiエディタ, CDT, RubyDT, Commons4E, Koders Search, SpringIDE,
Seasar2プラグイン、Struts IDE, QuantumDB, LDAPプラグイン、
などを全部入れて使っているが、設定ファイルが重たいのか段々重たくなってきた。
966デフォルトの名無しさん:2006/03/13(月) 21:25:13
>>959
NetBeans5標準プロファイラとEclipseプロファイラどっちが使える?

それからEclipseにはメトリクスプラグインというのがあるんだが
NetBeansにはある? あったら教えてくれい。
それからBytecode OutLineプラグインの存在も気になるところだ。

967デフォルトの名無しさん:2006/03/13(月) 21:39:28
>>966
ごめんね、パラメタの意味が分からなくてごめんね。
ボトルネック検出や、ガベコレ引き起こしてる奴の検出なら出来るよ。
処理時間はselfというのを見れば、メソッドそのものの処理時間が分かるから
メソッド呼び出しで合計されて、どこがネックかわからーんってことはない。
968デフォルトの名無しさん:2006/03/13(月) 21:55:44
「閉じられた2次元の図形の面積」って、図形で描くとどんなイメージなんですか?
969デフォルトの名無しさん:2006/03/13(月) 21:57:52
□でしょ、閉じてないのに面積求められるの?逆に
970デフォルトの名無しさん:2006/03/13(月) 22:02:07
閉じられた2次元の図形の面積 の検索結果 1 件中 1 - 1 件目 (0.39 秒)
http://next1.cc.it-hiroshima.ac.jp/JAVATEXT/node9.html

http://up00.hyperbit.info/up/trash-box/contents.jsp?file=20060313220140489.gif
971968:2006/03/13(月) 22:02:57
なんかソースを見ると
[√{(xの座標移動)^2+(yの座標移動)^2}]^2×π
になってるんだけど、これって円の面積じゃないの?
972デフォルトの名無しさん:2006/03/13(月) 22:06:12
ダウンロードを試みたところ、
>インストールパッケージを開くことができませんでした。
>パッケージが存在し、アクセスできることを確認してください。
>またはアプリケーションベンダに問い合わせ、このパッケージが有効な
>Windowsインストーラパッケージであることを確認してください
と出たのですが、どうすればいいのでしょうか?
973デフォルトの名無しさん:2006/03/13(月) 22:08:00
ダウソ板へ逝く
974デフォルトの名無しさん:2006/03/13(月) 22:09:13
ダウン板にjavaスレがなかったんです、どうぞよろしくお願いします
975デフォルトの名無しさん:2006/03/13(月) 22:10:08
インターネットオプションで一時ファイルを削除してダウソしなおせ
976デフォルトの名無しさん:2006/03/13(月) 22:14:42
>>975
今やってみたのですがそれでも出来ませんでした
977デフォルトの名無しさん:2006/03/13(月) 22:43:10
>>973-974

お前ら笑かすなw
978デフォルトの名無しさん:2006/03/13(月) 22:44:09
Norton Internet Securityなどの
セキュリティ対策ソフトだか
ファイアウォールソフトが働いてるんじゃないのか?
979デフォルトの名無しさん:2006/03/13(月) 22:48:04
Online 版を落としたなら Offline 版を落とす。Offline 版なら Online 版を落とす。
それでダメなら諦めて本屋で CD-ROM 付きのムックでも買ってくる。
980デフォルトの名無しさん:2006/03/13(月) 22:51:46
ググって調べてみたのですが、どうやらoffis2003というものをダウンロードしなければ
ならないようなんですが、そのためには
WINDOWSINSTALLER-KB893803-V2--1613DE28.pf
といファイルを開かなければならないのですが、このpfが開けません
どうしたらこのpfを開けるようになるでしょうか?
981デフォルトの名無しさん:2006/03/13(月) 22:54:17
\ヽ, ,、
_  `''|/ノ
\`ヽ、|
 \, V
    `L,,_
    |ヽ、)                ,、
   .|                   ヽYノ
   /                     r''ヽ、.|
  /        ,.. -──- .、    `ー-ヽ|ヮ
 .|      , ‐'´   __     `ヽ、  `| 
  |    / , ‐'"´       ``''‐、  \  |
  |   / /             \ ヽ |
  ヽ,  y'   /` ‐ 、    ,.. -'ヘ   ヽ. }ノ
   ヽ,'     /   /`,ゝ' ´     ヽ   Y.
.    i    ,'     { {        ヽ   `、
    l    ,イ─- 、.._ ヽ ,, _,.. -─:}   !
.    |  r‐i| ー=ェェ:ゝ ,.∠ィェェ=ー' |r 、.  l
   |  {ト」l|.      : | "    ``: |!トリ  |
.  │  ヽ、|      ;.」_      |'ソ    !
.  │     ヽ     r──ッ    /ノ    |
    |      lヽ    ̄ ̄     / イ    │
.    !    丶ヾヽ    ~   , ' ノ │   !
    ト.    ミ.ゝ ヽ.____./  /  l   /
    ヽ  ヽ           イ ,' / , '       ┼ヽ  -|r‐、. レ |
     \.             ノレ'/         d⌒) ./| _ノ  __ノ
982デフォルトの名無しさん:2006/03/13(月) 23:09:50
GoogleNewsのRSSをURLクラスで取得しようとすると「403」エラーになるのはなぜ?
例えば、
ttp://news.google.com/news?ned=us&topic=s&output=rss
983968:2006/03/13(月) 23:44:57
>>970の図形みたいに、どんな形であっても閉じた図形なら
>>968の式で求められるってことですか?
984968:2006/03/13(月) 23:45:28
訂正:>>970の式
985デフォルトの名無しさん:2006/03/14(火) 00:25:42
>>982
Googleは、適切なUser-Agentを設定していないと弾くようになってたと思う。
過去スレで、Googleにリクエスト送るHTTPクライアント自作してて上手くいかなかった、という話があって、
そのときはUser-Agentを設定して解決してたような覚えがある。
986デフォルトの名無しさん:2006/03/14(火) 01:04:53
>>875
なんか修二と彰みたいだ
987デフォルトの名無しさん:2006/03/14(火) 07:50:47
>>982
Googleさんは"Java"がお嫌いなのです。

HTTPでJavaの標準APIを用いてデータを取得すると、
標準では User-Agent が "Java〜" と成っています。

以前、別件で試行錯誤した際の記憶が曖昧なのですが…
"Java" から始まる User-Agent だと弾かれる、
という結論に達したと記憶しております。

でも、何故?と聞かれると困ってしまうのです。
988デフォルトの名無しさん:2006/03/14(火) 12:53:43
セッション管理に関して質問です。
HttpSessionBindingListenerインターフェースを実装したクラスを作って
sessionにsetAttributeしておくことでsession.invalidate()されたときに
valueUnboundに書いた特定の処理を実行させてます。

ユーザーが正規の方法でログアウトしてくれたときはsession.invalidate()が
行われるのですが、ユーザーがブラウザの閉じるボタンなどを押して終了した場合
いくらか時間がたつとvalueUnboundが呼ばれるのでしょうか?
観察してみたところ、タイムアウト設定時間後にvalueUnboundは呼ばれて無いようでした。

WebLogic Serverに関する説明だと、サーバのパトロール処理によってセッションが
無効化されると書いてありましたが、パトロール処理はTOMCAT等でも行われる処理
なのでしょうか?
http://www.atmarkit.co.jp/fjava/onepoint/weblogic/weblogic02_3.html
989デフォルトの名無しさん:2006/03/14(火) 12:58:03

タイムアウトでも呼ばれてたと思うけど?
990988:2006/03/14(火) 13:01:39
あ、書き忘れましたが本番環境がTOMCATで上記での手テストはOC4Jでやってます。
OC4Jが糞なんでしょうかねぇ…
991988:2006/03/14(火) 13:04:49
何度もすみません。ちなみに
タイムアウト時間経過後に
HttpSession session = request.getSession(false);
をやった場合はちゃんとvalueUnboundが呼ばれるようです。

問題なのはタイムアウト時間経過後 ”ほうっておいた”場合なんです。
992デフォルトの名無しさん:2006/03/14(火) 13:09:29
もう一度アクセスして初めてタイムアウトかどうかがわかるってこと?
993デフォルトの名無しさん:2006/03/14(火) 13:17:01
OC4J って調べてみたら軽量を売りにしてるみたいだからセッションリサイクルの
スレッド立ち上げてないのかもな。これから自宅鯖の Tomcat で試してみるから
ちょっと待ってな。出来ればその空いた手で次スレ立てといてくれ。
994988:2006/03/14(火) 13:17:44
>>992 そうです。 もうちょっと、ちゃんと調べてみたら タイムアウト時間経過後1分55秒後に
valueUnboundが呼ばれてました。この微妙な時差がOC4J特有の物なのか、一般的にそうなのか
気になります。 
995988:2006/03/14(火) 13:18:29
>>993 ありがとうございます。本当は僕がTOMCATで調べるべきですよね。すんません。
スレ立てますね。
996988:2006/03/14(火) 13:21:05
【初心者】Java質問・相談スレッド83【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1142309999/
997デフォルトの名無しさん:2006/03/14(火) 13:31:28
>>994
1分55秒じゃなくて同時処理しないとやばいっていう設計がやばい気がするけど。
998デフォルトの名無しさん:2006/03/14(火) 13:32:17
テスト用 JSP と出力結果。セッションタイムアウト10秒で正常動作。

>>994
一般的にそう。1分おきとか5分おきとかに全セッションを調べて、タイムアウトしてたら
無効化するスレッドがいる。だからタイムアウト時間きっちりには呼ばれないでタイム
ラグが発生する。

ソースと結果は次。
999デフォルトの名無しさん:2006/03/14(火) 13:33:26
インデントは面倒なので全角整形なし。Apache Tomcat/4.1.31
----------------------------------------------------
2006-03-14 13:26:49 jsp: valueBound()
2006-03-14 13:27:16 jsp: valueUnbound()
----------------------------------------------------
<%@ page language="java" session="true" %>
<HTML>
<BODY>
hello, world<BR>
<%
if(session.isNew()){
session.setAttribute("hoge", new HttpSessionBindingListener(){
public void valueBound(HttpSessionBindingEvent event){
log("valueBound()");
}
public void valueUnbound(HttpSessionBindingEvent event){
log("valueUnbound()");
}
});
session.setMaxInactiveInterval(10);
out.write("new session is created.");
} else {
out.write("this session has be created before.");
}
%>
</BODY>
</HTML>
1000デフォルトの名無しさん:2006/03/14(火) 13:33:58
ついでに1000GET
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。