トップページ⇒tech
1001コメント321KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2006/02/25(土) 23:38:06
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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あたりで。
0002デフォルトの名無しさん2006/02/25(土) 23:41:50
2なら >>3 は派遣
0003デフォルトの名無しさん2006/02/26(日) 00:06:09
3 なら >>4 はイナバウアー
0004デフォルトの名無しさん2006/02/26(日) 00:08:20
どうぞよろしく。
0005デフォルトの名無しさん2006/02/26(日) 03:04:10
5 なら >>6 は将来Javaでエロゲを作ってくれる
0006デフォルトの名無しさん2006/02/26(日) 03:07:20
class public test(){
   g.drawRect(20,20,40,40);
}
0007デフォルトの名無しさん2006/02/26(日) 11:11:14
swingでMenuを使っているものですが、教えてください!
MouseAdapterのmousePressedを使って、メニューの中にあるMenuItemをクリックしたのを
判断するには、どういった記述が正しいのですか?
if(e.getSource==item1){;}だと、item1のシンボルが見つからないとでます・・・
0008デフォルトの名無しさん2006/02/26(日) 11:14:45
ActionListener 使え
0009デフォルトの名無しさん2006/02/26(日) 11:19:58
MouseAdapterでは無理なのでしょうか?
0010デフォルトの名無しさん2006/02/26(日) 11:25:46
無理つうか、それじゃマウスでしか操作できなくなるだろが。
JMenuItem 一個ずつに ActionListener 仕掛けとけ。
0011デフォルトの名無しさん2006/02/26(日) 11:31:12
ActionListenerでactionPerformedを使ってメニューアイテムを操作する方法は
サイトを巡って見つけたので、分かるのですが。MouseAdapterを使って判断する仕方が
探すことができなくて、、、
0012デフォルトの名無しさん2006/02/26(日) 12:28:49
>>11
前提が間違ってる。
コンポーネントをマウスで操作したときにMouseListener(MouseAdapter)が必要になるわけではない。

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

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

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

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

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

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

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

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

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

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

 ‐ニ三ニ‐
0048デフォルトの名無しさん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つがあるのですが
下のほうはなんか関係があるのですか?

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

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

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

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

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

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


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

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

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

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

どうかよろしくお願いしますm(_ _)m
0113デフォルトの名無しさん2006/02/27(月) 01:07:24
つ ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Date.html
0114デフォルトの名無しさん2006/02/27(月) 01:48:33
>>112
CalendarのAPIにざっと目を通せば明らかだと思うんだが、
Calendar.MILLISECONDがある。

0115デフォルトの名無しさん2006/02/27(月) 01:54:46
awt やらない奴はぁ〜〜〜アウト(awt)!なんつって
0116デフォルトの名無しさん2006/02/27(月) 01:55:55
そうだそうだ、絶対にawtはやれ!
0117デフォルトの名無しさん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);
0118デフォルトの名無しさん2006/02/27(月) 02:13:55
>>113,114
レスありがとうございます!!

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

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

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

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







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

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

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

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


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

どなたか助けてください(>_<)
0122デフォルトの名無しさん2006/02/27(月) 02:40:46
助けたいけど、どんなソースを書いているのか分からんからダメぽ
0123デフォルトの名無しさん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);
}
}
0124デフォルトの名無しさん2006/02/27(月) 02:51:54
>>123
んでな、そのソースが「何の処理をする目的」かも分からんと
助言すら出来んのよ
0125デフォルトの名無しさん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());
}
}
0126デフォルトの名無しさん2006/02/27(月) 02:54:47
>>124
日時の範囲を指定して、データを取得するコードです。
上記の場合、
今日の3時から明日の5時までのすべてのHogeを取得して
hogesに格納します。
0127デフォルトの名無しさん2006/02/27(月) 02:55:01
Jakarta commons Lang のDateUtils.truncate使うか、そのソース参考にしてみ
0128デフォルトの名無しさん2006/02/27(月) 03:02:57
いちいち毎回setするのが面倒ならメソッドにわけろ。
それか分・秒・ミリ秒を無視するSimpleDateFormatで文字列化して、それをもう一度parseしろ。
0129デフォルトの名無しさん2006/02/27(月) 03:15:48
>>127,128
レスありがとうございます!
長々とお付き合い頂きありがとうございます。

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


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

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

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

Dateの存在意義って、、、!?
0130デフォルトの名無しさん2006/02/27(月) 03:21:19
そもそも、hogeについて分からんチンな俺は助言すら出来ないのよ
ゴメソ OTL せめて hage ならカツラを勧めてやるのだが
0131デフォルトの名無しさん2006/02/27(月) 04:42:37
>>129
Date の一行目を見よう。
ちなみに英語の Calendar に対応する日本語は暦である。
0132デフォルトの名無しさん2006/02/27(月) 05:00:48
マルチスレッドの話であるクラスにsynchronizedなメソッドが複数あった場合
あるスレッドがそのメソッドを実行中は他のスレッドは他の
synchronizedなメソッドを実行することは出来ますか?
分かりづらくてすみません。
一つのクラスの複数のsynchronizedなメソッドは同時に
ロックがかかるのかなと思ったんですがどうなんでしょうか?
0133デフォルトの名無しさん2006/02/27(月) 05:14:21
>>132
コレで理解できるはず。
http://www.y-adagio.com/public/standards/tr_javalang/8.doc.htm#55408
0134デフォルトの名無しさん2006/02/27(月) 11:30:19
x=0〜700,y=180〜600の間で画像をランダムに表示させるにはどうしたらいい
ですか?randomをつかってもうまくいきません。
0135デフォルトの名無しさん2006/02/27(月) 11:41:49
意味が分からんし、どううまくいかないかも分からん
0136デフォルトの名無しさん2006/02/27(月) 11:47:20
>>134
(int) (random() * 700)
(int) (random() * 420) + 180
0137デフォルトの名無しさん2006/02/27(月) 12:05:36
Vectorの使い方がよくわからないので質問したいのですが、
ArrayListに追加した内容をVector配列に追加したいのですが普通にaddじゃで機内みたいなんですけど
どのようにしたらいいのでしょうか?
0138デフォルトの名無しさん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に入れなおすのかが意図不明。
もしかしたら、もっとすっきりしたコードになるかもよ。
0139デフォルトの名無しさん2006/02/27(月) 12:31:12
すいません、教えてください!
javaで作ったファイルを、exeファイル等で起動することはできませんか?
よければやり方を教えていただけませんか?
0140デフォルトの名無しさん2006/02/27(月) 12:33:22
>>139
JNI
0141デフォルトの名無しさん2006/02/27(月) 12:33:34
C/C++なら
system("java hoge");
とか
0142デフォルトの名無しさん2006/02/27(月) 12:45:27
>>139
前スレでも似たようなのあったな。
VMあるという前提なら、exewrapとかで良いかと。
0143デフォルトの名無しさん2006/02/27(月) 13:00:53
すいません質問です。
String型の配列の、"配列の長さ"を調べる方法ってありますか?
String.length()じゃなくて、 new String[n]; のnを調べる方法です。
0144デフォルトの名無しさん2006/02/27(月) 13:01:55
String[] array = new String[n];
System.out.println(array.length);
0145デフォルトの名無しさん2006/02/27(月) 13:07:56
>>144
Σ(・Д・;三・д・)

インデックス指定じゃなくて、配列の元からlength()かけると出るんですか。
ありがとうございます。
0146デフォルトの名無しさん2006/02/27(月) 13:10:34
>>145
配列はオブジェクト扱いだから。Stringの配列に限りませんね。
0147デフォルトの名無しさん2006/02/27(月) 15:00:02
コンパイル後、
Could not create the Java virtual machine.
と出て実行できません。
助けてください。
お願いします。
0148デフォルトの名無しさん2006/02/27(月) 15:04:21
>>147
http://www.google.co.jp/search?q=Could+not+create+the+Java+virtual+machine.&num=100&hl=ja&c2coff=1&rls=GGLD,GGLD:2005-04,GGLD:en&lr=lang_ja&sa=X&oi=lrtip8
01491472006/02/27(月) 15:13:24
>>148
ググリましたがわからないので質問させていただきました。

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

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

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

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

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

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

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

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

0176デフォルトの名無しさん2006/02/27(月) 21:16:58
class または interface 宣言がなかとです
0177デフォルトの名無しさん2006/02/27(月) 21:31:02
>>175
波カッコ {} の対応を疑ってみよう
0178デフォルトの名無しさん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++;
}
}
0179デフォルトの名無しさん2006/02/27(月) 22:08:08
>>178
>下のファイルをそれぞれTest1, Test2で同時に起動した時に、

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

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

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

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

すまん間違えた。

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

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

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

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

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

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

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

かなりエロい人、教えてください。 jreは1.5.0_06 です。
0207デフォルトの名無しさん2006/02/28(火) 18:27:34
>>206
設定ファイルはどこにある?jar内?jarの外のフォルダ?
02082062006/02/28(火) 18:29:29
>>207
jar内です。
クラスパスのルート、パッケージ無しの場所に置いてます。
0209デフォルトの名無しさん2006/02/28(火) 18:48:02
そのクラスからの相対パスにして味噌
0210デフォルトの名無しさん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) に
委譲されます。 」

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

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

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

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

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

Java in the Box
http://www.javainthebox.net/
0229デフォルトの名無しさん2006/03/01(水) 00:39:12
>>228
すごくよさそうですね。
じっくり見てみます。ありがとうございます。
0230デフォルトの名無しさん2006/03/01(水) 02:43:56
# ひとりごと
# 最近質問したきり帰ってこない人が居ますが
# 解決したのなら、その旨、書いていただければ
# その症状で困ってる他の人も嬉しくなります。
# 回答側の人にとっても、別のところでまた役に立つかもしれません
0231デフォルトの名無しさん2006/03/01(水) 02:52:58
遅くなりましたが解決しました。
本当にありがとうございました。
0232デフォルトの名無しさん2006/03/01(水) 03:02:23
俺も解決しました。
本当にありがとうございました。
0233デフォルトの名無しさん2006/03/01(水) 03:04:17
おかげで体も引き締まり、女の子にもモテモテです。
ギャンブル運にも恵まれて、今ではちょっとした小金持ちw
本当にありがとうございました。
0234デフォルトの名無しさん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の中身を上書きせずに改行して表示したいのですがどのようにすればよいのでしょうか?
0235デフォルトの名無しさん2006/03/01(水) 12:56:51
System.out.printlnメソッドを使えば、勝手に改行される。
System.out.printに変えてみるんだ。
0236デフォルトの名無しさん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);
0237デフォルトの名無しさん2006/03/01(水) 13:16:51
心の中でIterator、ListIteratorと叫ぶ俺がいる。や、別にいいんだけどね。
0238 2006/03/01(水) 13:37:40
同じコンピュータ上の(同じJavaVM上の)二つの違う種類のJavaプログラムが通信しあう手段はありませんか?
二つとも自分が作るプログラムです。一方が起動してなかったら起動して、起動してたらそれを使う。そしてデータを渡したり、そのためにメソッドを呼び出したりしたいんです。
0239デフォルトの名無しさん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

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

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

for(int x=0;x<1;x++)
{
System.out.println(v.lastElement());
}
0242デフォルトの名無しさん2006/03/01(水) 13:59:50
>>241
それ、forの意味はあるのか?
0243デフォルトの名無しさん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());
02442392006/03/01(水) 14:20:06
>>243
えっとですね、改行して出したかったので自分なりにはこれで大丈夫かなって思ってたんです。
0245デフォルトの名無しさん2006/03/01(水) 14:22:25
改行とvectorはまったく持って関係ないYO
0246デフォルトの名無しさんNGNG
独習JAVA第3版の317ページ、問2のことで質問があります。
答えのソースを実行しても、Stackクラスを利用することができません。
ほかに何か設定が必要なのでしょうか?
コンパイラはEclipseのバージョン: 3.1.1で、
JDKは1.5.0_06です。
よろしくお願いします。
02472392006/03/01(水) 14:26:00
すいません説明不足で。

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

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

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


      完


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

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

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

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

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

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

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

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

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

import java.util.Stack;


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

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

そんなことはございません。
0291デフォルトの名無しさん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か。
0292デフォルトの名無しさん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)で
エラーと表示され、必ずとまってしまいます。
上記ファイルは解凍してみると問題なく終了します。

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

awt.*;
awt.event.*;

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

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

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

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

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

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

今気づいたんですが、スレ違いでしょうか
0305デフォルトの名無しさん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());
}
}
0306デフォルトの名無しさん2006/03/02(木) 08:56:02
>>305
Integerのメソッドを調べる
0307デフォルトの名無しさん2006/03/02(木) 09:54:14
String strText = text.getText(); //Stringのデータを取得
int nText = Integer.parseInt(strText ) //intに型変換
0308デフォルトの名無しさん2006/03/02(木) 11:14:10
すんません。

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

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

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

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

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

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

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

問題文データが、改行、スペース、カンマ等を含む文字列なのです。
DBで検討してみます。すんません。
0314 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";
0315デフォルトの名無しさん2006/03/02(木) 12:25:44
あんまし長いスペースじゃなければこんなのふうにもできる
String SPACEPOOL = " ";
int spaceindent = 5;
String aa = SPACEPOOL.substring(0,spaceindent)+"空白"+spaceindent+"個";
out.println(aa);
0316デフォルトの名無しさん2006/03/02(木) 12:26:46
圧縮されちゃったけど
SPACEPOOLは20個ぐらいの固定空白ね。
0317デフォルトの名無しさん2006/03/02(木) 12:29:27
>>314
目的による。

例えば 5.0 以降で右詰め表示や左詰め表示のための
埋め草にしたいのであれば System.out.printf() 使えば良い。
0318デフォルトの名無しさん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();
}

こうすれば、一つのメソッドで全てを補える。
0319デフォルトの名無しさん2006/03/02(木) 13:09:57
スペースの付く位置が逆
0320デフォルトの名無しさん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;
}
0321デフォルトの名無しさん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;
}
0322デフォルトの名無しさん2006/03/02(木) 13:12:48
あぁ!もう!後は自分で考えろ!
0323デフォルトの名無しさん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);
}

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

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

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

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

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


--
オブジェクト指向プログラミングにおいて,異なるオブジェクトに対して,同じメッセージを送った場合,そのオブジェクトに合わせて,異なる処理が適切になされること。多相性。
0329デフォルトの名無しさん2006/03/02(木) 17:06:52
>>328
すまんが、元の用語を英語で書いてくれねーと解らん
03303282006/03/02(木) 17:12:15
ポリモフィ ズム
http://dictionary.goo.ne.jp/search.php?MT=polymorphism&kind=ej&mode=0
らしいです。
0331デフォルトの名無しさん2006/03/02(木) 17:14:06
質問です。

Javaで、システムの状態(メモリ使用量とCPU負荷、各タスクの経過時間)を
取得するにはどうしたらよいのでしょうか?
03323282006/03/02(木) 17:14:32
プログラム系で調べてると、polymophism って書いてあるんでが…
”r”がないんです。
                     
0333デフォルトの名無しさん2006/03/02(木) 17:20:24
専門用語はせめてウキペディアとかで↓
ttp://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0
0334デフォルトの名無しさん2006/03/02(木) 17:29:58
>328
辞書でも引けばいいじゃない。国語でも漢和でも。

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

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

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

6.0 からなら CPU負荷については
java.lang.management.ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage()
で取れる事になってる。自分のメモリ使用量についてなら Runtime で大雑把な情報取れるし、
5.0 以降にある MXBean 使えばもうちっと詳しい情報が取れる。
03363312006/03/02(木) 21:19:39
>>335
まさに求めていた情報です。今回のプロジェクトはJava5なので、渡りに船で
す。大変ありがとうございました。
03373312006/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/
0338デフォルトの名無しさん2006/03/02(木) 21:46:56
>334
>オブジェクトというのは、一つのクラスからも多くの「態」が生まれうる。
>それを多態性と呼ぶんでしょ。
同一クラスから複数のインスタンスができることを「多態性」っていうんだっけ?
俺は継承関係のことを言ってるんだと思ってたんだけど。。
Student is a Person.
Teacher is a Person.
生徒も先生も同じ人ですよ、と。
0339デフォルトの名無しさん2006/03/02(木) 22:24:01
Stringニ格納されている文字列で指定した文字列よりも右側をすべて削除して再取得する場合
どうすればいいのでしょうか?

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

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

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

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

誰か助けてください
0346デフォルトの名無しさん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"
/>

どーしたら、このエラーなくなるんかしら、これが正解ってやつ教えてほっしーっす。
0347デフォルトの名無しさん2006/03/02(木) 23:34:41
>>346
Tomcat5系でも、5.0.xと5.5.xではコンテキスト記述子の書き方が違うらしい。

5.0.x
ttp://tomcat.apache.org/tomcat-5.0-doc/jndi-datasource-examples-howto.html#PostgreSQL

5.5.x
ttp://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html#PostgreSQL
0348デフォルトの名無しさん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]の値ってどうなっているんですかね・・・?
0349デフォルトの名無しさん2006/03/02(木) 23:39:43
>>348
Java言語仕様に従った初期値が入る
0350デフォルトの名無しさん2006/03/02(木) 23:40:38
>>348
null
何のオブジェクトも参照していない。
0351デフォルトの名無しさん2006/03/02(木) 23:41:31
>>348
つ System.out.println(test[2]);

どうなってるって、何が知りたいんだか…
0352デフォルトの名無しさん2006/03/02(木) 23:43:05
>>345
これは針が見えている釣りなのかしら?
0353デフォルトの名無しさん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 とする。
03543482006/03/02(木) 23:52:02
解答が迅速で且つ、とてもよく分かりました。
0355デフォルトの名無しさん2006/03/03(金) 00:05:45
>>339

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

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

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

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

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

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

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

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

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


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

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

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

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

0391デフォルトの名無しさん2006/03/03(金) 17:31:16
Javaソースからオブジェクト図(インスタンス図)を生成するツールってありますか?
0392デフォルトの名無しさん2006/03/03(金) 17:34:00
>>391
Judeで出来なかったっけ?
0393デフォルトの名無しさん2006/03/03(金) 17:51:37
>>392
いや、クラス図は作ってくれるけどオブジェクト図は無理。
オブジェクト図は実行時の動的な側面を持つものなので、
UMLツールで生成するのは無理じゃね?
プロファイリングツールの出番だと思う。
0394デフォルトの名無しさん2006/03/03(金) 17:57:24
JBuilderのプロファイラで見たことあるかも
0395デフォルトの名無しさん2006/03/03(金) 18:01:57
便乗質問。
ソースからUMLのシーケンス図を生成できるフリーのツールってありますか?
0396デフォルトの名無しさん2006/03/03(金) 18:21:08
ポストインクリメントとプリインクリメントの違いを教えてください!
03973912006/03/03(金) 18:32:09
thanksです。プロファイラの情報漁ってみます
0398デフォルトの名無しさん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);
0399デフォルトの名無しさん2006/03/03(金) 19:26:17
すみません、質問です!
JListを使っているのですが、リストに入れた文字の大きさを変えるには
どうすればいいでしょうか?
modelもJListと一緒に使っています・・・
0400デフォルトの名無しさん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です。

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

0401デフォルトの名無しさん2006/03/03(金) 21:30:54
J2EE以外でデータベースアクセスでトランザクション処理を
やってくれるようなフレームワークはありませんか。
0402デフォルトの名無しさん2006/03/03(金) 21:33:52
>>339
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/JList.html
JList#setCellRenderer()が使えるよ。
04034022006/03/03(金) 21:35:08
間違えた。
>>402は>>399へのレス。

>>401
jtomとか。
0404デフォルトの名無しさん2006/03/03(金) 21:36:05
× >>339
○ >>399
04054042006/03/03(金) 21:36:41
おおすまん。
気づいておったか。
0406デフォルトの名無しさん2006/03/03(金) 21:39:40
>>403
トンクス!
だがものすごくこれに関する資料が少ないなw
0407デフォルトの名無しさん2006/03/03(金) 22:30:11
ちょっとお聞きしたいのですが、
Dialogの例外処理ってどうしたらよいのでしょうか?
0408デフォルトの名無しさん2006/03/03(金) 22:45:12
終了させてしまえ
0409デフォルトの名無しさん2006/03/03(金) 22:47:25
>>407
Dialog で例外処理が必要になるプログラムを作らない。
0410デフォルトの名無しさん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);
}
}
}
}
04114102006/03/03(金) 23:47:18
「ここはこうした方が・・・」「これは違う」といった発見、
ご指摘があれば宜しくお願い申します。上のソースでは、うまく
改行されずに見にくくなってしまい、申し訳ありません。
0412デフォルトの名無しさん2006/03/03(金) 23:53:57
宿題スレに池
0413デフォルトの名無しさん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 で
終りにさせろ。

以上。

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

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

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

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

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

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

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

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

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

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

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

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

配列を宣言する時に私はString lpStr[];と記述しています。
しかし幾多の参考書や入門サイトではString[] lpStr;とも宣言しています。
どちらも意味的には同じですよね
0427デフォルトの名無しさん2006/03/04(土) 03:46:48
>>426
過去ログに出てたなぁ、というか俺が質問した内容でもあるんだがw
String[] lpStr; の方が一般的らしいよ
変数の方に[]をつけるのはCの名残みたいなもんとか
0428デフォルトの名無しさん2006/03/04(土) 03:55:06
そうですか
デファクトスタンダードに則って配列はString[] 〜と宣言していく事にします。
ありがとうございました
0429デフォルトの名無しさん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ではこの変数の宣言と初期化作業の順番というのは厳密に定められているのですか?
もし定められてなければコンストラクタで初期化作業をしなくてはならないので・・
0430デフォルトの名無しさん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)。
0431デフォルトの名無しさん2006/03/04(土) 04:52:27
>>430
日本語の言語規定もしっかりあるのですね
今一度しっかり読んできます
0432デフォルトの名無しさん2006/03/04(土) 08:11:00
>>429
ちょいとごめんなさいね。
   ( ・∀・)   | | ガッ
  と    )    | |
    Y /ノ    人
     / )    <  >__Λ∩
   _/し' //. V`Д´)/
  (_フ彡        /  
0433デフォルトの名無しさん2006/03/04(土) 08:49:01
EJB3.0の情報ってネットにめっちゃ少なくない?
いい本ある?
0434デフォルトの名無しさん2006/03/04(土) 08:51:46
JFileChooserの開くボタンや取消しボタンをカスタマイズするために、
それぞれのボタンのJButtonオブジェクトを取得したいのですが、
どう取得するのが普通でしょうか。

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

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

そのとき

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

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

そうでないなら ObjectInputStream#resolveClass(ObjectStreamClass) を上書きして
外部jarを読み込んだクラスローダを使って自力でクラスを解決してやればできるはず。
0438デフォルトの名無しさん2006/03/04(土) 13:32:24
>>437
Thank you!
0439デフォルトの名無しさん2006/03/04(土) 13:32:59
>>436
クラスパスが通って無いのに、最初のインスタンスを
どうやって生成したのだろう…
0440デフォルトの名無しさん2006/03/04(土) 13:37:26
>>439
URLClassLoaderです。
0441デフォルトの名無しさん2006/03/04(土) 13:54:03
>>440
なるほど。それで >>437 なのね。
0442デフォルトの名無しさん2006/03/04(土) 18:04:03
8文字の乱数文字列を表示させたいのですが、どうすればよいのでしょうか?
0443デフォルトの名無しさん2006/03/04(土) 18:06:34
>>442
8文字のどんなランダム文字列なのかを説明しなさいってばよ。
半角英数字でやるのと2バイト文字の全てとでは手法も違うよ
0444デフォルトの名無しさん2006/03/04(土) 18:08:33
表示させたいものは大文字小文字を問わない半角英数字です。
0445デフォルトの名無しさん2006/03/04(土) 18:40:15
>>434
せめて getComponent(2) とかにすれば?
0446デフォルトの名無しさん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);
}
0447デフォルトの名無しさん2006/03/04(土) 18:59:03
変数名の一部に変数名を使いたいのですが、可能でしょうか?

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

変数名の一部に変数名を使うというのは
例えばこれで、test_1、test_2・・・が10個宣言されるようなイメージです。
例えばの話です。
0448デフォルトの名無しさん2006/03/04(土) 19:08:45
>>447
そういう場合は配列がいいかと
String[] testArray = new String[10];
for(int i = 0; i < 10; ++i)
{
testArray[i] = "ぬるぽ";
}
0449デフォルトの名無しさん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"));
0450デフォルトの名無しさん2006/03/04(土) 19:35:18
>>445
getComponent()の引数なのですが、私の環境に
合わせて決め打ちとかしてしまってよいものなのでしょうか。
0451デフォルトの名無しさん2006/03/04(土) 19:39:18
べつにボタンのテキストを見て検索とかでも問題はないでしょ
コンストラクタのなかで特定しちゃいなよ
0452デフォルトの名無しさん2006/03/04(土) 20:32:49
>>451
その方法はちょっと考えたのですが、ボタンのテキストって
環境依存とかしないものなのでしょうか。
0453デフォルトの名無しさん2006/03/04(土) 21:34:21
>>451
setApproveButtonTextなんかでテキストを変えられるようだが。
0454デフォルトの名無しさん2006/03/04(土) 22:21:28
>>448
>>432
0455デフォルトの名無しさん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文字を表現できないから。
0456デフォルトの名無しさん2006/03/05(日) 00:04:55
>>444
半角文字? そりゃいかんな。Unicode 2.0 にはたしかに HALFWIDTH の
文字はある。あるのだがどちらにしろ環境依存だ。画面にどういった幅で
出るかは予想できない。
0457デフォルトの名無しさん2006/03/05(日) 00:08:14
>>455
お前それ自分で試した?
0458デフォルトの名無しさん2006/03/05(日) 00:09:35
半角英数字のどこが環境依存なんだろう・・・
0459デフォルトの名無しさん2006/03/05(日) 00:17:19
MS WORD で表示すると A も A も同じ幅。
0460デフォルトの名無しさん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)
0461デフォルトの名無しさん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("キーイベント");
 }
0462デフォルトの名無しさん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 );
}
});
//省略
}
}
0463デフォルトの名無しさん2006/03/05(日) 01:22:09
>>462
正解は「Threadに投げる」です。
0464デフォルトの名無しさん2006/03/05(日) 01:26:41
>>463
ありがとうございます。できそうです。
0465デフォルトの名無しさん2006/03/05(日) 02:04:46
>>461
×KeyPressed
○keyPressed
04664612006/03/05(日) 02:22:57
>>465
指摘どうもです。

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

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

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

クライアントからクラスBのメソッドを呼び出し、Socket作成してクラスCと通信。
サーバ(クラスC)内で要求待ち無限ループを行い、要求があれば処理して結果を返却する。
0480デフォルトの名無しさん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の特性?
0481デフォルトの名無しさん2006/03/05(日) 14:22:55
妖精の属性
0482デフォルトの名無しさん2006/03/05(日) 14:24:00
>>480
Graphicsのせいだけど
そんなに描画するならBufferedImageのレイヤーにしたほうがいいよ
JLabelをクリックさせたりするなら別かもしれんけど

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

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

Notice: We're Offline for System Upgrades

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

new Vector<Rectangle>();

を、Vector.classとRectangle.classと
Class.newInstance()を使って書くとどうなりますか?
0491デフォルトの名無しさん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);
0492デフォルトの名無しさん2006/03/05(日) 21:17:54
BitSet に intersects ってメソッドがあるみたいだが
0493デフォルトの名無しさん2006/03/05(日) 21:21:16
それは触れてればOKってだけのもの
1101000
0001000
でtrueになるはず
0494デフォルトの名無しさん2006/03/05(日) 22:32:07
>>491
その馬鹿でかいbit配列は何ビットくらいなの?
0495デフォルトの名無しさん2006/03/05(日) 22:38:32
255bit程です。
0496デフォルトの名無しさん2006/03/05(日) 22:41:41
255bitって、扱い方間違ってねーか?w
0497デフォルトの名無しさん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を宣言するまでも無く、スレッドセーフになってしまうものなのでしょうか?
0498デフォルトの名無しさん2006/03/05(日) 22:48:44
>>497
1.
>  int n = count;
>  何らかの処理;
>  count = n + 1;
2.
>   ++count;

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

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

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

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

>>500
実装依存だと思うので、明示的に同期処理をしたほうが無難だと思います。
# 2の演算がアトミックであれば、問題ない
0508デフォルトの名無しさん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
0509デフォルトの名無しさん2006/03/06(月) 00:22:47
>>507

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

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

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

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

これ以上は本格的にビット演算学ばないと向上しなさそうですね
ともあれありがとうございました。
0511デフォルトの名無しさん2006/03/06(月) 00:45:50
>>505
  class A extends Thread {
または
  class A implements Runnable {
としておいて
  A a = new A();
  a.run();
じゃだめなの?
0512デフォルトの名無しさん2006/03/06(月) 00:49:09
>>491
return b.and(a).xor(a).isEmpty();
とどっちが速い?
0513デフォルトの名無しさん2006/03/06(月) 00:51:43
>>509
おせっかいな細かい訂正を。
volatileは、演算子ではなく、(フィールド)修飾子です。以上。
0514デフォルトの名無しさん2006/03/06(月) 01:02:25
>>512
xorを2度すると元に戻るという法則でcloneを避けたほうが効率的
ビット演算そのものより、newをさせない手法のが結果的に高速
0515デフォルトの名無しさん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 じゃないクマー
0516デフォルトの名無しさん2006/03/06(月) 02:43:34
>>515
publicのままだと、他のクラスからcountを書き換えることができるから、
まずいかもしれないということでしょうか。

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

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

そうすると、、、

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

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

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

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

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

可視性は、読み取り側も同期しないといけないこと。
ここで、同じオブジェクトのロックを取得することが重要。
static メソッドの synchronized は
そのクラスオブジェクトのロックを取得するシンタックスシュガー
0520デフォルトの名無しさん2006/03/06(月) 03:00:55
>>519
>簡単にフォーリングっぽく言うと、
フィーリングだ フォーリングってなんだorz もう寝る
0521デフォルトの名無しさん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();  // カウンタ値を取得する。
0522デフォルトの名無しさん2006/03/06(月) 03:48:40
>>521
long でなくとも、countUp および getValue は synchronized にし、
フィールドは直接触れないようにするべき。

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

要は、

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

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

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

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

インデックス作成対象のファイルがSJIS以外の場合の検索って、
どうすんだろ・・・?
05345332006/03/06(月) 17:21:08
自己解決した。
0535デフォルトの名無しさん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)
0536デフォルトの名無しさん2006/03/06(月) 20:34:07
そんな仕様だったかなあ?
とりあえず '?' を入力してみな。ヘルプ出ると思うから。
05375352006/03/06(月) 20:45:01
?を入力しても何も起こりません。
vを押すとhs_err_pidXXX.txt(XXXは毎回異なる数字)というファイルがデスクトップに作成されます。
ブラウザ起動から1度もAppletを使用していないときにコンソールでvを押すと強制終了するみたいです。
0538デフォルトの名無しさん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で使えるクラスに差があるのでしょうか?
あと、両方で動作するようにするにはどうすればいいのでしょうか?
0539デフォルトの名無しさん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コマンドの引数に
つけてください。
0540デフォルトの名無しさん2006/03/06(月) 21:18:34
>>537
あれ? 違ったかな? 'h' かも知れない。
ていうか、ヘルプを出すには何かを押せっていうのが Java Console の上の方に出てない?
0541デフォルトの名無しさん2006/03/06(月) 21:29:16
配列作るとき、毎回ArrayListとか使ってるんだけど普通だよね?
[]←これ全然使わない。
後々何か追加したい時があるかもしれないってどうしても思うでしょ。
よっぽど変更は無いって自信がない限り []←これ使わないでしょみんな?
0542デフォルトの名無しさん2006/03/06(月) 21:32:04
>>541
ものによるな。
0543デフォルトの名無しさん2006/03/06(月) 21:33:35
俺は追加があると確定してるもの以外は配列派。
0544デフォルトの名無しさん2006/03/06(月) 21:35:56
たしかにものによるな
ゲームとかだとCollectionはHashMapくらいしか使わなくなる
逆にアプリとかだとプリミティブはintとbooleanくらいしか使わない
0545デフォルトの名無しさん2006/03/06(月) 21:40:57
>>543
おれも。
ArrayListも無理やり[]にして回す。
0546デフォルトの名無しさん2006/03/06(月) 21:43:55
>>545
何の必要があって?
0547デフォルトの名無しさん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の処理〜
}
}
0548デフォルトの名無しさん2006/03/06(月) 21:55:14
>>547
これの意味を冷静に考えてみてくれたまえ。

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

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

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

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

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


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

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

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

要するに abstract factory を作りたいに違いない
0561デフォルトの名無しさん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 するコストの方が高く付くのでやらない方がいいと思う)。
0562デフォルトの名無しさん2006/03/07(火) 08:13:40
サーブレットのセッション管理に関する質問です。
あるサーブレットで次の方法でセッションの有無を
確かめてました。
if(request.getSession(false)==null)
これでnullの場合タイムアウトの画面に
遷移させるという風にしてたのですが…
何も無い状態からこのサーブレットを呼ぶと
タイムアウト画面に遷移してくれるのですが、
最初にJSPの別画面を表示させた後、POSTメソッド等で
このサーブレットを実行するとsessionオブジェクトが
帰ってきてしまいます。

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


0563デフォルトの名無しさん2006/03/07(火) 08:17:17
<%@ page language="java" ... session="false" %>
0564デフォルトの名無しさん2006/03/07(火) 08:31:12
>>563 ありがとうございます、ぐぐって見たらそれらしい情報がみつかりました。
http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp06.html
0565デフォルトの名無しさん2006/03/07(火) 10:06:52
ものすっごい初心者な質問で申し訳ないですが
Eqlips3.0.2に対応したストラッツのバージョンが判らなくて困っています
どなたかご教授いただけないでしょうか?
0566デフォルトの名無しさん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>
05675662006/03/07(火) 10:20:05
ググッたら自己解決しました。ブラウザのキャッシュが残っていたためにおきた現象でした。
0568デフォルトの名無しさん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でも使えるよ。
0569デフォルトの名無しさん2006/03/07(火) 10:29:08
>>568
ありがとうございます、やってみます。
0570デフォルトの名無しさん2006/03/07(火) 11:55:49
ServletのAPI(JAVADOC)の日本語版ってどこでダウンロードできますか?
とりあえず↓を読んでいるんですが…
http://www.ingrid.org/jajakarta/servletapi/servletapi-4.0/docs-ja/index.html
0571デフォルトの名無しさん2006/03/07(火) 12:15:28
J2EE の日本語版 API リファレンス落とせ
0572デフォルトの名無しさん2006/03/07(火) 15:21:14
配列って何のために必要なんでしょうか?まだJavaに少し触れただけですがただ見た目の問題だけのような…
進んでいくと分かるようになりますか?
0573デフォルトの名無しさん2006/03/07(火) 15:22:32
分らない人間には全く分らないし
分る人間には分る
0574デフォルトの名無しさん2006/03/07(火) 15:24:52
メソッド間のパラメータの受け渡し(つまり引数な)に配列は必須。
いちいちコレクションに詰めるわけにもいかんしな。
0575デフォルトの名無しさん2006/03/07(火) 15:36:33
>>572
同じ意味の値の集合を扱いたい場合に必要となる (順序に意味がある
場合にも使える)。もちろん配列クラスを使わないで ArrayList や Vector
クラスでやってもいいが、Java の場合は配列が言語レベルでサポート
されているため無駄が少ない。

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

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

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

不正なインデックスを使って配列がアクセスされたことを示すためにスローされます。
つまり、インデックスが負または、配列のサイズ以上の場合です。
0585デフォルトの名無しさん2006/03/07(火) 17:10:20
>>582
java.lang.ArrayIndexOutOfBoundsException
↓
ArrayIndexOutOfBoundsException
↓
Array Index Out Of Bounds Exception
↓
array 配列
index インデックス(添字)
out of bounds 範囲外
exception 例外
0586デフォルトの名無しさん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){}

/*
05875862006/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");
05885862006/03/07(火) 17:44:25
ArrayListと配列を比べた場合、
圧倒的に配列が速いのは知っていたのですが、
そのため、わざわざtoArrayして回していたのです。

ためしに上記コードを実行してみたら、
ArrayListとtoArrayがほとんど同じ速度です・・・・
皆さんのPCでも同じような結果でしょうか?
05895352006/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
0590デフォルトの名無しさん2006/03/07(火) 18:02:35
>>586さん
JDKのバージョンが抜けてますよ?
05915892006/03/07(火) 18:03:36
自分の名前間違えた589≠535
05925862006/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 です。
0593デフォルトの名無しさん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の速度」が問題になるようなの極々わずか。
0594デフォルトの名無しさん2006/03/07(火) 21:59:34
ArrayList って名の通り、中身は配列だからな。
この場合もinitialSize設定しとけば、差はかなり縮まるはず。
0595デフォルトの名無しさん2006/03/07(火) 22:07:09
rockitってJBossのとこのJREだっけ?はえぇなおい。
インデクサや関数呼び出しのオーバーヘッドの差かな?
0596デフォルトの名無しさん2006/03/07(火) 22:21:48
>>595
jrockitはWebLogicのBEAのやつなん。
速度はすごく速い。
でも、地味にバグを見つけてしまった・・・・
0597デフォルトの名無しさん2006/03/07(火) 23:06:12
ArrayListが遅かったのはキャストのコストのせいじゃ?
最近のVMだとそのへんの最適化が進んでるって話だし。
0598デフォルトの名無しさん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;
}
0599デフォルトの名無しさん2006/03/07(火) 23:24:21
よくなくはないとおもうが、無意味なコードじゃね?
↓これでも同じ動作だろ?

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

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

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

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

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

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

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

返って>>598の場合は、「戻り値を明確に」するという目的はあるものの、
その目的とソースが一致していない。
目的を達成するためにそのように記述する必然性が全く無い。
0608デフォルトの名無しさん2006/03/08(水) 12:44:48
JTAを使ってトランザクション管理を行いたいのですが、
ドライバーマネージャーを使った接続でもJTAを適応できるでしょうか?
JTAに関する説明のサイトを見るとほとんどがデータソースを使っているので…
0609デフォルトの名無しさん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
0610デフォルトの名無しさん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とかを放り込んでみたら、
ちゃんとネストしてログ出力されたス。
名前通り、設定もシンプル。
0611デフォルトの名無しさん2006/03/08(水) 16:07:03
なんかJavaの解説書とか解説サイトって
専門用語ばかり使ってて、お前ら初心者がプログラミングなんかやるのは100年早ぇんだよ
ってな空気プンプン漂ってない?
分かりやすく理解できるような参考書って無いよね
0612デフォルトの名無しさん2006/03/08(水) 16:09:22
2chと同じ
バカが近寄らないようにしてるだけ

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

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

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

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

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

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

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

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

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


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

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

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

スゴスwwwwwwww
0644デフォルトの名無しさん2006/03/09(木) 12:14:15
>>642
うちのテストも似たようなものです。スマートじゃなくてもいいんじゃない?
直接関連する部分は広くない(例外あげりゃいい)し、そういうところは使いまわしてるし。
0645デフォルトの名無しさん2006/03/09(木) 12:39:02
任意の位置で SQLException 投げられる JDBC ドライバ作る。回帰テスト自動で
出来なきゃちょっと辛いでしょ。大体いつも設定ファイルの記述でデータソースと
JDBC ドライバ直呼びと選択できるよう設計するし。
06466372006/03/09(木) 13:04:56
おれはPostgreSQLでしたorz
0647デフォルトの名無しさん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
{
;
}
}

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

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

例額処理⇒例外処理

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

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

JAVAの特徴の一つとして、よくマルチプラットフォームがあげられますが
それだった,NetmowrsoujaNpaidesukak fwfwqうえwwwwwwwwwd
0654デフォルトの名無しさん2006/03/09(木) 15:55:58
(#・∀・)カエレ!
0655デフォルトの名無しさん2006/03/09(木) 15:58:30
なんでそういうことを言うんですか?
ここは質問Wofesuresfzyanaidenasdうえeeawwwwwwwww
0656名無し募集中。。。2006/03/09(木) 16:02:32
VIPPERはあふぉばっかりで困る
0657653,6552006/03/09(木) 16:08:25
すまん。仕事があまりにも暇で遊んでしまいました。
正直すまんかった。
今では反seiSiterwurwreうえwaawwweefr
0658デフォルトの名無しさん2006/03/09(木) 16:11:39
キーボード 壊れてますよ
0659デフォルトの名無しさん2006/03/09(木) 16:50:07
GyRCJEokcyRAJDMkTiU5JWwkTxsoQj8K
0660デフォルトの名無しさん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++)
この部分で何をやってるのかよく分からないのですが…
0661デフォルトの名無しさん2006/03/09(木) 22:16:30
Javaとは全く関係ない。数学的な話。
0662デフォルトの名無しさん2006/03/09(木) 23:16:09
本当はnumber/2 ではなくて √number で良いんだけどな
0663デフォルトの名無しさん2006/03/09(木) 23:18:43
numberそのままでもいいぞ
0664デフォルトの名無しさん2006/03/10(金) 00:25:17
動的にテキストファイルを作って、クライアントにダウンロードさせる
サンプルってどこかにないでしょうか?
0665デフォルトの名無しさん2006/03/10(金) 00:48:07
テキストファイルを何が作るのか
何からクライアントにダウンロードするのか

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

大抵は、IEEEのなんたらに「準拠」しているっぽい?が、
あまり、「だいたい上手く動く」というアプリケーションは使いたくない。
0671デフォルトの名無しさん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じゃね?
0672デフォルトの名無しさん2006/03/10(金) 10:29:44
継承と委譲について下記のサイトで勉強しているのですが
http://www.nurs.or.jp/~sug/soft/java/java32.htm

文中の…

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

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

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

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

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

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

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

この場合、Tabemonoが基底クラスとなるわけだ。
0677デフォルトの名無しさん2006/03/10(金) 13:40:48
Javaでは、switchで、あるcaseから他のcaseに
フォールスルーを使わずに移ることはできないのでしょうか?
0678デフォルトの名無しさん2006/03/10(金) 14:26:45
>>677
無理。 C# だと goto できるけど。
0679デフォルトの名無しさん2006/03/10(金) 15:48:23
メソッドって全部覚えなきゃならないんですか?
0680デフォルトの名無しさん2006/03/10(金) 15:54:57
うん。プロのPGなら全部覚えてて当たり前
0681デフォルトの名無しさん2006/03/10(金) 16:01:22
世界中に何億メソッドあると思ってるんだ
0682デフォルトの名無しさん2006/03/10(金) 16:11:06
え?おまえ覚えてないの?まじで?
0683デフォルトの名無しさん2006/03/10(金) 17:58:42
APIを見て理解出来れば十分でないの?
って釣られた?
0684デフォルトの名無しさん2006/03/10(金) 18:12:39
1.2 とか 1.4 で追加されたパッケージで未だに無縁の機能がたくさんあるなぁ。
律儀に java.beans.context 使ってるフレームワークとか見たことないんだが。
0685デフォルトの名無しさん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);
    }
  }
}
0686685 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();
0687デフォルトの名無しさん2006/03/10(金) 18:18:11
>>685
Toolkit.createImage() には色々な引数を取るやつが…
0688デフォルトの名無しさん2006/03/10(金) 18:19:57
非同期にしたけりゃスレッドが…
0689デフォルトの名無しさん2006/03/10(金) 18:20:25
>>685
独自プロトコルでやりたいなら非同期ロードを自作するより URLStreamHanderFactory を
自作するとかの方が良いかも。どっちにしても大変だけど。
06906852006/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 的な
非同期はサポートしてないんでしょうか。
0691デフォルトの名無しさん2006/03/10(金) 21:44:13
>>672
>アクセスを禁止したい基底クラスのメソッドは、
>「委譲」されたクラスで定義しなければ、呼び出されようがないのである。

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

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

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

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

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

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

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

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

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

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

0695デフォルトの名無しさん2006/03/10(金) 22:01:34
>>693
this.getClass().getName()
0696デフォルトの名無しさん2006/03/10(金) 22:04:48
>>693
this.getClass().getName()
0697デフォルトの名無しさん2006/03/10(金) 22:14:23
>>694
ありがとうございます!
0698デフォルトの名無しさん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倍とかして小数点以下を切り捨てればいいのでしょうが。
0699デフォルトの名無しさん2006/03/10(金) 23:08:32
つ BigDecimal
0700デフォルトの名無しさん2006/03/10(金) 23:12:09
丸め誤差
0701デフォルトの名無しさん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()で読み込んでしまうんだけどなんで?
0702デフォルトの名無しさん2006/03/10(金) 23:16:36
Client
0703デフォルトの名無しさん2006/03/10(金) 23:26:13
送られた文字列をサーバがそのまま送り返してるからだろ。echo みたいに。
0704デフォルトの名無しさん2006/03/10(金) 23:28:05
ttp://moe-moe.dip.jp/cgi-bin/img-box/img20060310231446.jpg
ttp://moe-moe.dip.jp/cgi-bin/img-box/img20060310231125.jpg
0705デフォルトの名無しさん2006/03/10(金) 23:41:46
>>703
ありがとうございます
サーバー側のプログラムを見直してみます
0706デフォルトの名無しさん2006/03/11(土) 02:50:38
>>690
処理が帰って来ない部分をnewしたスレッドにやらせて、親スレッドはimageがnullのまま進めればいいじゃないか。
つかそれ以外どうやってスレッド使う気なんだ?
07076852006/03/11(土) 03:51:22
>>706
いや、自分がやりたいのは
ブラウザみたいに
ファイルを一部読み込んだところから
ずりずりと先に画像を出したいんです。

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

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

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

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

よっておまいの環境がおかしい
0715デフォルトの名無しさん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文を使った場合は
問題なく実行できるのが良く分かりません。なんか理由がありますか?
0716デフォルトの名無しさん2006/03/11(土) 15:39:19
forのは↓みたいなもんと思えばいい。
要するに「スコープ内」で変数が重複するかどうか。

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

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

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

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

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

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

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

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

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

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

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

やさしいJavaの本を持っているのですが、ビジュアルラーニングの方は、もっていません。
0746デフォルトの名無しさん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);

}
}
07477462006/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("");
}
}
07487462006/03/12(日) 16:37:13
この二つ、配列の表示が変わったり変わらなかったりするんだけど、
どこがどう違うんですか?
publicがついてるかついてないかしか分からないんですが…これによって変わるんですか?
0749デフォルトの名無しさん2006/03/12(日) 16:54:46
String型についての質問ですが、

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

String s1, s2;
s1 = s2;

はアドレス代入ですよね?
あと、どのようなメソッドがあるか載っているHPとかありますか?よろしくお願いします。
0750デフォルトの名無しさん2006/03/12(日) 17:19:08
>>749
s2 = new String(s1);で違うインスタンスとすることはできます。
が、Stringは不変インスタンスなので、コピーを作る必要性に乏しいかと思われます。
0751デフォルトの名無しさん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は不変ですのでコピーするということはあまり意識しなくてもいいかとおもいます
07527492006/03/12(日) 17:23:37
>>750
なるほど、ありがとうございました。
07537492006/03/12(日) 17:27:44
>>752
ありがとうございます。早く一通り文法を覚えねば
0754デフォルトの名無しさん2006/03/12(日) 17:28:38
javadocでの質問
protected以上の可視性を持つクラス、メンバについてのドキュメントを作成したい場合に
隠蔽された親クラス(パッケージプライベートとか)で定義された
public finalメソッドに記述されたjavadocの内容を
publicサブクラスのjavadocに引用する方法がわかりません。

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

・・・なのですが今までずっと調べて今使い方がわかりました。結構面倒なんですね(´・ω・`)
0763デフォルトの名無しさん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なんですが
どうやってコピーすれば・・・。
0764デフォルトの名無しさん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());

どの辺が面倒?
0765デフォルトの名無しさん2006/03/12(日) 21:49:35
配列のコピーにはarraycopy使え
07667642006/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);
}
07677542006/03/12(日) 22:00:47
子クラス以降で利用可能なfinalユーティリティメソッドを親クラスで用意する、なんて
よくありそうな話だとおもったんですけど・・・
公開される子クラス群を実質的な基本抽象概念としたい場合、子クラス群で共通化される
ユーティリティメソッドだけを持つ親クラスなんぞはクラス階層上不要なので・・・
そこで、隠蔽された親のpublic finalユーティリティメソッド分を
あくまで子クラスの公開メソッドとしてjavadocのMethod Detailに反映されるようにしたかったのです。
javadocでは無理なのでしょうか・・・
0768デフォルトの名無しさん2006/03/12(日) 22:38:30
>>767
標準のjavadocではできませんが、それはあなたの発想が特殊なためです。

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

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

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

後、メソッドの中でclone()ってやってるのにコピーされて
いないから解らない。ならclone()ってそもそも何するのよ?
って感じ、わけわからん('A`)。
0774デフォルトの名無しさん2006/03/13(月) 00:12:11
>>773
コピーと代入の違いを知れ。
0775デフォルトの名無しさん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;
}
0776デフォルトの名無しさん2006/03/13(月) 00:13:47
そもそも>>763はコンパイル通らないだろ
0777デフォルトの名無しさん2006/03/13(月) 00:17:56
>>773
本当にC解ってる?Cでも同じ振る舞いになるよ?
メソッドcopy()の中で
x = y;
としたとしても、変更されるのはメソッドcopy()の引数xの参照であって、
メソッドmain()のローカル変数xの参照じゃない。
0778デフォルトの名無しさん2006/03/13(月) 00:24:25
メソッドのJAVADOCはメソッドを実装したクラスに生成される。
ただそれだけだ
0779デフォルトの名無しさん2006/03/13(月) 00:25:25
俺も先輩に何度か説明したことがあるが
Javaは参照渡しですら値渡しだ
逆をいうとJavaに参照渡しなど存在しない

参照型を値渡ししていると覚えてください
0780デフォルトの名無しさん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)); とかだね。
0781デフォルトの名無しさん2006/03/13(月) 00:28:21
参照型を値渡しって普通の参照渡しのことじゃね?
0782デフォルトの名無しさん2006/03/13(月) 00:28:41
>>779
そうそう。

実はC/C++でのポインタだと考えると分かり易かったりする。
0783デフォルトの名無しさん2006/03/13(月) 00:33:22
VMを実装しようとしてるわけではない
だから変数はオブジェクトを入れる器(もしくはオブジェクトの名前)だと思えばいい
参照だの値だのはオブジェクト指向の本質ではない
0784デフォルトの名無しさん2006/03/13(月) 00:34:17
Cも値渡ししかなかったっけ?
Delphiだと、varパラメータとかあるけど
0785デフォルトの名無しさん2006/03/13(月) 00:35:54
誰もオブジェクト指向の本質を語ってない件について
0786デフォルトの名無しさん2006/03/13(月) 00:39:08
>>784
そう。その通り。
0787デフォルトの名無しさん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のアドレスに書き換える?
む、こんがらがってきた。
0788デフォルトの名無しさん2006/03/13(月) 00:41:45
>>784
scanf("%s %d",name, &value);
0789デフォルトの名無しさん2006/03/13(月) 00:42:43
Cで参照渡しが無いとすると
検索で引っかかってくるサイトは全部嘘か
0790デフォルトの名無しさん2006/03/13(月) 00:44:17
typedef struct _hoge {
  int x, y, z;
} hoge;
hoge a0, b0, *a1, *a2;

で a0 = b0; が値渡し、a1 = a2; が参照渡し。
参照の値渡しって何?
0791デフォルトの名無しさん2006/03/13(月) 00:44:21
恥ずかしい流れだな・・・
Cを知らずにCを語るな
Javaを知らずにJavaを語るな
0792デフォルトの名無しさん2006/03/13(月) 00:45:47
>>787
x = y.clone();
これって通るか?
0793デフォルトの名無しさん2006/03/13(月) 00:46:33
mainのxのアドレスは0x05とかで、値が0x01
それをcopy()に渡すと
0x01という値が、copy()の変数x(アドレス0x0a)に渡される
0794デフォルトの名無しさん2006/03/13(月) 00:47:26
>>790
仮引数の側に&や*に相当するものはJavaにはない
0795デフォルトの名無しさん2006/03/13(月) 00:49:17
>>794
ああ、無いな。でそれが何の回答?
0796デフォルトの名無しさん2006/03/13(月) 00:50:54
>>795
hoge != &hoge[0]
0797デフォルトの名無しさん2006/03/13(月) 00:54:35
>>792
キャスト無いと通らんと思われ。
0798デフォルトの名無しさん2006/03/13(月) 00:55:42
>>796
なんでいきなり配列先頭のアドレス? ごめん何が言いたいのか意味不明。
0799デフォルトの名無しさん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の質問になってもうしわけない。
0800デフォルトの名無しさん2006/03/13(月) 00:57:15
>>790
pass-by-value で参照を渡す事。

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

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

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

>>801
ANSI でポインタどうしの == は保障されてなかったはずだが。てか何でポインタ/参照の比較の
話になってんの?
0806デフォルトの名無しさん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;
}
}

こう?
0807デフォルトの名無しさん2006/03/13(月) 01:06:13
ダメだこいつらw
一生C厨に馬鹿にされてろw
0808デフォルトの名無しさん2006/03/13(月) 01:08:18
>>806
こう? といわれても何が? としか返せないんだが…
0809デフォルトの名無しさん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
 }
}
0810デフォルトの名無しさん2006/03/13(月) 01:12:25
誤>下記例の�Aの処理で、�@の状態を変えようとすることに
正>下記例の�Bの処理で、�@の状態を変えようとすることに
0811デフォルトの名無しさん2006/03/13(月) 01:14:31
コレ何言語だよ
0812デフォルトの名無しさん2006/03/13(月) 01:15:09
>>805
C言語なら
int array[] = {1,2};
func(&array); //これが値渡し。「参照の値渡し」的に言うなら「ポインタの値渡し」

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

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

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

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

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

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

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

C言語しか出来ない人には、C言語に参照渡しがなかったため、参照渡しを理解できなかった人も居た。
彼等の中の一部は「ポインタの値渡し」を「参照渡し」と呼んだ
0835デフォルトの名無しさん2006/03/13(月) 01:39:10
>>833
そう、Nankaはhogeなんかに束縛されないのだ
0836デフォルトの名無しさん2006/03/13(月) 01:39:15
こうして 「参照型」 は 「シミュレーション」 や 「名誉挽回」 のような、
正しく使わないと馬鹿に見られる試金石になったとさ。
0837デフォルトの名無しさん2006/03/13(月) 01:40:00
>>832
だれが上書きの話なんかしてんの?
0838デフォルトの名無しさん2006/03/13(月) 01:41:07
>>836
「参照型」と「参照渡し」は違うから。
0839デフォルトの名無しさん2006/03/13(月) 01:42:30
多種多様な馬鹿が入り乱れててワケワカメ
0840デフォルトの名無しさん2006/03/13(月) 01:44:08
Javaのオーバーヘッド対策の限界を知るには良かったんじゃないか?
若い諸君らは、Bufferを駆使してJavaの常識を一新してくれよ
08418062006/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
それです。ありがとうございます。
0842デフォルトの名無しさん2006/03/13(月) 01:49:56
>>834
ああ、C/C++/Java と来た今の俺がまさにそれだな。メモリブロックのコピーが渡る、
メモリブロックを指すポインタのコピーが渡る、メモリブロックそのものが渡る、って
のは理解できるんだが、「参照渡し」 から連想するものがちょっと混乱する。
0843デフォルトの名無しさん2006/03/13(月) 01:51:20
VB 上がりが C 上がりに唯一優越感持てるネタがあると聞いて飛んできました。
0844デフォルトの名無しさん2006/03/13(月) 01:54:48
参照渡しって呼び出し側の使ってるメモリ領域がそのまま呼び出し先に渡るイメージなんでしょ?
実体渡しとかいう名前に変えた方がよくない?
0845デフォルトの名無しさん2006/03/13(月) 01:58:39
>>844
やりたきゃ、どうぞご勝手に。
世間が従うとは限らんけどね。
08468332006/03/13(月) 01:59:46
たとえば
>>833の
Nanka に
public int value;
があるとして、

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

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

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

n = xxx;

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

そして明日はみんな遅刻。
0854デフォルトの名無しさん2006/03/13(月) 02:29:38
論争なんかないだろ。論争する点がないんだから。
単にわかってる人とわかってない人がいるだけ。
0855デフォルトの名無しさん2006/03/13(月) 02:31:01
>>853
うふ、明日はお休み。
0856デフォルトの名無しさん2006/03/13(月) 02:31:18
いやコードの上っ面でどう書けるかじゃなくて、もっと上位の設計上の話だって。
0857デフォルトの名無しさん2006/03/13(月) 02:35:54
おはようございます さくやは おたのしみでしたね
0858デフォルトの名無しさん2006/03/13(月) 02:36:07
>>856
0859デフォルトの名無しさん2006/03/13(月) 02:36:08
オブジェクトランドで語れよ、おまえら
0860デフォルトの名無しさん2006/03/13(月) 02:40:07
>>858
日本語でおk
0861デフォルトの名無しさん2006/03/13(月) 02:41:02
そんなことよりまんこの話をしようぜ
0862デフォルトの名無しさん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なんかでも普通に使ってるんだから、ちゃんと区別しないと今みたいに恥ずかしい目にあう
ってことだ。
08637562006/03/13(月) 02:42:46
今日も良く釣れたw
0864デフォルトの名無しさん2006/03/13(月) 02:52:39
もうとっくに終わってる話に「とっとと終わらせる」と言いつつ力説始める人は
周りに童思われるでしょうか。>>865 さん、お答えください。
0865デフォルトの名無しさん2006/03/13(月) 02:54:32
>>862>>432
>>863≠>>756
>>864>>432
08667562006/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には関係ない。
つまり、これは部分的に正しくない表現。
08677562006/03/13(月) 02:56:59
オブジェクト渡し

今日からそう呼ぼうぜ。

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

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

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

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

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

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

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

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

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

きりん
 ↓
09144352006/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を使って読み込まれたクラスは別物として扱われてる?
0915デフォルトの名無しさん2006/03/13(月) 08:09:45
別物というか、その URLClassLoader を明示的に使ってやらないと復元できないだろう。
A の復元に使ったクラスローダーからじゃ B (のインスタンスの実装クラス) をロードできないんだから。
09164352006/03/13(月) 08:21:01
>>915
すまん、よく分からん。
明示的に使うってのはどういうこと?
今やってる手順としては、

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

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

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

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


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

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

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

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

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

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

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

private Singleton(){
}
}

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

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

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

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

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

ただたたやみくみにパフォーマンスC言語厨原理主義者のように
Bufferを使えばいいってもんじゃない。
あれは外部のリソースを使用するが使い方を誤ると
メモリリークを起こす。通常の配列宣言とは違う。
よって馬鹿みたいにBuffer使えばいいってもんじゃない。
本当に必要な時にだけ使うべきだ。
0955デフォルトの名無しさん2006/03/13(月) 20:04:11
>>950
楽天証券のAppletのことを言ってるのか?
0956デフォルトの名無しさん2006/03/13(月) 20:22:04
>>954
プロファイラ使うのが常識となってるJavaの今で、
なんでそんな過去ログ辿って息巻いてるの?
0957デフォルトの名無しさん2006/03/13(月) 20:33:13
過去ログ?
マ板にあるスレタイにJava とバブルがつくスレで
Bufferの話が出ていたんだけど
0958デフォルトの名無しさん2006/03/13(月) 20:33:31
Eclipse Profiler使ってるのか
0959デフォルトの名無しさん2006/03/13(月) 20:34:21
アホ、時代はnetbeansだろw
0960デフォルトの名無しさん2006/03/13(月) 20:43:38
netbeans(笑)
0961デフォルトの名無しさん2006/03/13(月) 20:45:39
>>960
んだと、こらぁ
IBMの奴隷なんかにゃ遅れは取らないぞ
0962デフォルトの名無しさん2006/03/13(月) 20:56:20
eclipse >>>>> netbeans(笑) = JBuilder ヾ(*´・∀・`*)ノキャッキャ
0963デフォルトの名無しさん2006/03/13(月) 20:57:55
>>962
netBeans >>>>>> eclipse = 秀丸
0964デフォルトの名無しさん2006/03/13(月) 20:58:29
秀丸suge-!
0965デフォルトの名無しさん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プラグイン、
などを全部入れて使っているが、設定ファイルが重たいのか段々重たくなってきた。
0966デフォルトの名無しさん2006/03/13(月) 21:25:13
>>959
NetBeans5標準プロファイラとEclipseプロファイラどっちが使える?

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

0967デフォルトの名無しさん2006/03/13(月) 21:39:28
>>966
ごめんね、パラメタの意味が分からなくてごめんね。
ボトルネック検出や、ガベコレ引き起こしてる奴の検出なら出来るよ。
処理時間はselfというのを見れば、メソッドそのものの処理時間が分かるから
メソッド呼び出しで合計されて、どこがネックかわからーんってことはない。
0968デフォルトの名無しさん2006/03/13(月) 21:55:44
「閉じられた2次元の図形の面積」って、図形で描くとどんなイメージなんですか?
0969デフォルトの名無しさん2006/03/13(月) 21:57:52
□でしょ、閉じてないのに面積求められるの?逆に
0970デフォルトの名無しさん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
09719682006/03/13(月) 22:02:57
なんかソースを見ると
[√{(xの座標移動)^2+(yの座標移動)^2}]^2×π
になってるんだけど、これって円の面積じゃないの?
0972デフォルトの名無しさん2006/03/13(月) 22:06:12
ダウンロードを試みたところ、
>インストールパッケージを開くことができませんでした。
>パッケージが存在し、アクセスできることを確認してください。
>またはアプリケーションベンダに問い合わせ、このパッケージが有効な
>Windowsインストーラパッケージであることを確認してください
と出たのですが、どうすればいいのでしょうか?
0973デフォルトの名無しさん2006/03/13(月) 22:08:00
ダウソ板へ逝く
0974デフォルトの名無しさん2006/03/13(月) 22:09:13
ダウン板にjavaスレがなかったんです、どうぞよろしくお願いします
0975デフォルトの名無しさん2006/03/13(月) 22:10:08
インターネットオプションで一時ファイルを削除してダウソしなおせ
0976デフォルトの名無しさん2006/03/13(月) 22:14:42
>>975
今やってみたのですがそれでも出来ませんでした
0977デフォルトの名無しさん2006/03/13(月) 22:43:10
>>973-974

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

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

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

でも、何故?と聞かれると困ってしまうのです。
0988デフォルトの名無しさん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
0989デフォルトの名無しさん2006/03/14(火) 12:58:03
?
タイムアウトでも呼ばれてたと思うけど?
09909882006/03/14(火) 13:01:39
あ、書き忘れましたが本番環境がTOMCATで上記での手テストはOC4Jでやってます。
OC4Jが糞なんでしょうかねぇ…
09919882006/03/14(火) 13:04:49
何度もすみません。ちなみに
タイムアウト時間経過後に
HttpSession session = request.getSession(false);
をやった場合はちゃんとvalueUnboundが呼ばれるようです。

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

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

ソースと結果は次。
0999デフォルトの名無しさん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
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。