【初心者】Java質問・相談スレッド53【大歓迎】
1 :
デフォルトの名無しさん :
04/09/11 09:02:20
2 :
デフォルトの名無しさん :04/09/11 09:05:03
2だったらこのスレ終了
3 :
デフォルトの名無しさん :04/09/11 09:06:27
3だったらJava終了。 そしてJ#へ・・・ ww
4だったらDelphiの時代
Wikiを更新した
6 :
デフォルトの名無しさん :04/09/11 09:09:57
>>4 出る日の時代はもう来ないだろww
来るのか!?
7 :
デフォルトの名無しさん :04/09/11 09:16:41
出る屁はとうとうマイナーなままだったね
8 :
デフォルトの名無しさん :04/09/11 09:20:43
>>7 Javaよりはマシだったけどなw
(過去形)
Delphiは8でおわったしなぁ・・・ってなんでJavaスレでDelphiの心配してるんだ 1と2はかなり感動したものだったが・・・
10 :
デフォルトの名無しさん :04/09/11 10:40:14
初心者です。 今までADOでDBにアクセスしてたんですけど Javaを勉強することになりました。 でADOだとSQLをきかしてRecordSetとった後 RecordSetで取得したデータを ソートしたりできたんですけど JDBCではSQLきかした後のデータの ソートとかはどうやってやればいいでしょうか? とりあえずJDBCでデータベースにアクセスして ブラウザに表示するところまでは理解しています。 後DBにアクセスしてデータを変更したり画面表示する 勉強するのに適したWebアプリのための 勉強にお勧めの本ありますか。
http://pc5.2ch.net/test/read.cgi/tech/1093267533/991 >>前スレッドの991
実際に問題があるのですよ。
すべてのクライアント環境がWindowsやIEのようなスマートなものだと考えれば、問題はありません。
ですが、ファイルの拡張子などを頼りに
どのヘルパアプリケーションを起動するかを判断してくれるスマートな環境以外では、
サーバが正しくMIMEタイプを返さない場合、JavaWebStartは現実に起動しないのです。
故にサーバの設定は正しく行わなければならないのです。
また、この問題については、
JavaWebStartが、クライアント環境のPCに標準搭載されていることとは、あまり関係がないかと思います。
ただ、「現在の大部分のクライアント環境がWindowsとIEのような、
拡張子なども頼りにして、ヘルパアプリケーションを起動するものばかりなので、
問題が起こることは少ない」と、言われるのなら、それには同意いたします。
12 :
デフォルトの名無しさん :04/09/11 10:47:18
14 :
デフォルトの名無しさん :04/09/11 11:36:14
>>13 じゃあな、JDBCレベルじゃ無理だから、O/RマッピングとHibernateで調べてみ。
すいません、クラスの関連について質問なのですが、 ヘッダークラスと明細クラスがあった場合に、 @ヘッダークラスに明細クラスの配列を保持 A各明細クラスにヘッダークラスを保持 一般的にどちらの設計がスマートなんでしょうか? どなたかご教授下さい。
16 :
デフォルトの名無しさん :04/09/11 11:45:56
?@
恐れなく機種依存文字を使う兵ですね
19 :
デフォルトの名無しさん :04/09/11 11:56:00
>>15 2.のような設計にする奴って明細の参照をどこで管理してるのか気になる
MeisaiManagerとかw
21 :
デフォルトの名無しさん :04/09/11 12:09:18
こんにちは StringBuffer sb = new StringBuffer(); char[] recvR = new char[64]; try { FileReader fr = new FileReader("D:\\java\\ + str + ".txt"); while(-1 != fr.read(recvR)) { sb.append(recvR); } }catch(Exception e) { //System.out.println(e.getMessage()); } こうやって、ファイルからreadすると、 最後のファイルデータを読み込む際のデータは64k以下となって、recvRに受信されるデータは中途半端になりますけども、 そのあまった部分に前受信したデータが入って、今受信したデータの後に、前に受信したデータがのこったrecvRになってしまいます。 このバグを解決する方法を教えてください。
修正 誤)FileReader fr = new FileReader("D:\\java\\ + str + ".txt"); 正)FileReader fr = new FileReader("D:\\java\\" + str + ".txt");
>>23 while(-1 != fr.read(recvR)) {
-1は判定として入れてます。
>>24 読み込まれた文字数が帰ってきた場合は捨ててるけどね
27 :
デフォルトの名無しさん :04/09/11 13:22:34
>20 特定店舗で集計するSQLの後 最近のデータとかTop10、Worst10 特定範囲を集計しなおしたりとか 特定条件のデータだけ抽出しなおしたり 他にもいろいろといっぺんにするからです。
>>27 普通はそのたびに適切なSQLを毎回発行するんじゃないのか?
30 :
デフォルトの名無しさん :04/09/11 13:55:31
>普通はそのたびに適切なSQLを毎回発行するんじゃないのか? ですか 可能だったものは可能でしたので、、、 まあSQLは嫌いではないです。 ですが後学のために JavaのArraysを使う方法とかも勉強すること と書かれていますのでADOのrs.Sortとするのと同じことを実現する 方法を教えていただけないでしょうか? O/RマッピングとHibernateですが Googleで検索してみましたが M$の世界では見たこともない単語が大量に入っていて 今のところよくわかりません。
人は成長してこそ生きる価値あり お前は価値無し
>>30 解決のためのキーワードを言う。あとはググれ。
Collections#sort
Comparator
TreeSet
TreeMap
Comparable
>>30 とりあえずO/Rマッピングなんかやらなくてもいい。
ResultSetのデータを全部別のオブジェクトのリストに詰めなおしてsortすれ
まずはそこからだ
34 :
デフォルトの名無しさん :04/09/11 14:11:31
abstract型クラスについて教えてください。 ・abstractクラスを作ってその中にabstractメソッドを 一つも作らなかったとして、当クラスのサブクラス作成 時に何か一つのメソッドのオーバーライド強制がされる という規則があるのでしょうか?もしこの規則がないと するとHttpServletクラスのAPIリファレンスが理解で きないのでよろしくお願いします。 ・abstractクラス内でprivateなメソッドは宣言すること (しても意味なさそうだけど)は出来ますか?
>>33 ふーん。Java って不便だな。思想ばかり高いのはやっぱりだめだな。
>>34 やってみりゃいいだろ?
なんでやりもしないで聞くんだよ。そこでもう成長するチャンスを放棄してるんだって。
やってみて分かんないことがあったら、どうしてこうなるの?って機器に来い。
それすら自分で調べてたほうがいいくらいだ。
最も成長する気がないなら答えてもいいけど。
ここは学校じゃないんだから成長とかしょーもないこと言うな。 変な奴は放置しとけ。
>>36 別に自分でコーディングして調べたって、人に聞いたって
成長には関係ない。知っているなら教えてやればいいじゃ
ないか。めんどくさいなら、めんどくさいと言うか放置す
るだけだろ。自分がめんどくさいだけなのに"お前のため
を思って言わない"とか言ってしまうのを"オタメゴカシ"
という。
39 :
デフォルトの名無しさん :04/09/11 14:38:45
>>36 Javaやるのにコーディングなんか必要ない。
って言うかコーディングなんか無駄だろ?
はっきり言うが、机上の空論が一番お似合いな言語のポジション独占中だろ。
40 :
デフォルトの名無しさん :04/09/11 14:40:46
J2SEダウンロードしたら「Java勉強中」って充分言い張れる。 インストールすら必要ない。 まさに、ノータッチデプロイメントだ。
>>35 楽する方法なんかいくらでもある。問題は基本が分かった上で使うかどうかだ。
>>38 わざわざ下らんことを言ってやらなくても放置すりゃいいんだろ。
自分は言うけど人には言うなってか。
>>42 わからないなら黙っとけってことだろ。
せめてインストールくらい済ませてから偉そうにしろってこった。
>>38 いやその前に自分がめんどくさいだけで自分でやらずに人に聞く、
"怠慢"というんじゃないのか?
>>44 自分でやって確かめるというのがそもそも間違いなんだよ。
お前、何もわかってないだろ?
だから怠慢は放置しろってことだろ。
47 :
デフォルトの名無しさん :04/09/11 14:49:57
今日中に1000行ったら、みんなでJavaオフしようよ。
48 :
デフォルトの名無しさん :04/09/11 14:51:06
Collections#sort Comparator TreeSet TreeMap Comparable キーワードありがとうございます。 脳内鉢巻を締めて とりあえずグーグルで検索したり本を参照したりしてます 見たこともない単語が所々にあって 読んでて眠ってしまいそうですが がんばって読んでます。
49 :
デフォルトの名無しさん :04/09/11 14:54:16
ここまで読んでわかったこと。
このスレには
>>34 の問いに答えられる人間は居ないw
DLしただけで、プログラマになれるなんて素晴らしい言語ですねw
オフはやっぱりJavaだけに茶でもすすりながらやるんすか
じゃあ、自分で試せばわかることではあるが、 何の義理もない俺がわざわざ答えてやろう。 34 :デフォルトの名無しさん :04/09/11 14:11:31 abstract型クラスについて教えてください。 ・abstractクラスを作ってその中にabstractメソッドを 一つも作らなかったとして、当クラスのサブクラス作成 時に何か一つのメソッドのオーバーライド強制がされる という規則があるのでしょうか?もしこの規則がないと するとHttpServletクラスのAPIリファレンスが理解で きないのでよろしくお願いします。 そんな規則はない。 ・abstractクラス内でprivateなメソッドは宣言すること (しても意味なさそうだけど)は出来ますか? できる。意味はある。 以上。
こうして、煽れば答えてくれると思っちゃうんだろうな。
怠慢な34のためにわざわざ回答してやったぞ?
まあ取りあえずabstractがどういうことかちゃんと理解しろってこった。
55 :
デフォルトの名無しさん :04/09/11 15:08:45
57 :
デフォルトの名無しさん :04/09/11 15:11:12
じゃー、俺も答えるか。
>>34 > abstract型クラスについて教えてください。
> ・abstractクラスを作ってその中にabstractメソッドを
> 一つも作らなかったとして、当クラスのサブクラス作成
> 時に何か一つのメソッドのオーバーライド強制がされる
> という規則があるのでしょうか?もしこの規則がないと
> するとHttpServletクラスのAPIリファレンスが理解で
> きないのでよろしくお願いします。
理解できないのは、頭が弱すぎる。
勝手に勘違いした前提で話をすることが、そもそもの間違いだ。
> ・abstractクラス内でprivateなメソッドは宣言すること
> (しても意味なさそうだけど)は出来ますか?
しても意味なさそうと思えるお前が分からん。
>>56 まず、自分で試してみろ。
じゃないと怠慢だと思われても仕方ないぞ。
>>59 試すってなんだよ… 仕様調べろよ。怠慢な奴だな。
62 :
デフォルトの名無しさん :04/09/11 15:16:28
ここまで読んでわかったこと。 Javaは仕様を理解することより、動かして確かめることが大切。
プログラミング言語って割とそーゆーもんじゃ。
前スレにもいたよな。理由は言わずにただ叩くだけで、結果的にくだらんレスでスレを伸ばしてる奴。
単に
>>51 が本当に間違ってないか確かめたいだけなんでは?
そうだな。
>>63 は、理由を言ったほうがいいな。
えらく盛り上がってますね(w
今からコード書くんじゃないの? ゲラゲラ
こんなんでいいんじゃね。 abstract class C{ private void say(){ System.out.println("say");} public void hello1(){System.out.println("hello1");} public void hello2(){say();} } class D extends C{ } public class hello{ public static void main(String[] args){ D d = new D(); d.hello1(); d.hello2(); } }
仕様どおりだから。
やってみても想定通りになるから。
他に何を試せばいい?
>>67 が正解なのかな…
だから反論する時は理由書いた方がいいぞ。
>>70 前者
abstract class SuperClass { public void method(){} }
class SubClass extends SuperClass { } //method を上書きしてない
後者
abstract class Hoge { private void method(){} }
コンパイラが言語仕様に準拠してるかはまた別問題なので自分で調べてね
俺も調べたし試したのだがなぜ51が間違っているのか本気でわからん。 誰か教えて。
俺もこんなコード書いたが、コンパイル通るぞ。 public abstract class Test { private void hoge() { } public void hage() { } } public class Test2 extends Test { } サブクラスでは何もオーバーライドしてないし、 abstractクラスにはprivateメソッドも実装できる。
コンパイル通らなかった・・・orz
なんか必死に煽ってる奴いるけど、
>>34 本人か?
怠慢とか言われて逆ギレしてんのか?
>>79 あー、ごめん >51 って回答してる香具師のほうか。
>51 を間違ってるとか言ってる香具師は釣りだろ。
おまえら全員、茶でも飲んでもちつけ。(´・ω・`)つ旦
ごめん、
>>79 が
>>70 に言ってるってごくあたりまえの流れだな、なんかボケてた。
な、
>>34 みたいな変態は放置しておくのが一番なんだって。
「怠慢だ」とか「成長したけりゃ」とか言うとこんなことに・・・
で、 見事に釣られまくったわけだwww
本気に見えるのは気のせいか?
95 :
デフォルトの名無しさん :04/09/11 15:39:44
もう終わり? どうしてJavaすれって荒れるんだろ? お前ら全員馬鹿?
はいはい。
もう100近いじゃねーか。 お前ら一体何やってんだよ? 35で、答えてやればそれで済むことだったんじゃないのか?
100 :
デフォルトの名無しさん :04/09/11 15:44:22
100! このスレ終了
>>99 それですんじまったら面白くねーじゃね〜か。
>>101 わからないからって
すぐそうやってごまかすw
変態がまだいるな。
痴呆は放置
>>99 質問して即回答。そんなんじゃツマラン。
的確なやりとりを望むなら Java普及委員会や @IT に逝けばいい。
で、結局
>>34 が叩かれて逆ギレしたのか?
それとも
>>55 が後に引けなくなって釣りということにしたのか?
>>107 調べてすぐわかるようなくだらん質問はさっさと終わらして欲しい。
>>11 確かに、昔LinuxでJavaWebStartを動かすようにするにはちと面倒な
ことやらされたがな
が、Windowsではどうってこともねえな
で、
>>34 はどこ行った?質問して答えてもらったのにお礼も言わずにトンズラか?
>>112 Java厨は、黙って質問に答えてればいいんだよ!
お礼とかウザイこと述べんな!ボケ!
115 :
34 :04/09/11 15:57:57
知らない間にこんなにレスが進んでいるとは思わなかったです。 皆さん回答ありがとうございます。 1番目の質問はただの勘違いでした。無意味なこと聞いてすみません。 2番目の質問についてですが、abstractクラスでprivateメソッドが作る 意味というのはサブクラス作成の際にコピペオーバーライド(中身を替えない オーバーライド)をわざとさせる目的で、そのコピペのフォームとして使わせる というのが正しいのでしょうか?
>>115 コピペオーバーライド(中身を替えないオーバーライド)をわざとさせる目的
な、なにを言ってんですか??
普通にprivateを使いたい場合と同じように使うだけ。 abstractだとprivateの使い方が変わるって何で思う?
120 :
デフォルトの名無しさん :04/09/11 16:01:22
/| | |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ | | | ̄ ̄ ̄ /| || | | | / /|TTTTTT TTTTTTTTTT||TTTTT | /\ | /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^ | / / |// / /| | / / |_|/|/|/|/| | / / |文|/ // / |/ /. _.| ̄|/|/|/ Λ_Λ /|\/ / / |/ / (___) おお!間に合ったか! /| / / /ヽ /〔 祭 〕〕つ | | ̄| | |ヽ/l `/二二ヽ | | |/| |__|/ Λ_Λ / /(_) | |/| |/ ( ´∀`) (_) Λ_Λ よーし!ガンガルぜ〜! | | |/ // / ^ ̄]゚ (` ) | |/ ゚/ ̄ ̄_ヽ ⊂〔〔 祭 〕 | / /_ノ(_) ┌|___| |/ (__) (_ノ ヽ ヽ / (_)
122 :
デフォルトの名無しさん :04/09/11 16:07:48
楽しかったです。 こういうプチ祭り、時々やりたいですね。 皆さんどうもありがとうございました。
>>121 | | |
| | |_____
| | | ̄ ̄ ̄ /|
| | | / /|
| /\ | /|/|/|
| / / |// / /|
| / / |_|/|/|/|/|
| / / |文|/ // / ∧∧
|/ /. _.| ̄|/|/|/ /⌒ヽ) ニィタン…オナカスイタァ…
/|\/ / / |/ / [ 祭 _] ∧∧
/| / / /ヽ 三____|∪ /⌒ヽ) もう少しガマンしろ。
| | ̄| | |ヽ/l (/~ ∪ [ 祭 _] 次の祭り会場でヤキソバ買ってやるから…
| | |/| |__|/ 三三 三___|∪
| |/| |/ 三三 (/~∪
| | |/ 三三 三三
| |/ 三三
| / 三三
|/ 三三
/
>>115 おまい、大人気だな、おい。
残念!!!
2 つ目も、「無意味なこと聞いてすいません」 斬り!
125 :
34 :04/09/11 16:12:59
public class Main{ public static void main(String[] args) { SubTekito sub = new SubTekito(); sub.print1(); } } abstract class Tekito{ protected void print1(){ System.out.println("111111111"); this.print2(); } private void print2(){ System.out.println("222222222"); } } class SubTekito extends Tekito{ } 実行結果: 111111111 222222222 ↑こんな使い方を考えてみました。とんちんかんなことばかり聞いて 本当にごめんなさい。
まあ、使い方は置いといて、別に普通に使うときは使う。 ということは分かった?
129 :
デフォルトの名無しさん :04/09/11 16:23:24
単に一部のメソッドがabstractなだけで、 その他のメソッドは普通どおりなんだから、 privateメソッドも普通に使うっていう単純な話で、 これだけスレがのびるってどういうわけよ?w
>>127 print2()というメソッドはTekitoという抽象クラス内でしか使えない。
けれども
mainメソッドを持つMainクラスがSubTekitoクラスのインスタンスを作成
することでprint2()メソッドの実行結果を得ることができたのがわかるでしょ?
みんなどうしたんだ、急にやさしくなって…
>>130 >>125 のコードが
>>115 の
> 2番目の質問についてですが、abstractクラスでprivateメソッドが作る
> 意味というのはサブクラス作成の際にコピペオーバーライド(中身を替えない
> オーバーライド)をわざとさせる目的で、そのコピペのフォームとして使わせる
> というのが正しいのでしょうか?
となにか関係があるのか? と聞いているんだけど。
134 :
デフォルトの名無しさん :04/09/11 16:31:55
>>133 要はですね。
>>34 はabstractクラスのprivateメソッドは存在しても
使う機会がないと思っていたが使う例があったという話。
>>135 いやさ、
>>34 と
>>125 だけだったら、それで理解できるんだか、
だとすると
>>115 の
> 2番目の質問についてですが、abstractクラスでprivateメソッドが作る
> 意味というのはサブクラス作成の際にコピペオーバーライド(中身を替えない
> オーバーライド)をわざとさせる目的で、そのコピペのフォームとして使わせる
> というのが正しいのでしょうか?
ってのはなんだったのかが良くわからないんだけど。
忘れたれよ…
139 :
デフォルトの名無しさん :04/09/11 16:52:20
うまく煽れば100レスブースト出来ることが証明された。 これを自分のスレに応用して人気スレのように見せかけようと思う。
140 :
デフォルトの名無しさん :04/09/11 16:53:42
さらに、900以降は1000を狙えるポジションということだ。
141 :
デフォルトの名無しさん :04/09/11 16:57:28
142 :
デフォルトの名無しさん :04/09/11 17:01:45
143 :
デフォルトの名無しさん :04/09/11 17:11:35
144 :
デフォルトの名無しさん :04/09/11 17:12:47
クライアント環境におけるJavaWebStartについてなら、
LinuxにしてもWindowsにしても、気のきいたブラウザ、
たとえばMozillaなどでは、サーバがきちんとMIMEタイプを送信してきたのであれば、
たとえ、事前にクライアント側でヘルパアプリケーションの設定をしていなくても、
「このMIMEタイプをどのように扱えばいいか私(Mozilla)は知りません。
私は、このファイルをどう扱えばいいですか?」
とダイアログを表示して、ユーザに尋ねてくるので、
そのダイアログを用いて、javawsの実行ファイルを指定してあげるだけです。
それ以外には手間のかかるような設定は必要ありません。
IEやMozilla以外の、あまり気のきかないブラウザにおいては、
設定はもう少々複雑になることでしょう。
またKDEやGNOMEなどの統合デスクトップ環境によっては、
ブラウザのみならず、それらの統合デスクトップ環境自身が、
MIMEタイプやファイル拡張子の設定を保持し、
その設定を特定のブラウザに参照させる場合もあります。
ちなみに、MacOSXにおいては、これらクライアント側でのJavaWebStartの設定は、
Windows,IEの組合せ以上に手軽になっています。
OS自体にデフォルトで、JavaVMもJavaWebStartもインストールされているうえに、
ヘルパアプリケーションなど、上記の設定がすでになされているので、
ユーザは何も設定をする必要がないのですから。
>>136 勘違いというよりも、クライアント側の設定の話と、サーバ側の設定の話が
並列に進められているだけではないでしょうか。
147 :
デフォルトの名無しさん :04/09/11 20:34:32
馬鹿な質問で申し訳ないのですが、 以下のような計算式は int x=0 x=5+7+9+10; コンパイル?時、計算式を勝手に計算結果にしてくれないんでしょうか? x=31; のように。
148 :
デフォルトの名無しさん :04/09/11 20:40:18
>>147 全然Javaの話じゃねーな
そんなのはコンパイラ依存
すいませんでした。ありがとうございます。
相変わらずJavaスレは楽しいですね いつまでたっても成長がないところがすばらしいです
152 :
デフォルトの名無しさん :04/09/11 20:51:55
文字コードEUC-JPの文字列を16進数で表示したいのですが どうすればいいのでしょうか。 下記のC言語のコードと同じことをやりたいのですが。 #include <stdio.h> int main() { int i; unsigned char str[] = "2ちゃんねる"; for (i = 0; i < strlen(str); i++) { printf("%02X ", str[i]); } printf("\n"); return (0); } 出力結果 A3 B2 A4 C1 A4 E3 A4 F3 A4 CD A4 EB
>>151 はコンパイラが何かをわかっていないド素人
麻宮騎亜のマンガ
>>153 どういう意味か分からんが、
Javaって言語仕様レベルで定数式の扱い規定されてなかったっけ?
>>157 相手にされないからってしつこいのが哀れみを誘ってるぞ。
159 :
デフォルトの名無しさん :04/09/11 21:14:08
アニメーションGIFを表示する時の、ImageReaderで 各ページの相対XY座標を取得する方法を教えてください。 1ページ目がフルサイズCGで、2ページ目以降が部分CG だと、その部分CGのXY位置をどこにすればいいのか 分からないのです。
>>152 J2SE 5.0(旧1.5)以降であれば printf 使えるので
byte[] array = "2ちゃんねる".getBytes("EUC-JP");
for (int i = 0; i < array.length; i++) {
System.out.printf("%02X", array[i] & 0xFF);
}
System.out.println();
162 :
デフォルトの名無しさん :04/09/11 21:27:34
>>156 定数式の扱いは規定されてて、
浮動小数点数型の演算は strictfp 宣言無しで FP厳密でなければならないとか
文字列の定数式は intern() して一意なインスタンスを共有するとか書いてあるけど
コンパイル時に定数式を計算して値に置き換えろ、って規定は無かったと思われ。
勘違いだったらスマソ
でもまぁ、普通のコンパイラは定数式を値に置き換えると思うけど。
164 :
デフォルトの名無しさん :04/09/11 21:43:56
>>163 今Javapで逆汗してみたら値に置き換えていないね。
驚きました。
>>164 C:\temp\test>copy Test.java con
public class Test {
public static void main( String[] args ){
int x = 0;
x = 5+7+9+10;
System.out.println(x);
}
}
1 個のファイルをコピーしました。
C:\temp\test>javac Test.java
したのを javap したら以下のようになった。
>>164 そりゃだって変数だもん。
値に置き換えてるようだったら窓から投げ捨てる。
final修飾子が付いてりゃ値に置き換えてくれると思うがね。
C:\temp\test>javap -c Test Compiled from "Test.java" public class Test extends java.lang.Object{ public Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_0 1: istore_1 2: bipush 31 4: istore_1 5: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 8: iload_1 9: invokevirtual #3; //Method java/io/PrintStream.println:(I)V 12: return } ちゃんと値に置き換えてるように見えるけど。
C:\temp\test>javap -c Test Compiled from "Test.java" public class Test extends java.lang.Object{ public Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_0 1: istore_1 2: bipush 31 4: istore_1 5: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 8: iload_1 9: invokevirtual #3; //Method java/io/PrintStream.println:(I)V 12: return } ちゃんと値に置き換えてるように見えるけど。
ゴメン。ちょっと勘違い。
170 :
デフォルトの名無しさん :04/09/11 22:01:01
>>168 final修飾子つけたんですか?
ゲラゲラ
>>167 x = 0; は消えてないみたいだけど、
x = 5+7+9+10; は x = 31; 相当になってるみたいね。
>>170 ( _,, -''" ', __.__ ____
ハ ( l ',____,、 (:::} l l l ,} / \
ハ ( .', ト───‐' l::l ̄ ̄l l │
ハ ( .', | l::|二二l | ハ こ .|
( /ィ h , '´ ̄ ̄ ̄`ヽ | ハ や │
⌒⌒⌒ヽ(⌒ヽ/ ', l.l ,' r──―‐tl. | ハ つ │
 ̄ ', fllJ. { r' ー-、ノ ,r‐l | ! め │
ヾ ル'ノ |ll ,-l l ´~~ ‐ l~`ト,. l |
〉vw'レハノ l.lll ヽl l ', ,_ ! ,'ノ ヽ ____/
l_,,, =====、_ !'lll .ハ. l r'"__゙,,`l| )ノ
_,,ノ※※※※※`ー,,, / lヽノ ´'ー'´ハ
-‐'"´ ヽ※※※※※_,, -''"`''ー-、 _,へ,_', ヽ,,二,,/ .l
 ̄ ̄ ̄ ̄ ̄ `''ー-、 l ト、へ
>>170 final つけたら 2行目の代入文でコンパイル時エラー出ると思うけど。
ソースは
>>165 にあるから、自分で試してみれば?
× final つけたら 2行目の代入文でコンパイル時エラー出ると思うけど。 ○ final つけたら 2つ目の代入文でコンパイル時エラー出ると思うけど。
文字列に関しては定数式によって生成される文字列はリテラルと同様に 扱う旨、規格に明記されている。でも整数リテラル等に関して記述がない からこのあたりを行うかどうかはコンパイラの実装依存ってことでOK?
>>175 文字列も intern しろとは書いてあるが、
実行時に連結してはいけないとか、
コンパイル時に連結しなければならないと書いてないんだけどね。
整数リテラルに関して記述が無いってのが
>>163 や
>>175 の見落としだって可能性もあるし。
どうやらそうみたいね… caseラベルとかでの定数式の扱いから、 定数式はコンパイル時に確定しないといけないんだと思ってた。 # いや、確定はするんだけど、ごめん、うまくいえないな…
>>176 文字列に関してはコンパイル時に評価。
Strings computed by constant expressions (§15.28) are
computed at compile time and then treated as if they were literals.
180 :
デフォルトの名無しさん :04/09/11 22:22:19
垂直同期をとった画面更新をしたいんだけど、 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); DisplayMode dm = gd.getDisplayMode(); int rr = dm.getRefreshRate(); if (rr == DisplayMode.REFRESH_RATE_UNKNOWN) rr = 60; new java.util.Timer().scheduleAtFixedRate(new TimerTask(){ public void run(){ repaint(); } }, 0, 4000 / rr); だとうまくいかないっす。 どうすりゃいいんすか?
>>179 それって仕様なのか例なのか、わからんトコロに書いてあるので微妙。
例えば同じところで System.out.print((hello == ("Hel"+lo)) + " "); が false になってるけど、
"Hel" + lo(値は"lo") が最適化の結果 true になってはいけないとは思えないし。
>>180 それどこが垂直同期とってるんだ?
時間管理してるだけじゃないのか?
垂直同期取るためにはフルスクリーンにしてflipするべし
それ以外は垂直同期取れないのでタイマ管理が必要になる
ついでにリフレッシュレートは確実にいじれないので
フルスクリーンモードだからといってそのまま使わずに
垂直同期周波数をチェックして時間管理を入れるべし
垂直同期+時間管理だとティアリングは発生しないものの、
(おもに2Dゲームでは)がたつきが気になると思う
どうせウインドウモードではティアリング発生するのだから
たとえば60Hz以外と判断したときは垂直同期取らないとか
オプションで自由にいじらせるとかそういった考慮が必要
>>183 しかし、その部分以外には
> 実行時に連結してはいけないとか、
> コンパイル時に連結しなければならない
と読める部分が無いのは相当弱いと思われ。
例証でしか書かれていない部分まで「言語仕様」として読んでよいものか微妙。
>>181 |例えば同じところで System.out.print((hello == ("Hel"+lo)) + " "); が false になってるけど、
|"Hel" + lo(値は"lo") が最適化の結果 true になってはいけないとは思えないし。
おいおい... さすがにJavaの規格としてこの手の非互換性を許す
ようなことはないだろ...
言葉遊びや文章の揚げ足取りもいいけど、
なんのための文章がかかれているかってことはよみとってやれよ
>>185 いや、その部分はさらに微妙なんだが。
System.out.print((hello == ("Hel"+lo)) + " "); が false になる部分の説明は
> Strings computed at run time are newly created and therefore distinct.
としか書いてなくて、"Hel" + lo は実行時に計算しなければならないとは一切書いてないし
他の部分にも そんな記述は無いはず。
>>186 だからね、俺がいいたいのは、どこにかいてある・書いてない
じゃなくて、その6項目がなければ181が自分でいうようにコンパイラの動作に
非互換性が生じるのよ。
で、この手の基本的なレベルで非互換性が
出るようなことはありえないだろ?だからそこは例じゃなくて仕様
が書いてあると読み取ってあげるのが普通じゃないの?
>>187 非互換といえば、1.3 までの javac が言語仕様に従わずに
import SimpleName; を容認してたのが
1.4 から容認しなくなったのでも非互換が生じたけど。
言語仕様というのは完全で漏れが無い事を目指して作るものだから、
書いてない事は仕様でないと考えるべきだと思われ。
もっとも、実装するときは仕様に書いてある例と同じ出力にするだろうけど。
189 :
デフォルトの名無しさん :04/09/11 23:26:46
俺も
>>185 のいうことに同意だな
コンパイラの最適化でこの例の結果が変わるとは思えない。
むしろコンパイラの仕様がこの例の通りにならなかったら単にバグでしょ
190 :
デフォルトの名無しさん :04/09/11 23:29:06
>>189 欠陥が有るとしたら仕様書のほうにあるんじゃないのか?
191 :
デフォルトの名無しさん :04/09/11 23:30:19
ぬるぽ
|非互換といえば、1.3 までの javac が言語仕様に従わずに |import SimpleName; を容認してたのが |1.4 から容認しなくなったのでも非互換が生じたけど。 これは実装レベルでの話で別の話。いま話しているのは 規格レベルで非互換性を許すかどうか。 |言語仕様というのは完全で漏れが無い事を目指して作るものだから、 |書いてない事は仕様でないと考えるべきだと思われ。 だから、書いてあるじゃん。あれを仕様だととらずに ただの例だと読み取るのはそうとうアレ。 This examplesの指す範囲はあくまでもその上のコードと出力結果だろう。 例を先に出す構成は悪文だとは思うがね。
193 :
デフォルトの名無しさん :04/09/11 23:33:02
> System.out.print((hello == ("Hel"+lo)) + " "); これって見ての通り、リテラル+リテラルじゃなくて、 リテラル+変数だからfalseで当たり前の例なんだよね。
194 :
デフォルトの名無しさん :04/09/11 23:34:34
>>193 仕様をよく読むとそれには二通りの解釈が成り立つ。
>>192 > 規格レベルで非互換性を許すかどうか。
いわゆる「解釈の違い」って奴ですよ。規格自体は変わらない。
ヌルポ
>>195 それは、規格に漏れがあるということであり、
㋖∠の欠陥じゃないか?
198 :
デフォルトの名無しさん :04/09/11 23:37:49
200 :
デフォルトの名無しさん :04/09/11 23:41:03
何とか一日で200レス達成しました。 協力してくださった皆さんどうもありがとうございます。
201 :
デフォルトの名無しさん :04/09/11 23:43:06
Javaは釣りネタに事欠かないなぁw
>>182 ありがとう。
フルスクリーンにしてBufferStrategy使ったらできました。
でもこれだとコンポーネントが表示されなくなるな。
垂直同期はあきらめるか。
203 :
デフォルトの名無しさん :04/09/11 23:47:23
結局、言語仕様を好意的に読むと、元ネタの
>>165 は
コンパイル時にx=31になるでFA?
>>183 構成の話をすれば、
JLS は明示的で抽象的な仕様が書いてあって、
それから暗黙に導かれるルールが例とかで補足されるのは結構あるけど、
あの二つは先行する明示的な仕様から導くのは無理だし。
>>203 それは言語仕様的にはコンパイラはx=31にしても良いし、しなくても良いでFA。
今やってるのは文字列連結の定数式だけだから。
208 :
デフォルトの名無しさん :04/09/12 00:11:56
しかし、あの例って確かに微妙だわ。 あの例をすなおに解釈すると、 hello Other.hello "Hel"+"lo"の演算結果というかコンパイラの最適化結果 は、同じインスタンスを指していて "Hel"+loの演算結果 だけは、別インスタンスということになる。 で、真の値intern値は5つとも共通と、、、。
>>210 2chで釣りするのが仕事なら、無職でもいいや。
212 :
デフォルトの名無しさん :04/09/12 00:29:41
>>211 釣士ですらスレの趣旨に沿って書き込んでるのに、お前はなんだ?
ん?
ていうか、俺が釣ってましたw
>>201 は無関係だと思う。
>>206 それが FA だとすると
1 + 2 だと必ずしもコンパイル時に計算しなくてもいいけど
1 + 2 + "" だと絶対にコンパイル時に計算しなきゃいけないんだよね。
なんか統一感ないね。
216 :
デフォルトの名無しさん :04/09/12 06:14:41
おれも
>>214 と同じように感じるよ
何か統一感ないね
というか言語仕様でコンパイラ最適化を思わせる例がでていて
ほかのリテラルに適用されないってどうよ?
217 :
デフォルトの名無しさん :04/09/12 08:45:48
あの、くだらない質問で申し訳ないんですけど、classloaderにdefineclass ってあるじゃないですか。んで、それはバイト列としてバイトコードをわたせば クラスとかができるらしいんですね。 で、VMが現在実行中、もしくは、これはから実行されていくバイトコードを 得る事ができたら、ネットワークに投げたりして、完璧な遠隔実行とか可能 だと思うんです(性能は別として)。そんな事できるんでしょか?そういった機能 をVMにインプリメントするとか。 defineclassはクラスを作るから、そんなんじゃなくて、実行するためバイトコードを バシバシ渡せるメソッドとかがあれば最高。 私の妄想でしょうか?
218 :
デフォルトの名無しさん :04/09/12 10:36:16
既にそういうクラスローダーあるけど?
219 :
デフォルトの名無しさん :04/09/12 10:41:21
servlet/jspのセッションの消滅時に処理をはさむことは できますでしょうか? できるとすればどのようにすればいいでしょうか? ブラウザが閉じられたりタイムアウトしたときにログにメッセージを表示したり したいと思ってます。
220 :
デフォルトの名無しさん :04/09/12 10:46:55
できる リスナー登録 ブラウザを閉じるタイミングだとJavaScript併用かな タイムアウトはOK
>>219 エラーページを作るってのはどうよ?
<%@ %> 内で指定するディれくてぃぶでそういうのが遭ったと思うが
>>219 ログインしていないときは、
そのページでログインしているかどうかをif文で判定して、
java.util.Loggerなどでログを残しつつ
例外も投げ、
エラーページにforwardするってのもありだと思うが。
>>220 セッション情報をファイルに書き込むようにしたら、リスナーが呼ばれなくなったことがあってウツ。
Tomcat4.0のころだったと思うが。
今はどうなのかな。
>>225 発砲スチロールあんどラテックス製か
よくできてるな
実物じゃないので、逆に怖い。 本物はリアリティー優先で怖さは優先されてないからな。
231 :
デフォルトの名無しさん :04/09/12 13:54:33
>>230 >>218 ありがとうございます。
えーと、こういった感じ(クラスとかそういう単位じゃなく)、実行中の生バイトーコードを
VMから得るメソッド、与えて実行させるメソッドってのがないかな?って思ってる
んです。知ってる方いないでしょうか?
サードパティーとかどっかの自作クラスとかでもかまいません。
おねがいします。
232 :
デフォルトの名無しさん :04/09/12 13:55:18
×バイトーコード ○バイトコード
233 :
デフォルトの名無しさん :04/09/12 13:59:32
DBの接続情報などを外部ファイル化するとして、 そのファイルをクラス階層に置くべきか否かで指針となるものってありますか?
234 :
デフォルトの名無しさん :04/09/12 14:00:26
>>233 環境に依存する情報は、クラス階層におくべきではない。
メソッド × メソッドー ○
クラス階層っていうのがなんのことかわからんが。 リソースにするのなら、クラスパスが通るところに置くべきだし。
×バイトコード ○バイトコドー
238 :
デフォルトの名無しさん :04/09/12 14:07:44
>>236 DBの接続情報なんかをリソースにするのはいかんだろ。
クラスパスが通るところというのは、環境依存しない情報しかおくべきではないだろう。
たとえば、メッセージリソースとかな。
>>238 じゃあ、クラスパス通らないところにおいて、絶対パスでファイル読み込みか?
そのほうが良くないだろ。
メッセージリソースも、ロケールという環境に依存するわけだが。
クラスパスが通るところ、つまりリソースにしないとして、設定ファイルはどこに置くんだ?
レジストリ?大げさだな。
>>231 > 実行中の生バイトーコードをVMから得るメソッド、
Class#getResourceAsStream()
>与えて実行させるメソッドってのがないかな?って思ってる
Classオブジェクトが得られれば後はどうにでもできる。
動的に「バイトコードを作る」のなら
>>239 リフレクションについてもっと調べてから出直してこい。
君に、ある程度の知識と説明能力が無けりゃ何がやりたいのかこっちがが理解できん。
242 :
デフォルトの名無しさん :04/09/12 14:34:29
>>240 メッセージリソースはクラス階層に置き、
環境依存パラメータは絶対パスでファイル読みということだ。
どっちもリソースにしてしまうと、複数環境へ配布するときに煩雑になるぞ。
243 :
デフォルトの名無しさん :04/09/12 14:34:58
>>242 クラス階層って何だ?
たとえばclassesディレクトリ直下とかいう意味?
>>242 じゃあその絶対パスはソース直書きか?
さらに複数環境に対応できんな。
複数環境に配布するからこそ、クラスパスだと思うのだが。
>>242 おまえはクラスパスとリソースについて、勉強しなおす必要があるな。
相対パスで書けるじゃん たとえば servlet.getServletContext().getRealPath("hoge") みたいに
>>247 Webではないアプリケーションはどうするんだ?
そんなんWebの場合はコンテナの設定ファイルが使えるから、設定ファイルの話ははっきりいって関係なかろう。
Tomcatであればデータベースの設定なんかcontext.xmlにJNDIリソース登録するわけだし。
>>242 を好意的に解釈すると
環境依存パラメータを記述したファイルを-Dオプションで絶対パス指定するのかも知れない。
250 :
デフォルトの名無しさん :04/09/12 14:50:56
>>245 実行時パラメータで渡すのが吉。
複数環境ということは、当然DBの接続情報も変わるわけだが、
クラス階層にあるリソースファイルを環境単位に用意するのは、
気持ち悪いでしょ?
>>247 サーブレットなら、それでもいいね。
たとえばeclipseはどうやって解決してるのか?って話だろ。
252 :
デフォルトの名無しさん :04/09/12 14:55:08
配布先がWindows系とUnix系両方だったとすると、 やはり、実行時パラメータで渡すだろう。 そのためのバッチファイル&シェルを用意すると。
>>250 > クラス階層にあるリソースファイルを環境単位に用意するのは、 気持ち悪いでしょ?
なんで?
ファイルを作ることには変わりないし。
クラスパスにリソース置けばすむのに、実行時パラメータ使うのもアホらしいだろ。
っていうか、クラス階層ってなによ。クラスパスが通ったところ以外の意味があるのか?
254 :
デフォルトの名無しさん :04/09/12 14:55:55
>>252 実行可能JARと同じディレクトリに置くようにしとけば十分だろが。
>>254 いや、クラスパスやリソースについてわかってなさそうだぞ。
一応確認しておくけど、ここでの設定ファイルっていうのは、環境依存パラメータのことだよね? 起動してからは書き換えられないファイル。
258 :
デフォルトの名無しさん :04/09/12 15:02:23
>>253 ラクかどうかの問題を言っているのではない。
クラスの外にリソースとして分けて記述したところで、
それは形式が変わっただけで、本質的には変わったわけではない。
そう感じるのだ。
「クラスパスが通ったところ」をなんというんだ?
259 :
デフォルトの名無しさん :04/09/12 15:03:11
>>247 というか、Webの場合に環境依存パラメータを、そうやってコンテキストルート以下のファイルに置くのもやっかいだ。
Webの場合の環境依存パラメータはcontext.xmlに書け。
261 :
デフォルトの名無しさん :04/09/12 15:06:22
>>255 それは、無名パッケージで置くということだが、
クラスと同じ場所にあるという点で、何も変わらないのだが。。
>>259 それであれば、クラスパスの通ったところにプロパティファイルを置くようにするのがまっとう。
なんでわざわざクラスパスが通らないところにファイル置いて、実行時パラメータでパス指定する必要があるんだか。
それにそれが本質的に変わるとは思わないんだが。
実際の用語としては「クラスパスが通ったところ」をクラスパスというのだけどね。
>>261 なんならディレクトリ作ればいいだろ。
何を変える必要があるんだ?
264 :
デフォルトの名無しさん :04/09/12 15:09:18
>>260 webなら、コンテナがあるので、そっちに任せるというのには、賛成。
では、通常のJavaアプリではどうする?
>>261 実行ファイルであるappli.jarと環境設定ファイルであるconfig.propertiesを同じディレクトリに置くことにどんな不都合があるのか説明きぼんぬ。
そこがわからないためにここまでの食い違いが生じてる。
config.propertiesをどこかヨソに置いて、ソース埋め込みにしろVMパラメータにしろ、絶対パスで指定することの利点と比較してね。
266 :
デフォルトの名無しさん :04/09/12 15:14:00
>>262 クラスパス上にあるモノは「いったん書いたらどこでも動く」べきでは?
というのが発端。
なので、環境依存情報は、クラスパス外にあるべきでは?と思ったわけだ。
>>264 実行jarと同じディレクトリにファイル置く。
もちろん実行jarを置いたディレクトリにクラスパスが通るように、マニフェストを記述。
>>266 いい着眼点だ。
最近の若い奴らは、メッセージも環境情報も同じファイルにかきやがる。
>>266 > クラスパス上にあるモノは「いったん書いたらどこでも動く」べきでは?
そんな「べき」はない。
どうしても環境依存するクラスを(そんなんあるなら)、環境ごとのjarにして、環境ごとに配布というのも否定するものではない。
たとえばiアプリのようなリソースの限定された環境。
JNIで環境ごとの差をネイティブライブラリに閉じることができなかった場合など。
>>266 環境依存パスをクラスパスで吸収して、パス文字列の環境依存もリソースローダーで吸収させるのが目的なんだから、環境設定ファイルはリソースにするべき。
そのためのリソース。
271 :
デフォルトの名無しさん :04/09/12 15:23:35
>>269 でも、少なくとも、上位アプリケーションのレベルでは、
それを目指すべきだと思うが。
>>271 クラスパスに環境依存情報置くなって?
そんなもの目指さなくていい。
なんのメリットがあるんだ?
274 :
デフォルトの名無しさん :04/09/12 15:27:36
>>270 パス文字列の形式は吸収できるが、内容は吸収できない。
内容が語異なる場合の理由になっていませんね。
>>271 もちろん、環境ごとにクラスを置き換えというのは、可能な限り避けるべきだ。
>>274 だから別ファイルにしておけばいいだろ。
278 :
デフォルトの名無しさん :04/09/12 15:33:08
>>265 不都合とかメリットとかの話をしているわけではないのだが。。
本来の使い方になってるの?ということ。
javaが「頭でっかちの言語」と言われるゆえんですね あーたのしい。
Choiceのメソッドを使おうとしても、 シンボルを…と出て使えないのはなぜですか。 本のサンプルプログラムまんまなのにどこがおかしいんだか…。
>>281 不具合でもあるってことですか、検索できないからだっていうのは。
このスレ、どこが初心者歓迎なんだか。
シンボルを解釈処理できません の検索結果のうち 日本語のページ 約 296 件中 1 - 50 件目 (0.36 秒) ここはJava初心者スレであって、PC初心者やインターネット初心者はスレ違い・板違いです
>>283 >ここはJava初心者スレであって、PC初心者やインターネット初心者はスレ違い・板違いです
それ次からテンプレに加えようぜ。
意味不明。 もちっとPCやJavaを勉強する前に日本語を勉強したら?(プ
286 :
デフォルトの名無しさん :04/09/12 15:48:24
クラスパス上にあるモノは「いったん書いたらどこでも動く」べきでは? という疑問は、いまだ解消されず。。 クラスパスってコーディング時に静的な情報をおいておくところでなかったけ? クラス定義とか。メッセージとか。 配布時に動的に変わるものがあっていいの? ふつう、君たちがダウンロードしてくる、他のプロダクトって、クラスパスの外部に設定だ居るあるでしょ? それに疑問を持ったことないの?
>>285 意味不明なのは、お前が無能だからですよ
288 :
デフォルトの名無しさん :04/09/12 15:49:30
>>286 ×クラスパスの外部に設定だ居るあるでしょ?
○クラスパスの外部に設定ファイルあるでしょ?
>>280 この質問から読みとれるのは、お前が釣りだと言うことだけだ。
結局だれもわからないんですね。 はぁ… やっぱり本にバグがあるとしか思えませんね
>>288 クラスパスの外部に設定ガイル居るでしょ?
この世で一番嫌いな数字が280になりました。
295 :
デフォルトの名無しさん :04/09/12 16:10:04
おまいら、んあんおためにシステムプロパティがあると思ってんだ? プロパティで与えた場所から読むようにすれば問題なし。 なんでもそうやってるだろ? JAVA_HOME CATALINA_HOME ANT_HOME ... Eclipseも暗黙で同じことをやってるよ
>>294 ちょうど今出かけようと財布を見たら、ちょうど280円だったorz
>>296 じゃ、財布に「100万円入っています。開けてはいけません。」
っていう封印シール張っておくことをお薦めする。
298 :
デフォルトの名無しさん :04/09/12 16:24:59
>>239 >>241 またまたありがとうございます。
自分は、処理を分散するために、VMに処理能力共有機能をインプリメント
できないかなって考えていて、そのための実現方法を探していたんです。
まだまだ、知識もないので無茶かもしれませんが、がんばってみます。
>>217 >>298 もしネットワークを通じた処理能力分散などに興味があれば
JXTAなどについて調べてみるのも面白いかもね。
301 :
デフォルトの名無しさん :04/09/12 16:41:38
すいません スクロールペインにパネルを組み込んだのですが、 スクロール処理がされません。 スクロールバーは表示されるのですが、・・・ //jpanel setBackground(Color.CYAN); setSize(1000,1000); setLayout(null); //jpanel main jpMain = new JPanel(); //jpMain.setLocation(0,0); jpMain.setSize(1000,1000); jpMain.setLayout(null); jpMain.setBackground(Color.YELLOW); //jscrollpane jSP = new JScrollPane(jpMain); jSP.setBounds(5,5,400,300); jSP.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); jSP.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); jSP.setViewportView(jpMain); add(jSP);
>>286 > 配布時に動的に変わるものがあっていいの?
問題なし。
> クラスパスってコーディング時に静的な情報をおいておくところでなかったけ?
違う。
どこからそんな定義が出てくるんだ?
> メッセージとか。
メッセージはロケールによって変わる。
あとからメッセージリソース追加すれば、そのメッセージリソースが使われる。
環境ごとに違う。
ということで、リソースバンドルは環境によって変わるような仕組みになっていて、あとからクラスパスに追加すれば使えるしくみになっているので 「クラスパスってコーディング時に静的な情報をおいておくところ」 という認識が誤りという結論で。
>>288 > クラスパスの外部に設定ファイルあるでしょ?
そんなのどうやって判断するんだ?
>>302 メッセージはロケールによって異なるというのと、
ここでいう環境ごとに違うというのとは違う。
複数ロケールのメッセージを提供する場合、
配布時は静的であって、どのロケールのメッセージが使用されるかは、
実行時に動的に決まる。
ここで問題としたいのは、配布時に動的な情報のこと。
307 :
デフォルトの名無しさん :04/09/12 17:08:52
普通にユーザのホームディレクトリにユーザ設定保存してますが?
>>305 だから、あとから*_ja.propertiesを追加するのは「配布時は静的」というのと違うと思うんだが。
環境によって異なる情報をクラスパス上のファイルに記述することには全く問題ないが。
ライブラリのバージョンも変わることがあるわけだし、たとえばログみたいにクラスパス上にあるライブラリによって挙動が変わるものもあるわけだし。
>>307 ここではユーザー設定ではなくて、環境依存パラメータの設定の話。
>>306 EclipseなりNetBeansなりが、実行時にどこにクラスパスが通ってるか簡単に把握できるか?
>>306 単純な実行可能JARでも、解凍しないとどこにクラスパスが通るかわからんが。
>>308 それは、配布し直していることと同じでしょうが。
自分で修正して、自分に配布しただけのこと。
>>310 エクリプスは実行時のその手の情報を表示できるよ
315 :
デフォルトの名無しさん :04/09/12 17:16:15
環境依存パラメータって具体的には何?
>>315 たとえば、DBの接続情報、他システム連携情報、ロギング設定など。
318 :
デフォルトの名無しさん :04/09/12 17:20:13
それって、システムプロパティで設定した値からの相対で取得するでしょ クラスパスに入ってる必要全くないと思うけど
>>267 のようにプロパティファイルに環境情報書くようにして、実行可能JARのマニフェストでそのファイルにパスが通るようにするのがだめだと言ってるらしい。
それより、クラスパスが通らないところにおいて、リソースの仕組みを使わずにファイルとして読み込むべきだと。
そんなバカな。
>>318 むしろ、わざわざリソースを使わずに取得する必要がまったくない。
321 :
デフォルトの名無しさん :04/09/12 17:25:01
大概はそういうのってリソース使ってないと思うけど?
>>319 リソースでないものにリソースの仕組みを使っているというところが気持ち悪い。
使えるからといって使うのが妥当ということにはならない。
だから、誰かが指摘していたが、環境設定情報とメッセージを同一ファイルに安易に
書いてしまう輩が出没したりする。
単純なプログラムで、起動スクリプト使わず実行可能JARの場合、リソースにするのが手軽で目的にかなっていると思うのだが。
>>323 そんなお手軽プログラムなら、リソースだとか環境設定ファイルがどうこうなど考えなくてよい。
きちんと考えるなら、どうあるべきかという話をしている。
Hibernateの設定は、デフォルトだとクラスパスの頭からとってくるね。
質問させてください Java3Dでアニメーションを作成していて 一定時間毎に座標を指定して移動させたいのです。 Threadをたてたのはいいのですが、 repaint()の代わりになる上書き命令をどのようにすればいいのかがわかりません。 いい方法はないでしょうか?
>>325 お手軽な設定方法がそうだということでは?と解釈しているが。
>>327 だからといって、ここでわめいてるやつがいうように、クラスパスにそういう情報を記述してはいけないのだとしたら、悪いデフォルトだということになるね。
クラスパスに設定情報を記述してはいけない、というのは、どこからくるんだか。
こだわらなければクラスパスでリソースとして設定情報置くのは、とくに問題ないのではないかと。
Java3Dで完結させたければBehavior使うんじゃないの?
Cayenneの設定もクラスパスの頭だしな。 一般的に推奨されないことであれば、いろいろなライブラリでデフォルトではクラスパスから設定ファイルを探しに行くというのは、これほど広まってないでしょ。
Cayenneの設定はクラスパスにないといけないんじゃないかな。
334 :
デフォルトの名無しさん :04/09/12 18:04:20
設定ファイルをクラスパスに置くってのはお手軽でいいかもしれないけど セキュリティホールにもなるしある程度規模が大きいシステムではまずやらないよ
>>329 サンプルコードがそのまま使えないのと同様、
世に出回っているデフォルトが必ずしも妥当である保証はない。
なので、そういうところを疑ってみてもいいのではないか?
>>330 こだわる必要がないときには、お手軽さを優先することには同意している。
こだわるときにはどうするかという話をしたい。
>>332 初学者のためには敷居が低いほうが広まるからであろう。
セキュリティーホールというのは、どういう場合? 今回の話の流れとは別の問題だけど。
>>336 Cayenneの設定がクラスパスにないといけない、というのはどうよ?
真偽も含めて。
>>336 使ったことないからわからんが、設定ファイルとはXML形式なのかな?
識者コメントきぼんぬ。
>>336 しかし、非推奨になっているのなら、多くのライブラリでクラスパスから設定をとってくるようにはなってないだろと。
とりあえず、「クラスパスに環境依存ファイルを置くべきではない」というのは違うというのは結論として出てるのかな。
その上で、規模が大きいときや、信頼性・柔軟性が求められるときには別の設定にした方がいいという話?
342 :
デフォルトの名無しさん :04/09/12 18:21:58
>>337 クラスパス上に置いちゃうと基本的にデフォルトクラスローダーで
ロードされるから、底にそのアプリで使われているクラスと同じ名前の
クラスファイルを配置されてしまうと、クラスパスによっては
そっちがロードされてしまう。
だから、通常はクラスパスに置かないか、独自のクラスローダで
ロードする。サーブレットコンテナなんかは後者の考えだよね。
>>340 多くのライブラリが、クラスパスから取るべきか否かといった議論がなされているわけではないだろう。
特に出始めのものは。
プロダクトが成熟していくにしたがって、外部化の方向をたどっているように感じる。
カイエンが成熟しているとはいえそうもないが。。
「クラスパスに環境依存ファイルを置くべきではない」の是非は結論付けられていないでしょ?
344 :
デフォルトの名無しさん :04/09/12 18:25:23
HibernateとかCayenneのようなツール系でも、 たとえばDBの情報を盗みだしてしまうようなコードを 吐くクラスと入れ替えられたらヤバーでしょ。
>>328 >>331 アドバイスありがとうございます!
TimerもBehaviorもいろいろ調べて試してみましたが
さっぱりわかめですよ ハハー
>>343 話が別の方向に行きつつあるから、中締めしたい。
少なくとも議論の発端の「クラスパスには環境によってかきかえるものを置いてはいけない」というのは、そうとはいえないんだよね?
>>346 お手軽プログラムではそうとはいえない。
大規模プログラムでは、結論は出ていない。
348 :
デフォルトの名無しさん :04/09/12 19:41:43
あと、論点はずれるが、クラスパス・ルートにリソース置くのはよくないよな。 ソースはパッケージで名前空間を独立させているのに、 リソースだけ独立させないのはいかんだろ。
349 :
デフォルトの名無しさん :04/09/12 20:11:33
ImageReaderでアニメーションGIFデータを読み込んだのですが 各ページの表示X座標とY座標を取得する方法が分かりません。 どうすれば取得できるのでしょうか?
>>301 氏
この間AppletでJScrollPane使ったから、サンプル投下します。汚いですけどね。
Dummy = new JPanel();
Panel = new JPanel();
Dummy.add(DrawMapPanel);
ScrollPanel = new JScrollPane(Dummy);
this.add(ScrollPane);
この構成はJScrollPane->JPanel1(Dummy)->JPanel2(Panel)ってなってます。
なんで、Panelを重ねるかと言うと、JScrollPaneに載ったJPanelのサイズは
JScrollPaneのサイズに勝手に上書きされてしまうからです。※
よって、一個どうでもいいPanelを挿入してやると。
※私の場合は、JScrollPaneのサイズ>JPanelのサイズの時に上書きされました。
逆だと問題なし。よって参考にならないかも。
あと、私も質問を。
Appletからweb鯖のファイルを選択できるダイアログを作りたいんですが
JFileChooserもFileDialogもURIが通らなかったので、何か良い解決策をご存知の方は是非。
>>351 氏
FTP使ってってのは考えていたけど、ここまでしっかりしたリソースがあるとは。
情報提供サンクス!
Swing で マルチスレッド を使用し、 親スレッド(?) のボタンを押したら 子スレッド が起動し、 子スレッド から 親スレッド(?) の Label の内容を変更したいのですが、上手く行きません。 良い例などありますでしょうか。
>>353 よし、それじゃあいいことを教えてやろう。
よく聞け。
耳の穴かっぽじってよく聞け。
そ れ は マ ル チ ス レ ッ ド で は な い
355 :
デフォルトの名無しさん :04/09/13 00:24:22
ボタンにスレッドが関係あんのか?
>>353 どう上手くいかないのかわからないと答えようがない
サッパリわからんってこと?
interface Tekito{ void print(); } class ClassTekito{ Tekito tsukuru(){ InnerImpTekito tkt = new InnerImpTekito(); return tkt; } class InnerImpTekito implements Tekito{ void print(){ System.out.println("適当適当"); } } } public class Main{ public static void main(String[] args) { ClassTekito clstkt = new ClassTekito(); Tekito tkt = clstkt.tsukuru(); tkt.print(); } } ----------------------------------------------------------------- <こんなエラー> ClassTekito.InnerImpTekito の print() は Tekito の print() を実装 できません。スーパークラスでの定義より弱いアクセス特権 (public) を割り当てようとしました。 ↑なぜでしょうか?教えていただきたいのですが…。
スーパークラスでの定義より弱いアクセス特権 (public)を割り当てようとしたからって書いてあるだろ。 日本語読めないのか?
>>357 Tekito#printがpublicなのに、InnerImpTekito#printがパッケージプライベートだから。
クラスTekito・・・
>>125 ・・・・
>>34 ・・・またおまえか!
abstractの次はinterfaceか!
*************************************** Tekito を NG ワードにブチ込みましょう ***************************************
いやですね、Swing 使って鯖作ろうとしてるんですけど、 子スレッドで鯖を起動するようなってるんですよね。 んでその子スレッドから Swing の Label の内容を変更しようとしても、 うまくいかないんです。help me
すみません、もう一回書きます ┌────────────┐ ├────────────┤ │ │ │ ┌─────┐ │ │ │ 鯖起動 │ │ │ └─────┘ │ │ │ │ ステータス(JPanel) │ └────────────┘ こういう感じで、ボタンを押すと子スレッドが起動し、ServerSocketで鯖として活動します。 んで、その子スレッドから、 JPanel の内容を変更したいのですが、 うまく行きません。(コンパイル時にエラーは出ないのですが、実際には反映されません) いい例などありませんでしょうか・・
>>364 英語読めませんすみません
BorlandのJBuilder使ってますはい
>>350 さん
ご丁寧なご返答本当にありがとうございます。
JPanelの部分で、setSizeをsetPreferredSizeに変えたら、
JScrollPane内でスクロールできるようになりました。
どうも、setSizeとsetPreferredSizeの違いがわかりませんねw
両方の違いがあいまいすぎる。
だれかその両方の違いについて教えていただけないでしょうか?
両方ともサイズの変更を行うものなんでしょうけども。。。
>>365 それは、読んでないから読めないだけだ。
嫁。単語くらい調べろ。
369 :
306 :04/09/13 02:19:10
>>367 ありがとうございます。
英語力は低いのですが、
なんとなく読めるので、読んでみたいと思います。
どうも。
>>367 ありがとうございます。
英語力は低いのですが、
なんとなく読めるので、読んでみたいと思います。
どうも。
>>353 SwingUtilities.invokeLaterあたりの問題だろう。
>>366 Swingコンポーネントのサイズを変えるためには
基本的にsetPreferredSizeを使いsetSizeは使わない
(というかたいていは使っても意味がない)。
なおsetPreferredSizeも「適切なサイズ」を設定するだけで実際のサイズは
レイアウトマネージャが決めるから、設定したサイズそのものになるとは限らない。
>>371 なるほど。
レイアウトマネジャー絡みなために、推奨されるサイズってことになってるわけですね。
ありがとうございました。
>>370 技術文書は、文学的な表現もないし、専門用語は日本語でも結局カタカナだから、読みやすい。
嫁。
374 :
デフォルトの名無しさん :04/09/13 02:52:36
javaに限った質問ではないんですが、 左上の座標(x,y)、縦横の長さ(a,b)がわかった長方形が2つあるとして それらが重なっているか否かを判定するのに、いいアルゴリズムは無いですか?
>>374 アルゴリズムっていうか、普通に判定すれば?
376 :
デフォルトの名無しさん :04/09/13 02:55:57
>>374 普通にって、
fillRect(x1,y1,a1,b1)
fillRect(x2,y2,a2,b2)
の2つがあるとすると
どうすればいいんでしょうか・・
xについて重なる・含まれる・重ならない考えると6通りあって、yについても6通りあるから、適当に表作って考えれ。
まー、この程度自力で考え出せ、と言いたいところだが、 直方体の交差は public java.awt.Rectangle#intersects(Rectangle) (メソッド名末尾のsを忘れずに) で分かる。 境界値をどう扱うかはちゃんと確認すること。
381 :
374 :04/09/13 03:19:09
>>378 そんなメソッドがあったんですか・・・
ありがとうございます
今自分で考えてたのは
物凄い長いのになってしまいまして・・
>>381 378のを使わなくても < と && 使えば一行でかけるだろ。アホ?
383 :
374 :04/09/13 03:41:49
アルゴリズムを自分で考えたら
((atr[0]-40<p2.x)&&(p2.x<atr[0]+30))||((atr[1]-40<p2.y)&&(p2.y<atr[1]+5))
というのになってしましました。
>>376 の表記に準えると
x1 = atr[0], y1 = atr[1], a1 = 30, b1 = 5
x2 = p2.x, y2 = p2.y, a2 = 40, b2 = 40
と思って下さい
とにかく、
>>378 さんのでスマートに解決しました
ありがとうございました。
385 :
デフォルトの名無しさん :04/09/13 04:04:32
KeyEventで 日本語キーボードの * :け と書いてあるキーにあたるのは VK_???? の何ですか?
387 :
デフォルトの名無しさん :04/09/13 04:12:14
>>386 やってみましたがコンパイルエラーになりました
あなたの環境ならこれで通るんですか?
389 :
デフォルトの名無しさん :04/09/13 04:25:31
アスタリスクのスペルが間違ってただけでしたorz... しかも、コンパイルは通ってもキーは反応しません 仕方がないので他のキーを使います ありがとうございました
>>389 それは天気ーのじゃないの?
VK_COLONで。
392 :
デフォルトの名無しさん :04/09/13 06:18:14
質問です。
フレームの中の上部にボタン2つ、下にボタンによって切り替えたいPanelがあります。
下のPanelは初期画面にタイトルの様なPanelを用意して上部のボタンを押すとタイトルのPanelがそのボタンの内容のPanelに切り替える様にしたいのですが
うまいやり方が見つからず、前スレにてカードレイアウトについて載っていたのでカードレイアウトで挑戦してみたのですがうまくいきません・・・。
ttp://www.ics.kagoshima-u.ac.jp/edu/ProgramingJava/Gui/s4.html 自分のやりたいことはこのようなことなのですが、
ActionListenerに適用できませんと言われてしまいます。(ボタンを押すという所が上記ページではよくわからなかったので
馴染みのあるActionListenerに置き換えたのがうまくできない理由なのですが・・・)
こういう場合カードレイアウトでやるのがベストなのでしょうか?
それともこのケースにふさわしい他の方法があるのでしょうか?
ほんと初心者的な質問ですいません。アドバイスお願いします。
高速コンパイラjikesを使って、コンパイルしようと思ってるのですが、 jikes.exeを sdk1.4.2/binに入れてコマンドウプロンプトでjikes 〜.java を入力するとエラーが出てしまいます。 何か設定を変えないといけないのでしょうか?もしjikesの使用方法について わかりやすく書かれてるサイトがあれば紹介していただけないでしょうか?
>>393 よくわかってないのなら標準のつかえ
コンパイル速度以前の問題だろ
エラーの内容を書かないと言うことは、さては
>>393 は釣りだな?
終わらない夏
http://www.mit.msn.to/devel/jikes.html を見て試してみると、コマンドウプロンプトではなんとかコンパイルできました。
で実際はeclipseのantで行いたいのですが、以下のビルドファイルを実行したら
<project name="FirstProject" default="compile">
<property name="build.compiler" value="jikes"/>
<target name="compile">
<jikes srcdir=".." destdir="..">←
<bootclasspath>
<pathelement path="c:/j2sdk1.4.2_05/jre/lib/rt.jar"/>
<pathelement location="c:/j2sdk1.4.2_05/jre/lib/rt.jar"/>
</bootclasspath>
</jikes>
</target>
</project>
←の部分について Could not create task or type of type: jikes.というエラーが発生してしまいます。
<property name="build.compiler" value="jikes"/>という記述を書けばエラーにならないと思うのですが、
ビルドファイルの内容にどこか誤りがございますでしょうか?
よろしくお願いします。
>>397 ant の coreタスクや optionalタスクに jikes ってあったっけか?
もしくは自分で jikesっつーカスタムタスクを作った、とか?
jikes 使う場合は javac タスクで
<javac srcdir=".." destdir=".." compiler="jikes" executable="{jikesのパス}" />
とかするんじゃなかったっけ?
間違ってるかも知らんので ant のマニュアル見てちゃんと調べてね。
>>397 build.compilerプロパティでjikesを指定してもいいし、
398のように<javac>タスクの属性で指定してもいい。
でも使うタスクはあくまでも<javac>
あと余計なお世話だけどeclipse3.0からantは新たにVMを別プロセスで立ち上げ
その上で走らせるのがデフォルト設定になった。だからそのままjikesを使うと
ビルドのたびにVMプロセスが一つ、jikesのプロセスが一つ生成されるよ。
もし速いからjikesにするとか思ってるのなら、ちゃんと設定しないと
へたしたらかえって遅くなるかも。さらにうっかりプロジェクトのプロパティで
builderを殺してなかったらさらに時間かかる。
Eclipseのコンソールってantから呼び出したjavacが吐くエラーメッセージには 対応していてスタックトレースのソースファイル名と行番号 のとこクリックするとエディタで開いてくれたりするけど、 jikesが吐くエラーメッセージには対応してたっけ?
401 :
デフォルトの名無しさん :04/09/13 17:30:06
こんばんわ JPanelのグラフィック処理を自前で処理したいので、JPanelを派生させて独自クラスを作りました。 class MyJPanel extends JPanel implements ActionListener{ public MyJPanel() { } protected void paintComponent(Graphics g) { } } で、このpaintComponentは、通常だとJavaVMが描画更新の際に、自動的に呼び出されますが、 こちら側(プログラマー側)でpaintComponentを呼び出したいのですが、どのようにすればいいのでしょうか?
402 :
401 :04/09/13 17:49:44
何かのAPIを呼び出すことで、 paintComponentに描画イベントが通知されるみたいな。
repaint
>>404 それ、runというインスタンスのjLabel1と
frameというインスタンスのjLabel1は別物。
>>405 さん
なるほど・・
>>406 さん
了解しました。やはりちゃんとした本を一冊でも買うべきですよね。。
>>404 それスレッド分ける必要ないとか、インスタンス
って知ってる?とかは誰か指摘してくれるとして...
フレームを画面の真中に出す処理とかclose処理とかが
古臭いのがなんかや。404くらいのレベルで下位互換性
考えるとは思えないからどっかからコピペだと思うんだけど...
>>407 キミ、前スレにもいただろ・・・
まったく同じ失敗してるし、スレッドのテストにしては、
意味不明なテストの仕方だし・・・
もう訳わかんないよ・・・
>>408 これ、JBuilderで作ったんだと思うよ。
前スレでもそう言ってたし、
俺もJBuilder持ってるから分かる。
へぇ、JBuilderってオブジェクトの遅延生成しないんだ。
標準出力になら、うまく出力してくれるんですけどね・・・ 前スレでも書きましたが、インスタンス化しても変化ありません・・・
うるせーバカ。ちゃんと勉強してくるまで二度と現れるなハゲ。
俺思うんだけどさ・・・ よく分かってないのにJBuilderとか使うのって良くないと思うんだよね。 まずは自分でウインドウが作れて、ボタンが作れてって、 そういうの理解して、不精するため(?)にJBuilderみたいなツール使えばいいと思う。 よくわかんないけど、JBuilderさんがウインドウ作ってくれるみたいなのだと、 上達も遅れるだろうしさ・・・ 俺もJBuilderがキャンペーン中とかで安くて買ったけど・・・ まだJAVA勉強中の身だから、JBuilder使わずエディタ&javacで勉強してるよ・・・
Jpanelに表示されてる画像をjpgやbmpなどで画像ファイルに保存する方法 知ってる人がいたら教えてくれませんか? paintcomponentメソッドを使って描画したものです。
あ・・なんとかできました。 ご迷惑をおかけしました。
あの、ここ1週間くらいプログラミングするにあたっていろいろな言語学んだのですが javascriptはjavaはjavaでもぜんぜん違うそうですが、どうなんでしょうかね? やはりC#やjavaに負けてしまいますかね??
>>417 何がしたい?
何が作りたい?
HPでちょっと見てくれよくしようとしてるだけ?
だったら、JavaScriptは最適だよ。
ブラウザによって挙動が違ったりするけど。
C#やJAVAに負けるかと聞かれると・・・
まぁ、C#やJAVAの方が範囲広い分負けてるのかなぁ〜・・・
あまり勝った負けたってのはないと思うけどね・・・
その時々で合った言語使う物なんだし・・・
421 :
デフォルトの名無しさん :04/09/13 22:35:14
Rhinoってのもあるしな。 JavaScriptがブラウザだけのものじゃないってこった。
>>417 C# や Java に負けるとか、そんなもんじゃない。目的が異なる。
Javascript はブラウザ上でのちょっとした処理がメイン。
C# や Java はサーバ上で業務ロジックを組んだり、
スタンドアロンアプリケーションが構築できる。
Java や C# はシステムのメイン言語となるが、Javascript は
おまけ。
>>みなさんアドバイス有難うございます。 Javascriptはなんだか簡単でコンパイルなど無くてなんか謎でしたがスッキリしました。 用途。これ重要ですよね。今はC#かJavaどちらを本格的にやろうかと迷っていますが C#はMSがこれからすごく力を入れていきそうですし、Javaは世界のプログラマさんですし。。 昔NESのパソコンがはやっていた頃はまさかMSがこんなにシェアを占めるなんて思っていた人は 少ないと思います。時代の流れは恐ろしいものですよね。MSもこう考えると微妙なとこがありまして やはりJavaを本格的にやろうと思ってたりします。 思ったこと書いてたら意味不明に(ny
NESってファミリーベーシック?
425 :
デフォルトの名無しさん :04/09/13 23:47:37
OpenNMSを日本語化した人いる?
NECの間違い・・・かな DOSもシェアかなりとっていたし、その前のBASICもシェアかなりもっていたことから 数十年MSはプラットフォームトップシェアとしてなんにかわってないよ
>>424 ファミコンのことですよ。
Nintendo Entertainment System
428 :
デフォルトの名無しさん :04/09/14 03:35:34
質問です。 javaで、1秒ずつカウントダウンするスレッドを作りたいのですが public void run(){ try{ while(true){ Thread.sleep(1000); t = t-1; time.setText(Integer.toString(t)); } } catch(Exception e){} } とすると、setTextがある行でスレッドが止まってしまいます(これをコメントアウトすると動く) tはint型変数、timeはJLabelです どうして止まってしまうのでしょうか
repaintとかでへんなことしてない?
へんなことって・・エッチなこと?
>>414 んなときはJBuilderの変わりにEclipse + Ant使うのがおすすめ
432 :
デフォルトの名無しさん :04/09/14 06:14:21
>>429 Appletのイベントループを止めてるからだよ。
メインスレッドの中でwhileの無限ループなんて作っちゃダメ。
ちゃんとマルチスレッドにしる。
>>428 エラー書いてないけど実行したときにtimeがNullなんじゃねの
434 :
デフォルトの名無しさん :04/09/14 12:52:28
サブクラスをスーパークラス型で生成することがありますが、 どんなメリットがあるのでしょうか? 例えば、 class A{ int hoge; void foo(int aho){ hoge = aho; }} class B extends A{ double voke; void unchi(double dadada){ voke = dadada; }} のとき A nullpo = new B(0.72); とか
>>414 ウィンドウ出すことやjavacコマンドの使い方なんかは本質的なことではないので、JBuilderやNetBeansでまずプログラムに親しむのもあり。
>>434 > サブクラスをスーパークラス型で生成することがありますが、
> A nullpo = new B(0.72);
「スーパークラス型で生成」はしてないね。
スーパークラス型に代入はしてるけれど。
サブクラス型で新たにアクセス可能なメソッドやフィールドを宣言してないか、
それらを使う必要が無いと判断すれば、スーパークラス型に代入しても問題ないね。
たぶん、そーゆー場合はスーパークラスのメソッドの何れか(あるいは全部)がオーバーライドされてるんだろう。
例: InputStream in = new FileInputStream("hoge.txt");
>>414 RADツールとIDEは別のものという認識をもつと
選択肢広がるのにね。
またインターフェースプログラミングについての話か・・・ これJavaに限った話じゃないし、前スレで荒しがでたしな VB.netでもc#でもオブジェクト指向がまとうな言語なら基本中の基本で Javaだけに関した話ではないからオブジェクト指向の勉強した方がいいと思われ
List list = new ArrayList(); Listのインタフェースで定義されている機能しか使わない場合 インタフェースを狭める方向に記述したほうが保守性が上がる
変数を「オブジェクトそのもの」と思うからインタフェース型の変数に代入する意味がわからなくなる。 変数は「オブジェクトを操縦するリモコン」だと思えばよい。変数の型はリモコンの種類。
オブジェクトと言う言葉の適応範囲は広い。
インスタンスもオブジェクトだし、配列もオブジェクト。
厳密には変数もオブジェクトだし。
それを考えると、
>>442 の話は少しおかしく思う。
また不要な例えを出して混乱させる奴が出てきたよ・・・・
>>442 リモコン? 俺はよけい分からん。
interface は「界面仕様」のみを表し、class は「界面仕様」+「実装」を表す。
変数宣言の左側の「型」は、「界面仕様」としてしか使われず「実装」は無関係。
>>443 インスタンスそのものや配列そのものはオブジェクトだが変数はオブジェクトじゃない。
(プリミティブ型が云々という揚げ足取りじゃなくて)。
クラスのオブジェクトやメソッドのオブジェクトはあるけど、変数のオブジェクトはないね。
うーん??? 変数って、どの変数でも宣言すると、this.hogeのような形になるでしょ。 これが変数がオブジェクトだっていう証拠じゃないの? 何か俺勘違いしてるかえ?
変数はプリミティブ型と参照型(オブジェクト)の 2 種類しかないだろ。
うーん・・・何か納得いかないなぁ〜・・・ たとえば、hoge.set()ってのは、 スタティックが付いてればクラスメソッドであり、 付いてなければ、インスタンスメソッドだよね。 大きく言えば、オブジェクトだよね。 だとすれば、hogeクラスのhage変数は、 スタティックが付いてればクラス変数であり、 なけらばインスタンス変数。 それもオブジェクトだよね・・・? だから、やっぱ大きく言ってみれば全部オブジェクトなんじゃないのかな〜っと・・・ 個々で見るんだたら、メソッドはオブジェクトじゃないって言ってるような物じゃない?
うーん・・・ やっぱ、オブジェクトと言えば全部がオブジェクトなんだと思う。 オブジェクトと変数という分け方が間違ってるっぽい。 分けるなら、クラスとメソッドと変数だと思う。 で、どれもがオブジェクト。
>>450 いや、だからクラス変数であろうがインスタンス変数であろうが、
プリミティブ型であればオブジェクトじゃないって。
で、static での変数アクセスはクラスオブジェクト経由にアクセス、
インスタンス変数へのアクセスはインスタンス(オブジェクト)経由でアクセス。
>>452 なんでプリミティブ型はオブジェクトじゃないの?
>>452 うーん???
アクセスの仕方(参照型)でオブジェクト???
だったら、クラスメソッドはオブジェクトじゃないって事にならない?
finalが付いたクラスもオブジェクトじゃなくなるって事?
>>455 それは要するに狭義のオブジェクトだろ。
今の話は広義のオブジェクトだ。
Javaの場合オブジェクトとはObjectクラスのインスタンスとして扱うものだ。 Javaには変数をObjectクラスのインスタンスとして扱う仕組みはない。 よって変数はオブジェクトではない。
>>456 それいえば、if文も+演算子もオブジェクトといえるね。
で、その議論になにか意味があるの?
>>458 >>443 の「オブジェクトと言う言葉の適応範囲は広い。」について、
広義において変数もオブジェクトに含まれる。
JavaのObjectという狭義においては含まれない。
ただそれだけだが?議論も糞も無い。
どんどん混乱してきたぞ・・・
たとえば、どのクラスもObjectを継承してるよね。
で、変数を宣言すると、スタティックだろうが違おうが、
そのクラスの変数になるよね。
って事は、その変数はObjectクラスの内にいてる訳で・・・
>>458 の話も面白い。
たしかに、if文やらfor文やらもオブジェクトになるんじゃないかな〜・・・
たしかに不毛な議論かもしれないけど、結構面白いと俺は思った。
{ 〜 }がオブジェクトであってもいいしね。 extendsとかimplementsとかstaticとかpublicとか、いろんなものがオブジェクトであってもよくなるね。 で、なにか意味が?
あーわかんない! 頭痛い。もう寝とく事にする。
>>460 オブジェクトの中にあるからといって、それがオブジェクトになるわけではない。
>>463 はっきりいって、それじゃ、オブジェクトとはどの実態をオブジェクトと言うの?
参照している変数をオブジェクトと言うの?
単に、
>>451 なんかが言ってるのが広義のオブジェクトで、
>>452 の言ってるのが狭義のオブジェクトで、
お互い定義の異なる「オブジェクト」について語ってるから噛みあってないということを指摘してるだけなんだが、
そこで意味が?とか聞かれてもハァ?としか答えようが無いな。
オブジェクト指向言語の場合、構文要素のすべてをオブジェクトとして扱うことが可能だ。 ただし、実際問題としてそれでは処理効率が悪いので、何をオブジェクトとして扱って、なにをオブジェクトとして扱わないか、取捨選択することになる。 Javaの場合、クラスやメソッドはオブジェクトだけど、変数はオブジェクトではない。{〜}もオブジェクトではない。 C++の場合、クラスやメソッドもオブジェクトではない。もちろん変数もオブジェクトではない。
>>465-466 あ・・・なんかちょっと分かった気がする・・・
オブジェクトって言葉のちゃんとした定義がないのが悪いんだよ・・・
よくみたら、フィールドの場合はオブジェクトだな。 ローカル変数はオブジェクトではない。 publicやらabstractやらはオブジェクトだ。
>>467 ちゃんとした定義は、それなりにある。
けども、言語によってなにがオブジェクトかは異なる。
ここは Java スレだ。
さらによく見たら java.lang.ref.Modifier にはstaticメソッドしかないから、修飾子はオブジェクトとして扱われることはなさそうだな。
それじゃ・・・ 変数はオブジェクトな時とオブジェクトじゃない時とがあって、 その時々でオブジェクトなのか違うのかが変わるって事で。 ひとつおりこうになりました。
473 :
デフォルトの名無しさん :04/09/15 01:40:13
JAI(Java Advanced Imaging,)について書かれた日本語の本、 誰かしりませんかー。 洋書はあるけど、日本語はないっぽくて
>>472 静的に決まるから、「その時々」ではないよ。
感覚的には変数がオブジェクトってのは変な感じがするなあ… 例えインスタンスメンバの変数であっても、それは単なるオブジェクトから伸びる矢印。 オブジェクトと言えるのはあくまでその矢印の先にあるオブジェクト。
>>475 変な感じがしようがしまいが、オブジェクトとして扱えるんだから仕方ない。
それに、その論で行くのであれば、「矢印」の集合である配列がオブジェクトであるのもおかしいね。
というか、クラスがオブジェクトであるのもおかしいし、メソッドがオブジェクトであるのもおかしいね。
言ってみれば、ワサビの無い寿司と同じって事だな! シャリは寿司じゃない。 ワサビも寿司じゃないし、魚の身も寿司じゃない。 全部合わせて寿司なんだ。 もちろん、ワサビが抜けたのも寿司じゃない。
>>476 クラスやメソッドがオブジェクトで云々は、もともとそういう感覚では言ってないんでね。
クラスを表すメタクラスのインスタンスはオブジェクトだけど、クラスと言う物はオブジェクトとみなしてない感じ。
# あくまでそういう感覚の見方ってだけだよ。
で、矢印の集合がオブジェクトってのは、おかしくない。
ってかもともとの言い方で、クラスのインスタンス自体矢印の集合なんだから。
もっと言い換えたら矢印の集合(矢印の起点)として、それ自体が参照先となりえるような空間に存在できる物がオブジェクト。
# あくまでそういう感覚の見方ってだけだよ。
オブジェクトが節(ノード)で、メンバとなっている参照型変数は別の節を指す矢印。 値型のメンバ変数は、節に含まれる(節の一部)な感じ。 節はオブジェクトだが、値型のメンバ変数は節に含まれているだけで オブジェクト(節そのもの、それ自体が節)ではない。 # あくまでそういう感覚の見方ってだけだよ。
>>460 SmalltalkではJavaで言うif文もfor文も実際にオブジェクトです。
482 :
473 :04/09/15 02:48:39
>>479 オブジェクトとして扱える要素がオブジェクトで、オブジェクトとして扱えない要素がオブジェクトではない。
# あくまで、そういう感覚の見方ってだけだよ。
おまえらまだやってたのか
変数がリモコンって見方、そんなに悪くもないと思うけどな…
>>485-486 ただし、配線がつながってる有線のリモコンだ。
大丈夫、必要に応じて繋ぎ変えることもできる。
>>488 オブジェクトから変数はたどれないから、有線じゃないんだよ。
有線て言葉自体に双方向の意味があるのか?よく知らんが… 一方向の有線てことで。
>>490 線がつながってたら、自分につながってる線をたどっていくことができるだろ。
無線だと、自分に信号を送るものを特定できない。
だから、あえて「一方向の有線」というわけのわからないものを持ち出すなら、無線でいい。
というか、別に紐でつながってるって話をしてるんじゃないんだから、 つながっている以上たどる事はできるとかそういう問題じゃないと思うが… まあ、別にこだわってるわけでもなんでもないので分かればなんでもいいけど。
>>492 わざわざ「ただし」として有線にしたわけだから。
>>458 >
>>456 > それいえば、if文も+演算子もオブジェクトといえるね。
Smalltalkか?
リモコンだと特定のオブジェクトに結びついてる感じがでないかな? ってちょっと思ったもんで。 まあ、リモコンが特定のオブジェクトの方を向いてるって事でいいかなって。
496 :
デフォルトの名無しさん :04/09/15 09:57:59
こんにちは Javaで配列内の要素をソートしてくれるクラス・APIはありますか? 初歩的な質問ですいませんがご返答よろしくお願いいたします。
498 :
デフォルトの名無しさん :04/09/15 10:43:16
JavaWebStartのキャッシュはどこに入りまつか? キャッシュのJarを直接実行すると、クライアントJavaとして動作してくれるんでしょうか? その場合はセキュリティはクライアントJavaのポリシーファイルになるんだろうか。
499 :
デフォルトの名無しさん :04/09/15 11:13:50
java で 配列から複数の数字をランダムに取り出すには どうしたら??? 良いのか誰か教えて
>>498 他のプラットフォームでは知らないけど、Windowsなら
${user.home}\.javaws\cacheに、サーバ及びポートごとに分けて配置される。
(${user.home}はここではSystem.getProperty("user.home")取得できるフォルダを指す)
キャッシュ内のjarの実行だけど、JavaWebStartのAPIを使っている場合は
通常のクライアント用アプリとしては動かない。
ある程度の規模のアプリならローカルファイルの参照とか
ネットワークリソースの取得とかやってるはずなので、
基本的にJWSのランチャ経由以外で動くことはないと思っていいんじゃないかな。
まあ、JavaWebStartはオフライン実行もできるようになってるんだし、
そんなに重要な問題ではないと思う。
サンクス
>>500 何でも知ってる方が居られるんでつね。
もう1件教えて下さい。
JavaWebStartでサーバのDBとやり取りする場合は、
やっぱサーバからHTTPでファイル貰うんでつよね?
RMIやJDBC接続なんかしたら、
ファイアーウォールにブロックされるだけですよね?
>>499 ランダム = 配列.get複数の数字();
配列から複数の数字をランダムに取り出しました
ていうか意味不明瞭
503 :
デフォルトの名無しさん :04/09/15 12:39:57
ごめんなさい
>>502 1〜9までの数字を、ダブらないように3回ランダムに取り出したいんですよ。
で!配列に1〜9までの数字を格納して、数字を取り出したいんですけど???
>>501 別にサーバのやりとりはどのようにしようと構わない。
ファイアウォール云々は環境依存。イントラネットでデータベースやアプリケー
ションサーバに直接つなぐことも普通にある。というかJWSとは無関係ですね。
>503 整数なら配列にする必要もないかも…
506 :
デフォルトの名無しさん :04/09/15 13:29:56
>>503 int[] digit = new int[9];
for(int i=0; i<digit.length; ++i) digit[i]=i+1;
Set digitSet=new TreeSet();
while(digitSet.size()<3) {
Integer value=new Integer( digit[(int)(Math.random()*9+1)] );
digitSet.add(value);
}
Iterator it=digitSet.iterator();
int num1=((Integer)it.next()).intValue();
int num2=((Integer)it.next()).intValue();
int num3=((Integer)it.next()).intValue();
int[] digit = new int[9]; Rundom r = new Rundom(); for(int i = 1; i <= digit.length; ++i) digit[i] = i; for(int i = 0; i < 500; ++i){ int idx1 = r.nextInt(digit.length); int idx2 = r.nextInt(digit.length); int tmp = digit[idx1]; digit[idx1] = digit[idx2]; digit[idx2] = tmp; } int num1 = digit[0]; int num2 = digit[1]; int num3 = digit[2];
>>501 なんでwebstartのアクセス方法でファイアウォールの話がでてくるんだろう・・・
jnlpAPIとサンドボックスの勉強しなされ
>>501 別に、サーバーがローカルにあるんだったら、RMIでもJDBCでも構わないと思うが。
あ、ローカルっていうのは、ローカルネットワークね。
511 :
デフォルトの名無しさん :04/09/15 17:31:18
超初心者の質問で申し訳ないのですが テキストボックスに文を入力し、テキストフィールドに出力するとして 出力された文を3行で表示する場合、改行の仕方はどうすれば良いのでしょうか?
>>511 テキストフィールドは改行を扱いませんが。
っていうか、ちゃんとコンポーネントのクラス名書いて。
Java3Dで球や立方体にJPEGファイルから読み込んだテクスチャを貼り付けてみたんですが、 見た感じで数100〜数1000色程度に減色した様な表示になってしまいました。 原因に心当たりありませんか?
514 :
デフォルトの名無しさん :04/09/15 19:54:53
import java.io.*; public class NULLPO{ public static void main(String[] args) thorws IOException{ BufferedReader br = new BufferedReader(new FileReader(args[0])); BufferedWriter bw = new BufferedWriter(new FileWriter(args[1])); String str; while((str = br.readLine()) != null){ String hoge = str.toLowerCase(); bw.write(hoge); bw.newLine(); } bw.flush(); br.close(); bw.close(); }} で、入力ファイルに Λ_Λ (´∀`) <ぬるぽ って書いて実行して見ると 耳が変になっていました。
515 :
514 :04/09/15 19:56:10
ごめんめっちゃずれたわ。ってか 小顔になってしもたw
516 :
デフォルトの名無しさん :04/09/15 23:32:46
Javaは簡単だという人は天才かはたまたバカかの2種類の人間しかいないと 思えるついこのごろですが、Javaを根本から理解できる本を紹介していただ けないでしょうか?哲学、鉄則、格言…何かいいん本はないでしょうか?
518 :
デフォルトの名無しさん :04/09/16 00:56:57
マウスボタンの2と3はどこの部分なのでしょうか? 2が右クリックなのですか?
519 :
デフォルトの名無しさん :04/09/16 01:02:00
OpenNMSって使ったことある人いる? 日本語化なんてされてないよね?
>>516 別にJavaに限らず、ちゃんとした言語は全部難しい。
Javaだったら、仕様書を日本語に訳したのあったと思うけど・・・
その辺読んでみれば詳細などもわかるんじゃない?
普通にJava使う分で、そこまで知る必要ないとは思うけどね。
フレームワークなどの本の方が役に立つっぽい。
521 :
デフォルトの名無しさん :04/09/16 05:58:03
ある文字列のうち、指定したバイト数分の文字列を返すようなことはできますか? 例えば「あいうえお」という文字列で、 そのうちの4バイト分の「あい」のみを取得したい場合です。 substringでは指定した文字数分を返すのでこれではできませんでした。
>>521 char何個で目的のバイト数になるかが既知の場合、
char何個で目的のバイト数になるか試行錯誤して良い場合は getBytes() で解決。
でなければ無理。Java の char は 16ビットで unicodeの一文字だから、
他のエンコーディングで何バイトになるかは変換してみんとわからん。
(実際にはchar1個==1文字とは限らんけど)
524 :
デフォルトの名無しさん :04/09/16 12:40:19
学校の課題なんですが、分からないので是非解答してください、お願いします。 問題 入力されたテキストの内容を操作するjavaアプレットを作成せよ。ここでいう操作とは、文字列の置換を指す。 javaアプレットは以下の機能を兼ね備えているものとする。 1.テキストは、テキストボックスに入力される。 2.被置換文字列、置換文字列はテキストとは別のテキストボックスに入力される。 3.置換結果は、別のウィンドウに表示される。 javaのことさっぱりなので、よろしくです。学校の課題なんですが、分からないので是非解答してください、お願いします。
526 :
デフォルトの名無しさん :04/09/16 12:46:33
ジャバネット高田
ツマンネ なのに何故だろう。 あのBGMと、高田社長がJavaの解説をしてる様子が頭から離れないんだ。
DoJa 3.5でswingのjavax.swing.JLayeredPaneみたいに階層を指定する方法ってある? 例えばアプリで、ソフトキーでメニュー表示させた後にメニュー閉じるとメニュー開く前に戻る感じ。 メニュー開く前のユーザの入力を一々記憶して、メニュー閉じたらそれを復元する方法しか俺には思いつかんorz
ファイルやディレクトリの絶対パスってどうやって取得するんでしょうか?
>>524 夏休み、遊びたおすから・・・
復習しれ。
ごめん、ちょっとスレ違いだった。。
SDKの最新バージョンをDLしてJavaの入門書を買ったんですが、SDK1.4しか解説してありませんでした 1.4と最新バージョンの違いを教えてください また不具合はないでしょうか?
535 :
デフォルトの名無しさん :04/09/16 21:22:37
>>534 そういうことは違いを見つけてからで直してこい。
Windows上で、Swingなアプリに、MS PAINTからクリップボード経由で画像データを渡す方法ってあります?
このスレッドを見ていて、いつも思うことなのだが、 Swingスレッドやデスクトップ系Javaスレッドを別個に設けるよりも、 iモードスレッドのように、 このJava質問スレッドを 初心者向け質問と、それ以外のJava質問・雑談に分けたほうがまだいいかもしれない。 // まあ、過去に上級者向けか中級者向けかのスレッドが現実に作られ、 // そして、過疎化したことはあったわけだが。
初心者無視スレはネタスレだと理解していたが......
おまえはスレ立ててみたいだけちゃうんかと
>>541 抽象クラスについての話題で毎回100も200もレスが消費するスレッドとは別に、
クライアントサイドやデスクトップのJavaについて語る専用のスレッドが欲しいだけだよ。
JavaWebStartとかRbotoクラスとか。
サーブレットスレがあるんだからクライアントサイドスレがあってもいいとは思うよ。 流行らないだろうけど。
546 :
デフォルトの名無しさん :04/09/16 23:21:40
Java 雑談スレはあったほうが良いような気がしてきた。
550 :
デフォルトの名無しさん :04/09/17 13:56:19
socket接続してるとこにsignal飛ばして止めたりできますか? Redghat9、jdk1.4でつ
質問の意味がわからん
552 :
デフォルトの名無しさん :04/09/17 14:04:06
>>551 俺もあまりわかってないからなぁ・・・
Javaで実行中のプロセスに対してsignal送れるかどうか。
…でわかる?
>>552 kill -HUP とかをしたいってことか?
Javaでサーバプロセス常駐させて、そこにコマンド送ったら、そのサーバプロセスがシステムコマンドを発行するとかどうよ?
ぜんぜん中身しらずにCommons Daemonを勧めてみる
>Redghat9 何より先にこんな名前のOSは聴いたことないんだが・・・ と思いつつググッて見たらいっぱい引っかかるではないか
>>557 超ゆーめーですよ。
ポリフォーリズムなみ。
559 :
デフォルトの名無しさん :04/09/17 16:24:42
String allmember = null; ResultSet rs1 = dba.executeQuery("SELECT * FROM test.member WHERE year='"+year+"'"); while (rs1.next()) { allmember = rs1.getString("s_id"); ResultSet rs2 = dba.executeQuery("SELECT MAX(no) as id_max FROM test.msg WHERE code='"+allmember+"'"); rs2.next(); int id_max = rs2.getInt("id_max"); id_max = id_max+1; } このようなプログラムを実行すると java.sql.SQLException: Operation not allowed after ResultSet closed というエラーが発生してしまいます。 while(rs1.next())で複数回繰り返されるはずだったとしても、 1回目を実行し終わって、2回目を実行しようとするところでエラーが発生してしまいます。 ResultSetを二つ同時に使うことはできないんでしょうか?
>>559 dbaがjava.sql.Statementであると仮定して、Statementオブジェクトをもう一つ用意。
てかPreparedStatement使え。
>>559 dbaのオブジェクトを共有できないので
dba1、dba2みたいに二つ作ってあげればいいよ
>>559 というか、一回のSQLで取ってこれるのでは?
SELECT code, MAX(no) as id_max FROM test.msg inner join test.member
on test.msg.code = test.member.s_id
where test.member.year = xxxx
group by code
解決しました。ありがとうございます。
>>560 >>562 オブジェクトを二つ作ることで動作しました。
>>561 PreparedStatementを使って作り直してみました。
同じSQL文を何度も実行する場合はPreparedStatementが良いんですね。
>>559 他の部分との関係で、そのSQL文ではうまく動作しませんでした。
>>564 一回実行するだけでもPreparedStatementが良い
>>565 そうそう、SQL文のサニタイジングもしてくれるしね。
>>561 相手のレベルに応じてレスを変えるくらいの頭は持とう。
>>567 実際にPreparedStatement使って解決してるんだからいいじゃん。
>>567 と同じく俺も心配してたが
ループの内側でPreparedStatementを生成してる希ガス
570 :
デフォルトの名無しさん :04/09/18 12:14:47
おはようございます。質問あるんですがよいでしょうか。 JavaApplet 作ってるんですが、出来上がったリソース類をまとめ ようとしています。具体的にはクラスファイルのあるディレクトリに parts というディレクトリをつくり、その中に画像、au、midi ファイル を全部まとめて放り込んで、jar cf test.jar test.class parts で jar にまとめました。この状態でブラウザから呼び出すと、画像の リソースはきちんと読み出せるんですが、au と midi が正常に読み 出せないっぽくて困ってます。以下、読み出し部分です。 private AudioClip[]sound = new AudioClip[1] ; private AudioClip[]midi = new AudioClip[1] ; try { sound[0] = getAudioClip(getCodeBase(),"parts/sound.au") ; } catch (Exception e) { System.out.println("取得に失敗しました。") ; sound[0] = null ; } try { midi[0] = getAudioClip(getCodeBase(),"parts/midi.mid") ; } catch (Exception e) { System.out.println("取得に失敗しました。") ; midi[0] = null ; } この書式だと、jar にまとめない状態だときちんと再生されるんです けど、jar にまとめると再生できなくなってしまいます。midi だけ でなく、au も再生できないので、midi がサポートされていないという 問題とも違うと思われるのですが・・・ 是非お知恵拝借したく。できれば、Sun 、Microsoft 両方の JVM で 変更無しで動く方法だと嬉しいのですが。よろしく御願いします。
>>570 Exceptionは自己流のエラーメッセージに置き換えないで、
ちゃんとスタックトレースが読めるように処理しようね。
特にデバッグ中は。
572 :
570 :04/09/18 12:19:48
570 です、連続投稿ご容赦。 加えて、Java アプレットで midi を「正確に」再生させる方法で 簡単な方法はありますか?570 の書式だと、Sun の JVM では一応 再生はできるもののテンポがギクシャクした感じになってしまうし Microsoft の JVM では再生すらされません。ゲームのBGMなの で細かい制御はできなくてもいいのですが、再生、停止、ループが 安定してできれば十分です。よろしく御願いします。
574 :
デフォルトの名無しさん :04/09/18 12:58:22
>>570 sound[0] = getAudioClip(getClass().getResouce("/parts/sound.au")) ;
ではどう?
>>570 いつも、new JarFile("filename").getInputStream(new JarEntry("filepath"))使ってました。
こんなに簡単に読めたんですね.....
MicrosoftのJVMはau形式のファイルしか再生できなかったとおもう。 auコンバータなどで検索をかければ、 wav形式のファイルをau形式のファイルに変換するフリーウエア等がみつかるとおもうので、 midiをwavやauに変換するフリーウエア等も組み合わせてau形式のファイルにするのがいいかと。
>>572 ちゃんとした音楽ならJavaSoundしかない
MSVMはもはや新規インストールできないわけで切り捨ててもいいだろう
MacOS9以前や、マイクロソフトのJVM等はあきらめるというのも、 一つの考えかたかもしれない。 かなしいが、OSX以外のMacで動く、最新のJVMなんてなさそうだしなあ。
Javaつかえねー
>>579 |
|
ぱくっ|
/V\
/◎;;;,;,,,,ヽ そんなエサで(ry
_ ム::::(,,゚∀゚)::|
ヽツ.(ノ:::::::::.:::::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
macのvmはapple製なの?そこで信用できないんだけどまた独自仕様満載なわけ?
???
583 :
デフォルトの名無しさん :04/09/18 20:17:01
ちょっと知恵を貸してください。 MVCモデルに基づいてプログラムを作ろうと、まずMODELから作り始めました。 そしてMODELの中で、 System.out.println("処理中です\n"); みたいな感じでメッセージがコンソールで出るようになってたんです。 プログラムが一通りできて、swingでVIEWを作り始めたのですが、 先ほどの、「System.out.println("処理中です\n");」をJTextAreaにログみたいに表示させることにしました。 ここで、問題が・・・ 最初、staticなメソッドで public static PrintText(String message); みたいなメソッドを作って、先ほどの、「System.out.println("処理中です\n");」 をそのまま 「Hoge.PrintText(("処理中です\n");」 と置き換えて作りました。 しかし、後に、VIEWにstaticにMODELがアクセスする構造だと、 複数のインスタンスを作るような状況だと困る状況が出来たのです。 (すべてのVIEWインスタンスで、JTextAreaが共通になる) さて、 public static PrintText(String message); メソッドを何とかしなくてはならない訳ですが、 MODELの中の該当クラスに全てVIEWへの参照を持たせてTextAreaへアクセスをするようにするとかなり汚い作りですよね? こういう場合どうすればいいと思いますか? 困っています。アドバイスお願いします。
>>583 >public static PrintText(String message);
>メソッドを何とかしなくてはならない訳ですが、
>MODELの中の該当クラスに全てVIEWへの参照を持たせてTextAreaへアクセスをするようにするとかなり汚い作りですよね?
なぜ汚いと思うのかが謎。
それよりもPが大文字な方が汚いと俺には思える。
それにしても処理中ですというログが出るということは
モデルだけでなくコントローラも含んでると思われる。
ログをビューと思うのもおかしいしそもそものMVCとしての設計もおかしい。
>>583 >System.out.println("処理中です\n");
とか
>「System.out.println("処理中です\n");」をJTextAreaにログみたいに表示
とかのコードをモデルの中に埋め込むという時点で道を誤ってないかな。
586 :
583 :04/09/18 20:39:20
う〜ん(汗)やっぱ汚い作りですよね。
実はコントローラの概念がはっきり分かってないせいもあります。
>>584 >なぜ汚いと思うのかが謎。
>それよりもPが大文字な方が汚いと俺には思える。
すみません。元のコードはPは小文字です。
だってほぼ全てのMODELにVIEWへの参照が埋め込まれるんですよ?
という事はMODEL単体では動かない訳ですよ。汚いと思います。
ログをVIEWに乗せる前に「ログのモデル」が必要な気がしてきました。
>>585 じゃあ、ログ的なメッセージを出力するにはどうしますか?
JAVA Applet と JAVA Script の違いを教えてください
ジャイアント馬場とジャイアントコーンくらい違います。
あ、ひょっとしてlog4jみたいに、 ログ専用クラスを作って、それから出力先への参照を持たせればいいのかな? その場合ログ専用クラスはstaticになっちゃう結果は同じか・・(汗) どうすればいいかわからないです。
portlet と sqlet の違いを教えてください。
デフォルト と デフォルメ の違いを教えてください。
>>583 なんだかよくわかりませんがMVCに拘りたいのなら、
イベントとリスナーの仕組みを使って、
イベントクラスでラップしたログをModelからViewへと飛ばしてみてはどうでしょうか。
593 :
デフォルトの名無しさん :04/09/18 21:47:35
>>583 public interface Logger {
public void printMessage(String s);
}
public class SystemOutLogger implements Logger{
....
}
public class TextAreaLogger implements Logger{
....
}
interface Loggee {
public void setLogger(Logger logger);
}
public class LoggeeObject implements Loggee {
private Logger logger;
public void setLogger(Logger logger){ this.logger = logger; }
void log(String s){ if (logger != null) logger.printMessage(s); }
}
public class AnyModel extends LoggeeObject {
anyMethod(){
....
log("ぬるぽ");
}
}
>>593 きれいだなあ。
少なくとも俺には汚くは見えない。
明快なお答えありがとうございます。
でも回答を待っている間にMODELに全部VIEWの参照を埋め込んじゃいました(汗)
すっげー汚いです・・。
>>592 ログを飛ばすという事は、やはりMODELが飛ばし先の参照を持つことになります。
ログクラスをMODELで持って、ログクラスの変更をviewに通知することで、
viewがログクラスを読みに行って画面更新されるのが理想的なMVCモデルな気がします。が、面倒です。
>>593 ありがとうございます。
綺麗な設計ですね。参考にさせていただきます。
というか、私はまだまだ勉強が必要ですね(´∀`;)MVC関連の資料をあさって見ます。
>>595 抽象的なイベントリスナをModelに登録するようにすれば、
それほどは汚くはならないとおもうよ。
ただ、あなたにはそれが汚く感じられているのかもしれないが。
>>597 氏んで詫びろ
ここをそんな下らないことで汚すな
600 :
デフォルトの名無しさん :04/09/19 02:01:09
windowsでantを使っています。 antでビルドを行う際、jarファイルが別パーティションにあるので、classpathに F:\Program Files\hoge.jar といったように絶対パス指定を行いたいと思っているのですが どのように記述すればよいでしょう? <classpath> <pathelemant path="F:\Program Files\hoge.jar"/> </classpath> だとエラーが出てしまいます…
601 :
デフォルトの名無しさん :04/09/19 05:35:13
Apacheの Axis で 簡単なWebサービスをテストしているのですが、 jwsファイルでextendsは使えないのでしょうか? ------- TestExtends.jws ----------- public class TestExtends extends Person { public int getAge(){ return 10; } } class Person { public String getName(){ return "Suzuki"; } } ------------------------------------- ブラウザは真っ白な画面を表示し、Tomcatのログを見ると java.lang.NoClassDefFoundError が吐かれています。 このjwsファイルを別々(TestExtends.jws, Person.jws)に分けて配置すると、 ブラウザに ClassNotFoundExceptionが表示されます。 これって仕様なんでしょうか?
>>600 パス区切り文字には\ではなく、/ を使う。
603 :
デフォルトの名無しさん :04/09/19 13:01:18
Java(tm) House Mailing List Homepage はなくなったんですか? 休止中ですか?休止中ならいつ再開するんでしょうか?
あなたが投稿すれば再開します。
606 :
デフォルトの名無しさん :04/09/20 04:45:26
netbeans 1.6 を使っています。 この中にタイマー(org.netbeans.examples.lib.timerbean.Timer)という beans の部品があるのですが、これを使ってアニメーションを表示するアプレットを作っています。 統合環境の中だとコンパイルと実行はできるのですが、これを 実際に html ページから呼び出そうとすると java.lang.NoClassDefFoundError: org/netbeans/examples/lib/timerbean/TimerListener こんな例外が発生します。 これは起動時にクラスパスを指定しなければならないのでしょうか(アプレットだとどうやって?) その場合、全ての環境で起動することができなくなってしまうのではないでしょうか?
607 :
606 :04/09/20 04:46:43
すみません訂正です。 netbeans 1.6 → 3.6 ちなみに JRE は J2SE 1.4.2 を使っています。 よろしくお願いします。
>>606 そりゃあ、timerbeanをjarの中に入れてやらんと、相手が
持ってるとは限らんわな、という話じゃないの?
統合環境ならnetbeansの中にbeanがあるんだろうけど、
アプレットならアプレットのjarの中に入ってないとだめなん
じゃない? 少なくともアプレット使う人はそんなビーン持って
ないだろ。
>>606 配布するものにそんなもの使うな。
普通にjava.swing.Timerつかいなはれ。
少しお聞きしたいのですが JDK1.1.8以前と以後の大きな変更が知りたいのですが、どのように調べたらよいでしょう? 検索をしているのですがまとめているサイト等が見つからないので困っています API仕様を1つ1つ確認するしかないのでしょうか? すみませんがよろしくお願いします。
1.1.8を調べるんじゃなくて、Java 1.2 (Java 2)の新機能を調べた ほうが早い。java.sun.comでJava 1.2を調べてみそ。 しかしなあ、JDK1.1.8ってもはや「J2SE」ですらないからなあ。
>>612 アドバイスありがとうございます
しかし探し方が悪いのかみつかりませんでした
旧Macでの開発にMRJ(JDK1.1.8程度)を使わないといけないので下調べをしていたのですが、
困りましたね
615 :
デフォルトの名無しさん :04/09/20 22:02:17
616 :
デフォルトの名無しさん :04/09/20 22:18:04
ボーランド8か、懐かしい。。。。 7までは分厚いマニュアルがついてたのに、8からなくなって オンラインマニュアルになったんだよな。
ボーランドが一番ふんぞりかえっていた時代だな 6までガンガン売れていたのに webアプリを30万こえるエンタープライズのみにしたり
618 :
デフォルトの名無しさん :04/09/20 23:02:35
Javaアプレットを作っていて、わからないことが出てきました。 配列に関することです。問題を単純化するとこうです。 void test1(){ int[] t1 = {10}; int[] t2 = {20}; t1 = t2; System.out.println(t1[0]); } void test2(){ int[] t1 = {10}; set(t1); System.out.println(t1[0]); } void set(int[] t1) { int[] t2 = {20}; t1 = t2; } test1とtest2で結果が違います。 Javaでは配列はオブジェクトとして扱われるので参照型なのでしょう。 でもそれ以上は調べてもよくわからないのでよければ教えてください。 長文失礼。
622 :
618 :04/09/20 23:28:55
624 :
デフォルトの名無しさん :04/09/21 09:32:50
HTMLタグを除去する関数ってありますか?
>>624 たぶん無い
正規表現でreplaceしたら?
J2SEのセットアップを実行していたらセットアップがエラーで途中で止まる。 何だこれーー (Windows XP Home Editionで)
629 :
デフォルトの名無しさん :04/09/21 10:48:44
1.1.8なんかつかわず最新版の1.4.2_05を使えばいいのに。 それか、もっと新しいJ2SE5.0 RCを使えばいいのに
631 :
デフォルトの名無しさん :04/09/21 12:06:23
???
633 :
デフォルトの名無しさん :04/09/21 14:18:13
M$製品と違って1.4くらい使っても支障はないだろうに。 どういう顧客なんだかねえ。
いくらよくても動かないバージョンは使えないからな。
>>624 アトマークITにそういうサンプルあったかも?
覚えてる人フォローよろしく
>>633 残念なことにMacの場合、MacOS X より前のバージョンだと1.1.8相当のJREしかない。
613で言ってるMRJってのがその唯一の、Apple謹製のJREね。このバージョンが古いの。
637 :
デフォルトの名無しさん :04/09/21 17:32:44
swingでjtextareaに連続的に書き込むとエラーがでるんですが回避する 方法ありますか?synchronizedは使ってます。
638 :
デフォルトの名無しさん :04/09/21 17:39:35
>>636 中身がUnixなら(ry
*BSDだって雄志が1.4の対応を早めたんだし
>>638 MacOS Xより前のバージョンは、中身がUnixではないよ。
640 :
デフォルトの名無しさん :04/09/21 17:44:21
そういやそうだった。 そんなにMac対応が遅れていたのか? EclipseをMacで使ってJava開発している香具師もいたような気がしたのだが
無知で無能は無理せずRomってなさい。 またはコテでもつけてください。NGワード指定するから。
知ったかさんが一番困るね、ややこしくするだけ
この業界はホントこういうのが多い。他業種に比べ明らかに多いと思う。
>>633 >>638 >>640 のようなのが。
>>643 お前も応えてるわけじゃないし同類じゃないか。
俺もなー
645 :
デフォルトの名無しさん :04/09/21 18:31:16
PowerMacG4はJava2非対応?
>>644 何も答えないのと、いい加減なことを答えるのとでは
大きな違いがあることにも気づかないような奴はどうしようもないな。
>>614 リリースノートが英語っぽいですががんばってみます、ありがとうございます
>>645 G4が非対応ではないのでMacOSXであればJava2対応だと思います
みなさんご意見ありがとうございます、636さんのおっしゃる通りですので苦労してます
ちなみにEclipseもOSXからしかありません
>>647 というか何やってる人?
アプレットでゲームとか?だったらご苦労様・・
むしろ、旧Mac用のアプリケーションをJavaで作らされてるほうがご苦労様だな。
>>648 旧Macだけではないのですがアプリケーションです
Windows、旧Mac、新Macで共通のアプリケーションを作らなければいけないのですがどこまでできることやら
まあ、印刷とかデバイスが絡まないのであれば、それなりになんとかなるな。 ドラッグドロップ必須とか言われなければ。 あれ?Swingって使えるんだっけ? それにしても、Commonsなんかも全滅な感じだから、やりにくそう。
javaを勉強するために友人と共同制作で軽いゲームを作ろうということになったのですが 二人とも共同作業は初心者で(javaも軽くしってるぐらいです(汗)) どうやって分担わけをしたらいいのかわかりません クラス単位で分けてくっつけていくほうがいいのでしょうか? メソッド単位のほうがいいですか? なにかいい方法あったら教えて下さい。
653 :
デフォルトの名無しさん :04/09/22 03:25:24
No suitable driverというエラーでます。 mysql-connector-java-3.0.15-ga使用。 CLASSPATHはセット済みです。 mysqlのtestデータベースにあるsampleテーブルを表示したいのですが… Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/test", "root", "password"); ご教授お願いします。
>>652 メソッド単位って、コンフリクトしまくりそうだが。
クラス単位の方がやりやすい。
さらにゲームは分担がやりにくい。
まあ、画面ごとになるだろう。
656 :
デフォルトの名無しさん :04/09/22 03:30:53
>>654 Class.forName("com.mysql.jdbc.Driver").newInstance();
ってしてますけど
>>656 newInstanceは必要ないと思うのだが・・・
Class.forNameからDriverManager.getConnectionまでのコード見せて。
いや、きっとTomcat使ったWebアプリで、ドライバのjarファイルを WEB-INF/libに置いてないとかそんなのだろ。
>>659 そうすると、Class.forNameでClassNotFoundExceptionが出るはず。
>>652 片方が絵と音楽
もう一人がプログラム
ぶつからんね
・・・というのは冗談で、軽く作るとか言ってもものによる
たとえば初心者に優しく、むかしから基本中の基本の
シューティングなんかは敵キャラの動きを分担して作るとか
とりあえず名前だけでもいいからメインプログラマをたてて
分担の範囲と責任の所在をはっきりさせるしかなかろう
ぶっちゃけ一人で作った方が楽な場合も多いのだ
>>627 セットアップしようとしているもの
Java SDK,SE v1.4.2_05 Windows用 (間違ってませんよね?)
エラー内容
(インストール中にInstaller 情報というウィンドウがでてきて)
このWiondowsインストーラーパッケージには問題があります。
セットアップの一部として実行されるプログラムは正しく完了しませんでした。
サポート担当者またはパッケージのベンダに問い合わせてください。
(とでた。)
そのあと、インストールされているはずのフォルダーにはCOPYRIGHTというファイルだけがある。
>>662 もういっかいダウンロードしてみたら?
「セットアップしようとしてるもの」はファイル名の方がわかりやすい。
質問です。
Java 以下のようなコードを書けることをはじめて知りました。いわば、クラス初期化時に
のみ呼び出される、引数のない無名関数のようなものです。
public class Test {
public static void main (String[] args){
//下の行のコメントアウトをはずせば、bar, barbar も表示されます。
//new Test();
}
static {
System.out.println("foo!");
}
static {
System.out.println("foofoo!");
}
{
System.out.println("bar!");
}
{
System.out.println("barbar!");
}
}
このようなコードが書ける理由は、言語仕様書のどこを見れば分かるでしょうか?
http://www.y-adagio.com/public/standards/tr_javalang/
× Java 以下の ○ Java で以下の
>>664 これがわかると、JDBCでおまじないのようにClass.forNameってやる意味がおぼろげながらわかる。
>>666 ありがとうございます。初期化子は知っていましたが、静的初期化子は知りません
でした。
static がつかない(bar, barbar)場合、これらをなんと呼び、どこで規定されて
いるのでしょうか?
>>667 なるほど、あれは静的初期化子の実行を、目的のひとつにしているのですか。
ありがとうございます。
>>663 ファイル名 j2sdk-1_4_2_05-windows-i586-p.exe
ダウンロードしなおしても同じメッセージが出る。
DLしたら一時ファイルに保存するから、そこを消さないと 新たにDLしたことにならない
>>670 ファイルサイズは53,570,421バイトであってる?
7月に落としたやつのサイズだけど。
>>672 53,570,421バイトになってる。
>>671 1回目のダウンロードと同じくらい時間かかったから、
一時ファイルからじゃないと思う
>>673 もしかしてこういうやつか?なんかたまに同じような質問があるが
>「jre\lib\chaesets.jar:Old File not found. However,a file of the same name was found.No update done since file contents do not match.」
>「JAVA(TM) Update はシステムの更新に失敗しました。」
>553 名前:デフォルトの名無しさん[sage] 投稿日:04/06/01 13:07
>
>>549 >同じファイルがあって邪魔って書いてあるじゃねーか
>jre以下をどかせ
675 :
デフォルトの名無しさん :04/09/22 16:41:56
質問です。 Pro*Cなんかでは、insert文をある程度ためておいて とあるタイミングで一気に流せる仕組みがあるようなんですが (名前は忘れてしまいました) javaで同じように、insert文をためておいて一気に流すようなのを 提供していないでしょうか?
jdbc2.0以上ならバッチが出来る jdbc batch で検索すればすぐにでるぞ
677 :
デフォルトの名無しさん :04/09/22 17:22:14
>>676 レスありがとうございます。
エラー処理が面倒な感じですけれど、適当に試したところ
無事に動いたようです。ちょっとこれからに煮詰めてみます。
再度ありがとうございます。
Updateもなにもインストールに失敗するんだって! 何でだろう?
679 :
デフォルトの名無しさん :04/09/22 17:47:45
>>658 Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/test", "root", "password");
680 :
デフォルトの名無しさん :04/09/22 18:34:47
FreeBSDで linux-sun-jdk1.4.2 を使っています。 java コマンドで 日本語をコンソールに出力できずに悲しんでいます。 2バイト文字がすべて?マークとなります。 Locale.setDefault(Locale.JAPAN); としても同様で 環境変数LANGをja_JP.EUCとしても変わりません。 どなたが ヒントをください。。。
682 :
680 :04/09/22 21:17:03
>>681 アドバイスありがとうございます。
Xを入れていない環境でもフォント設定が必要ということでしょうか?
当方Xを入れていない環境で telnet経由で使っています。
public class test{
public static void main(String args[]) {
System.out.println("あいうえお");
}
}
こんなんで java test > ./tmp なんてやっても
tmpの内容は「?????(改行)」です。
683 :
653 :04/09/22 21:38:03
CLASSPATHを設定せずに、j2sdkとj2reのjre下に mysql-connector-java-3.0.15-ga-bin.jarを置くことで 問題解消しました。
684 :
653 :04/09/22 21:39:33
× jre下 ○ jre/lib/ext
>>683 ようするにクラスパスが通ってなかったと。
そしたらforNameで例外が出るはずなんだけど。
>>652 > javaを勉強するために友人と共同制作で軽いゲームを作ろうということになったのですが
> 二人とも共同作業は初心者で(javaも軽くしってるぐらいです(汗))
> どうやって分担わけをしたらいいのかわかりません
CVSを使えば分担分けする必要はない。
>>687 そうかぁ?分担分けの負荷は下がるが必要が無くなるわけではないぞ?
CVSはソースの配布、バージョン管理、競合が発生した時の解決方法を
提供してはくれるが、それ以上のものではないよ。過度の期待は禁物。
というかCVSサーバどこに立てるんだろうか。sourceforge.jp?
中古のマシンにLinux入れてCVSサーバ立てる
>>687 あふぉがいた
それって分担の解決方法じゃないだろ
分担分けを分ける必要がありますね。
Javaでやるなら、CVSは結構めんどうなことが多いから、Subversionなんかがいい。 とくに、まったりやるときで、クラス名が変わったりパッケージ移動したりが多いと、CVS邪魔。
693 :
デフォルトの名無しさん :04/09/23 07:36:51
担当分けるにしても、最初は共同作業だよ。 1.まず、二人共同でアイデアを出し合って、ゲームの基本ルールを固める。 なんのゲームかにもよるけどここはおろそかにできないぞ。 2.次にゲーム画面を考える。この時、画面の操作系を決める。 もちろんメニューや画面遷移の流れもだよ。 データをロードする、レベルを選択するなんてのもここにでてくる。 キーボードやマウス操作もここで決める。 3.洗い出した操作を一つの独立した機能として捉えて一覧を作る。 4.一つ一つの機能に必要なデータを決定する。 どの機能にどのデータが関係しているかを見極めて依存度を明確にする。 5.依存度が少ない単位で、機能ごとに担当を分けて開発する。 6.開発中に問題がでてきたら、そのつど徹底的に話し合う。
694 :
三流 :04/09/23 10:32:57
質問です。。 String command = "ls -l"; Process process = Runtime.getRuntime().exec(command); InputStream is = process.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); この結果が、 合計 28 -rw-rw-r-- 1 issei issei 1792 Nov 5 23:02 RunLS.class -rw-rw-r-- 1 issei issei 2334 Nov 5 23:02 RunLS.java -rw-rw-r-- 1 issei issei 1977 Nov 5 22:56 RunLS.java〜 -rw-rw-r-- 1 issei issei 1454 Nov 5 22:48 RunPWD.class -rw-rw-r-- 1 issei issei 2916 Nov 5 22:48 RunPWD.java -rw-rw-r-- 1 issei issei 4098 Nov 5 21:45 Test.java といった感じで取得できるのですが、取得した結果を便利に操作したく(たとえば、ファイル名で検索してファイルサイズを取得できるような…)、 配列に納めようかと思っています。自前でライブラリを書きたいのですが、もし、似たような処理をしているサンプルらいライブラリが あれば教えてください。Googleでさがしたんですが、出力まではよかったものの、そこから先を 処理しているところが見あたらなかったので… よろしくお願いします。
695 :
デフォルトの名無しさん :04/09/23 10:57:35
>>694 それは止めた方がいいね。
それは出力を解析して加工するということになるわけだけど、
労多くして実り少ない作業だよ。
理由は、コマンドの出力結果が常に同じとは限らないから。
OSによっても違うし、
PATHの設定によっても違うし、
コマンドのバージョンによっても違うし、
ユーザの言語環境によっても違う。
単にファイル情報を扱いたいなら、Fileクラスを利用したら?
696 :
デフォルトの名無しさん :04/09/23 14:36:12
質問です。 今TCPサーバーのプログラムを作っているのですが、acceptで接続要求を待機 しているときにボタンを押すとスレッド終了させて接続要求待機をやめるようにし、 もう一度押すとまたスレッドが開始されて acceptで接続要求をするといったようにしたいのですがどうもうまくいきません。 解決方法が分かる方よろしくお願いします。
>>696 質問です。
質問の内容がよくわからないのですが、どういう意味ですか?
698 :
デフォルトの名無しさん :04/09/23 20:04:36
>>696 ServerSocket server=new ServerSocket(80);
server.setSoTimeout(1000);
while(true) {
Socket client=server.accept();
if(btnFlag) break;
}
699 :
間違えた :04/09/23 20:10:17
>>696 ServerSocket server=new ServerSocket(80);
server.setSoTimeout(1000);
Socket client=null;
while(true) {
try {
Socket client=server.accept();
break;
} catch(SocketTimeoutException ex) {
if(btnFlag) break;
} catch(Exception ex) {
System.out.Println("error");
return;
}
}
if(client==null) return;
700 :
また間違えた :04/09/23 20:13:03
>>696 ServerSocket server=new ServerSocket(80);
server.setSoTimeout(1000);
Socket client=null;
while(true) {
try {
client=server.accept();
break;
} catch(SocketTimeoutException ex) {
if(btnFlag) break;
} catch(Exception ex) {
System.out.println("error");
return;
}
}
if(client==null) return;
//以下clientに対する処理
701 :
デフォルトの名無しさん :04/09/23 20:29:54
javaプログラムでJDBCによるデータベースへのアクセスでデータベースの 中の数値ってプログラム上の変数に設定とか参照とかするにはどうすれば いいのでしょうか。 a=データベースの値 みたいプルグラムを組みたいんですけど。 SELECT文で戻り値とかとれるのかな? ご教授よろしくお願いいたします。
702 :
デフォルトの名無しさん :04/09/23 20:41:00
>>692 SubversionはCVSよりもインストールと設定がめんどい。
Eclipse + CVSならCVSのほうが楽
>>693 担当分けする前に仕様書を書く
UMLを使っても仕様書を書く
のが大事
704 :
デフォルトの名無しさん :04/09/23 20:54:29
gzip圧縮されたデータの受信と解析について質問です。 現在、Javaで2ちゃんねる専用ブラウザをゼロから作っています。 subject.txtやdatを受信しようとするとgzip化されていたりするわけですが その受信データをGZIPInputStreamで解凍しながらファイルに書き込もうとしています。 InputStream in = new GZIPInputStream( sock.getInputStream() ); PrintWriter pwOutFile = new PrintWriter(new BufferedWriter( new FileWriter( "tech_subject.txt") )); みたいな感じで使おうとしてるのですが GZIPInputStreamの部分で Exception in thread "main" java.io.IOException: Not in GZIP format at java.util.zip.GZIPInputStream.readHeader(Unknown Source) at java.util.zip.GZIPInputStream.<init>(Unknown Source) at java.util.zip.GZIPInputStream.<init>(Unknown Source) と、怒られてしまいます。 もしかしたらレスポンスヘッダも一緒にしてるのが原因かなと思うんですが その場合、ヘッダとボディ(gzip圧縮された本体)を分けて処理する良い方法などはありますでしょうか?
705 :
デフォルトの名無しさん :04/09/23 21:06:44
>>704 良い方法は、SocketのInputStreamオブジェクトで読み込んだデータを
HTTPの規約に従って自分で解析して、ヘッダとボディを分けるしか
ないですね。
あと、2ちゃんだと確かボディがchunkエンコーディングの可能性もあるので
その場合は、受信したデータをただヘッダとボディに分けるだけじゃ
ダメになります。
706 :
デフォルトの名無しさん :04/09/23 21:15:41
JDBCでint型のカラムの値を取得するメソッドって getColumnTypeでいいんでしょうか? よろしくお願いします。
getIntでない?
708 :
704 :04/09/23 21:31:08
>>705 ありがとうございます!!(゚∀゚)
chunkエンコーディングというのは初めて聞きました。
普通は「ヘッダ+空行+ボディ」となっているそうですが
ヘッダと空行を単に切り取るだけという方式では
gzipのデコードは出来ないってことなんですね・・。
面白そうなツールを考えたんですが、そこにたどり着くまでには
まだまだ先は長そうです。がんばっていきます。
マルチうざい。氏ね。
710 :
デフォルトの名無しさん :04/09/23 21:41:28
>>708 いえ、まだ確実には分からないのですが、とりあえず受信したレスポンスヘッダを
調べてみてください。普通のやつなら分けるだけで済みますので
711 :
デフォルトの名無しさん :04/09/23 21:45:38
すいません。ストリームを理解していないと思われる質問でもいいですか? ファイル等にクラス情報を保存したいときは シリアライズしてストリームで流して、そいつ読み込むとデシリアライズできるーってのに気づいたのは いいんですが、ファイルに保存して、て手順を踏んだり、ソケットでネットワーク通してとか そういうのはいいんですけど、 シリアライズしたストリームをStringで保存して デシリアライズできないのかなーっと、考えました。 どうやってもできないんですよー教えてくださらない? ストリームの情報をそのまんま変数に入れるって処理がわかればいいのかな?
713 :
デフォルトの名無しさん :04/09/23 21:56:13
>>711 何の為にStringにしたのかよく分からないのですが、
シリアライズしたバイト配列を、new StringでUS-ASCIIかCp1252か
ISO-8859-1でエンコード指定すれば、確かバイトコードがそのまま
ゼロ拡張されて、Stringインスタンスに収められるかもしれないので
とりあえずそれで。
714 :
711 :04/09/23 22:40:44
>>713 さんへ
すいません。「シリアライズしたバイト配列を」っていうのが、ちょっと意味わからないです。
たとえば、outputstream(クラス名かなり忘れてます)で、writeってメソッドが
あったとして、それの引数に「シリアライザブルをインプリメンツした」インスタンス
を渡すじゃないですか。
でも、これってストリームにwriteするってことで、このwriteの書き込み先を
Stringの変数にしたいんです。
stream系のクラスじゃない奴使えばいいのかな?と思ったけど、そういうのって
javadocになかったんですよね。
もし、713の解答が、すでに上記のものを指しているのだとしたら私が理解してないだけなので
レス不要です。
お粗末さまです。
715 :
デフォルトの名無しさん :04/09/24 00:54:11
>>714 シリアライズされるデータは1バイト単位で書き込まれ、String変数の
データはchar型、つまり2バイト単位で書き込まれるので整合しません。
>>711 byte[]でいいじゃん。なんでStringにしたいわけ?
>>715 StringのシリアライズってUTF8+16bitサイズじゃなかった?
長い文字列は通らないよね
718 :
デフォルトの名無しさん :04/09/24 15:48:45
はじめまして。質問させてください。 現在、電子署名の拡張情報の値をjavaで取得する方法で悩んでいます。 X509ExtensionクラスのgetExtensionValueメソッドを使用してDERで符号化されたOCTET文字 列までは取得出来ました。 しかし、取得したbyte配列をStringに変換しても文字化けを起こしていて中の値が見ること が出来ません。 どうすれば文字化けを直すことが出来るでしょうか? よろしくお願いします。
質問、と言うかアンケート?です。 J2SDK の各バージョン間で、どの程度の互換性を期待してますか? 1.4.x と 1.3.x では互換性なんて望めたもんじゃないんでしょうけど 1.3.0_x と 1.3.1_x ですら動いてたものが動かなかったりするとさすがに・・ と言うか 3 桁目は何の違いで番号振られてるのだろう。 最近は 1.4.x が前提のライブラリが充実してきて、 1.3.x での動作検証がしんどいです。 ていうか微妙に動かない場合が殆どで泣けます。 1.4.x 使わせて欲しいんですが、諸般の事情でダメだそうです。
>>720 ケツゲってそんなに長くなるものなのですか?
>>721 だって短パンのスソからごっそりはみ出てるぞ。
…ていうか、それ短パンじゃなくてブリンクスかよ!
今どきそんなモンはくんじゃねーよ!
ちょいと 極一部分での質問なんですけど 人の書いたソースを見てるとこんなのがあったんですけど HttpSession session = request.getSession(false); session = request.getSession(true); このコードって(特に上の行)意味ありますか?
ない
725 :
デフォルトの名無しさん :04/09/24 16:55:50
/* 警告:上の1行を消すとなぜかコンパイルが通りません。*/
>>724-725 ありがと
でもさすがに
// HttpSession session = request.getSession(false);
session = request.getSession(true);
なんてしないよ w
書いた人しか理由はわからんかな〜
2行目を書いたのは引き継いだ人間だろ。 前任者のミス(falseを設定している)を晒したまま、 ソースコードを修正するという高等技術だよ。これは。
>>727 なるほど
そう読むとこのソースに助長なところが多いのが理解できる。
2ch用語かも知れんが、一応真面目にツッコんでおこう。 冗長(じょうちょう)な。
>>729 >2ch用語かも知れんが、
いえ typoです。。。汗。まちがいなく打ち間違い。。汗。。
(じょ・う・ちょう か、、、、、どおりで変換候補に出てこなかったわけだ)
>>730 それはtypoじゃなくて、間違いだな。
じょちょう(←なぜか変換できない)
733 :
デフォルトの名無しさん :04/09/25 11:54:43
1970 年 1 月 1 日 00:00:00 GMT から現時点までの 経過秒数を取得したいのですが、どうすればよろしいでしょうか。 Dateクラスを使用すればと思ったのですが・・・よくわかりません。。。 どなたかよろしくお願いします。
734 :
デフォルトの名無しさん :04/09/25 11:58:27
>>733 System.currentTimeMillis() / 1000
>>734 ぉおおお!!こんなまさにピッタリの関数があったとは。
どうもありがとうございました。感謝感謝です。
736 :
デフォルトの名無しさん :04/09/25 12:55:08
すいません、質問させてください。 現在の自マシンのグローバルIPアドレスとそのホスト名を 取得したいです。で、以下のようなコードを試したのですが、 ローカルIPアドレスとローカルのマシン名を取得してしまいます。 String local = InetAddress.getLocalHost().getCanonicalHostName(); どなたか良い解決法があれば教えてくださいませ。
737 :
デフォルトの名無しさん :04/09/25 13:08:13
一昨日、Javaを始めた初心者ものです。 forやwhileループを用いる際に、「待ち時間」を設定することが出来ますか? for(i=0; i<10 ; i++) { System.out.println(i) } の場合、0,1,2...と表示される、各数字を(例えば)1秒おきに計算させたいのですが。 0,(1sec),1(1sec),2...って感じで。
>>737 for(i=0; i<10 ; i++){
try{
Thread.sleep(1000);
} catch(InterruptedException e){}
System.out.println(i)
}
>>737 初心者にはちょいきついな。
スレッドとか使うんだ。
wait()とかnotify()とかな。
740 :
デフォルトの名無しさん :04/09/25 13:48:26
>>738-739 ありがとうございます。
738さんの方法で対応できました。
スレッド勉強します。
741 :
デフォルトの名無しさん :04/09/25 14:44:18
場違いな質問かもしれませんが……Eclipseでのテスト駆動開発に興味を持ち、本をかってためしてみたのですが コンパイルに成功し、実行をかけると 「TestRunnerの起動中」で止まってしまい、コンソールに Could not connect to: : 13004 java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.connect(RemoteTestRunner.java:547) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:270) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:167) と表示されてしまい、上手くいきません。 本にもこのようなときの対処が載っていないので…… 当方、テスト駆動開発のことが勉強できれば、と本をとったのですがJavaやEclipseは全然使ったことがなく、何か必要なソースがインクルード、送付されていないのか、位しかわからずどうすれば良いかさっぱりで。 不勉強ゆえの質問で申し訳ないですがお答えいただければ助かります(´△`;) ああ、勉強とはいえ学びたいところ以外のところで時間がとられるのはストレスがたまる・・・
>>741 ソケット接続先のサーバが起動していない予感!
13004のポートに接続できないと言われてるけど、その相手は何なの?
744 :
741 :04/09/25 14:51:48
>>742 さん
ソケット接続先のサーバが起動していない、ですか。
ツールの設定でどうにか成るものなのでしょうか?
プログラマとしても知識は浅いのでソケット接続、といってもぴんとこないのが情けないです(汗)
ううん、これはjavaではなくEclipseスレにいった方がいいですかね・・・(汗)
745 :
741 :04/09/25 15:05:26
>>743 さん
すいません、知識不足ゆえ理解が悪いだけなのかもしれませんが自分としては特に通信をつかって何かをしようということはしてないんです。
プログラム的にはテストケースを使ってメソッドごとの動作を検証してやるというものだったのですが。
と言うか、内容的にはクラスをつくってそのメソッドでAssertで警告を出す、と言うだけのものでした。
746 :
デフォルトの名無しさん :04/09/25 17:36:14
質問です。リモートのPCにネットワークを介して、何かしらのクラスを投げて、それを クラスローダーで実行させる事を考えます。ですが、クラスを投げる方を不特定多数の人間 が行うので、何の対策もとらないと、何を投げるかわからないという問題があります。 そこで、リモートのPCのクラスローダーにアップレットのような制限以内の処理しか行わないクラスだけ ロードさせるようにさせたいのですが、セキュリティマネージャーとかでそういった事ができるのでしょうか?
747 :
デフォルトの名無しさん :04/09/25 21:35:01
すいません、例えば4000秒→1時間6分40秒 のように秒から時間に直すのにはJAVAでどうすればいいのでしょうか? 変な文になってしまってスマソ
自力でやる
SimpleDateFormatterクラスを使うとか
SimpleDateFormatだった
質問です。 たとえば 747さん の質問に対して 750さんの返答 この 何するにはどのクラスってのは みなさんどうやって調べてるんですか? 便利なリファレンスでも?日ごろからの勉強?
>>746 appletviewerが正にそういうことをやってるんじゃないかな
ソース入手して読んでみたら?面倒くさそうだけど。
>>751 それっぽい単語でGoogle検索すれば見つかると思うが。
どうでもいいが
>>747 くらいのことは自力でやる方が速いと思うぞ。
自宅のパソコンにJavaを入れたくて、「jcpad」というものをダウンロードしたのですが、 解凍した後、jcpadを起動させようとすると、 コンパイラ(W)と標準のデータ保存フォルダ(D)のパスを設定して下さい と出て、よくわからなくて使えません。どうしたらいいでしょうか?
--Java1.4.2_05 win32 / windows2000 for(float v = 0; v<=1; v += 0.1){ System.out.println(v); } - result 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.70000005 0.8000001 0.9000001 なんでこんな妙な小数点が出るのですか?
756 :
デフォルトの名無しさん :04/09/26 07:19:44
>>755 まずは浮動小数点について調べてみそ。
有限ビット幅で小数を表現しようとしても表現しきれない。
そこでビット幅に収める時にどうしても丸め誤差が生じてしまう。
これはJavaに限った話ではなく、多くのプログラミング言語に共通の話。
内部計算が有限の2進数で行われる以上、避けようがない。
少数演算にはもう一つ、計算精度の問題もあるがこれは別な話。
丸め誤差を回避するには、多倍長演算ライブラリを使用する。
Javaならば、BigDecimalが用意されてるからそれを使う。
もう一つの方法は、計算精度があらかじめ範囲内におさまることが
分かってる場合、intで計算して、わり算という方法もある。
757 :
デフォルトの名無しさん :04/09/26 07:25:25
ていうか、「intで計算して、わり算という方法」では丸め誤差は避けられないでしょ。 素直にBigDecimal使っとけ。
758 :
デフォルトの名無しさん :04/09/26 08:40:36
ファイルにあるデータを保存していくのですが(クラスとかをシリアライズして) 、ですが、アプリケーションをverUPするごとに、そのクラスの中のフィールドは 増えていく事が予想できます。 そこで、変更後のクラスへファイル内のデータ(ファイル内に書き込まれている のは変更前のクラス)を読み込み、以前からあったフィールドだけしっかり値を得る 事ができるようにしたいのです。 無理やりやればどうにでもなりそうな気はしますが、こういった時に有効なテクニック などありましたら、ご教授下さい。おねがいします。(例えば、要素が可変な形でファイルに 書き込むテクニックなどありますか)
759 :
758 :04/09/26 08:41:24
あるデータ←ある特定のという意味です。ファイル内のって意味じゃないです。 すいません
760 :
デフォルトの名無しさん :04/09/26 09:12:31
>>758 オブジェクトシリアライズでそれやるのは無謀すぎ。
XMLかプロパティ形式で保存した方がいいよ。
あとはバージョンが分かるような情報を埋め込むことだね。
>>755 まずは情報処理の基礎の浮動小数点というものを勉強しろ
Java以前にすべての言語で必須の共通事項だ
昔は各社浮動小数点フォーマット違っていたが
今はIEEEにだいぶ統一されていると思う
浮動小数点演算は誤差を容認して広い範囲を扱うものだ
従ってイコールで条件判断してはいけない
762 :
デフォルトの名無しさん :04/09/26 11:46:20
>>758 シリアライズするクラスに
private static final long serialVersionUID = 任意の数値;
を含めればOK
763 :
デフォルトの名無しさん :04/09/26 11:50:07
>>758 シリアライズするクラスに
private static final long serialVersionUID = 任意の数値;
を含めればOK
そうすればフィールド&メソッドの量が変更されても、前バージョンの
クラスを読み出せる。
>>755 むちゃくちゃな文法だな(w
試験なら0点だぞ
float v = 0 :int → floatの拡大変換
v<=1 :floatとintの比較
v += 0.1 :floatにdoubleを足す
コンパイルエラー出るのでは?
>>764 わざとネタを書くな。
だから、このスレの質問者が減るんだ。
767 :
デフォルトの名無しさん :04/09/26 14:26:09
hinmei kisetsu nedan りんご 秋 300 上記のように表示させるSELECT文において nedanである300をnedan1に設定する場合 Statement stmt = conn.createStatement (); ResultSet rset = stmt.executeQuery(省略) int nedan1 = rset.getInt(3); でnedan1に300は設定されますか? NEXT()でカーソルを進めたりする必要とかあるんですかね? ご指導よろしくお願いします。
どうして試してみないんだ?
結果が分かったら次にResultSetのドキュメントを読むこと
JDK1.5 + Eclipse 3.0 + Lomboz 301 + JBoss 3.2.5 でjavax.ejb.SessionBeanでNoClassDefFoundErrorが出るんですが 何をCLASSPATHに追加すればいいのでしょうか?
書き忘れました。すいません。 J2EE 1.4です。
import java.net.*;
import java.io.*;
public class Test {
public static void main(String[] args) {
try {
URL url = new URL(args[0]);
FileOutputStream out = new FileOutputStream(args[1]);
InputStream input = url.openStream();
while(true) {
int read = input.read();
if (read == -1) break;
out.write(read);
}
out.close();
}
catch(Exception e) {
System.err.println(e);
}
}
}
このプログラミングで
http://quote.yahoo.co.jp/q?s=5352.T&d=tを取得しようとすると C:\neko>java Test
http://quote.yahoo.co.jp/q?s=5352.T&d=t neko2.txt
java.lang.ArrayIndexOutOfBoundsException: 1
'd' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とエラーが出てきて上手くいきません解決方法を教えていただけませんか?
それと取得時の文字化けも直したいんですが。
くおーと
>>773 サンクス
java.lang.ArrayIndexOutOfBoundsException: 1
とでましたがurlを"で囲ってやると解決しました。
java.lang.StringIndexOutOfBoundsException: String index out of range: -37 at java.lang.String.substring(String.java:1444) at Htmlget.run(Tai.java:36) Exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -37 原因はなんだとおもいますか?
バグは全てソースの中にある(まつもとゆきひろ、Ruby開祖)
>>776 Stringクラスのsubstring()でインデックスが-37になったから
どうやっても書いてあること以外の原因は見当たらないが?
自己解決しました。 j2ee.jar追加したら出来ました。
781 :
758 :04/09/26 18:54:18
>>762 >>763 ありがとうございます。そんなテクニックがあるんですね。
>>760 XMLとかプロパティ形式ってのも時間があればチャレンジしてみたいです。
ありがとうございます。
782 :
デフォルトの名無しさん :04/09/26 21:42:18
コンパイルされたプログラムが、htmlを開くと反映されていません。 アプレットヴィワーには反映されているんですけど。 htmlで反映させるにはどうしたら良いでしょうか。
コンパイルしようがhtmlにはjavaのプログラムが反映されるわけがないんだが。 Webブラウザから見てリロードしても反映されないって話?キャッシュが残ってるんだろ。
785 :
デフォルトの名無しさん :04/09/26 22:14:15
ファイル入力に関してです。 以下のソースを持つプログラムを実行したのですが、うまくファイルの内容を読んでくれません。 配列にデータが入ることなく(デフォルト値のまま)、プログラムは最後まで実行されます。 試しに、ファイル入力をやめて、直接プログラム内で初期化すると、正しく動くので、やはりここが問題なのかと。 まだJavaは始めたばかりで、参考書のプログラムをかなり参考にしましたが・・・。 よろしくお願いします。 public void PlaneModel() { try { BufferedReader br = new BufferedReader(new FileReader("scenario1.txt")); String str; for (int i = 0; i < plane.length; i++) { str = br.readLine(); plane[0][i] = (double)Integer.parseInt(str); plane[1][i] = (double)Integer.parseInt(str); } br.close(); } catch(IOException e) { System.out.println("Failed to read a File."); } }
>>785 (double)Integer.parseInt(str) ってギャグか何か?
787 :
デフォルトの名無しさん :04/09/26 22:33:42
>>785 for (int i = 0; i < plane.length; i++)
を
for (int i = 0; i < plane[0].length; i++)
とする。
ただし、double[]型のplane[1]のサイズがplane[0]と
同じ以上でなきゃダメです。
>>785 for (int i = 0; i < plane.length; i++)
{
str = br.readLine();
plane[0][i] = (double)Integer.parseInt(str);
plane[1][i] = (double)Integer.parseInt(str);
}
planeて配列の宣言と生成はどこでやってるの?
あと、どうみてもループカウンタと配列要素の参照の仕方が合ってないよ。
789 :
デフォルトの名無しさん :04/09/26 22:36:58
>>785 for (int i = 0; i < plane.length; i++)
を
for (int i = 0; i < Math.min(plane[0].length, plane[1].length); i++)
とする。
ありがとうございます。 plane.length に関しては、おかしいですね。 ただ、この部分を配列サイズにあった定数にしても駄目ですね。 配列は、このクラスの頭、どのメソッドにも属していないところで宣言してます。 もしかしてそこですか・・・
http://ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/ ここを見てbasicを学んでいるんですが、
普通のユークリッド互除法はマスターしたんですが、
拡張ユークリッド互除法と再帰ユー(ryがさっぱり分かりません。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
例えば,GCD(13,5) を計算するのに,
13=2*5+3
5=1*3+2
3=1*2+1
2=2*1
を求めて,GCD(13,5)=1 とするものでした。今の場合この計算は,全く自明で,互除法は不要な感じがします。しかし,少し視点を変えるとそうとも言えません。上の式のうち最後の項を除いて,それぞれ,移項すると,
13-2*5=3
5-1*3=2
3-1*2=1
が得られます。ここで,3行目の式の2の所に,2行目の式を代入して,5と3に注目してくくると,
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
と、あるんですが、ここから先の説明がイミフです。
1=3-1*2=3-1*(5-1*3)=2*3-1*5
ここでイミフです。
1
=3-1*2
=3-1*(5-1*3) ←代入しました
=2*3-1*5 ←ここでわりません。
なぜこんな式になるのか教えてください、おねがいしますm(_ _)m
↑ タイトルのjavaの 字 を見逃してました(^^||) すみませんでした。
えっと見た感じ 1=3-1*(5-1*3) の左から2番目の3に 1番目の式3=13-2*5を代入して整理したと思われ ただこれは何故こんなややこしいことをするのかは 多分、結論から逆に辿った感があり、説明出来ないと思う
>ただこれは何故こんなややこしいことをするのかは >多分、結論から逆に辿った感があり、説明出来ないと思う これが拡張ユークリッドの互除法のアルゴリズムだから。
795 :
デフォルトの名無しさん :04/09/27 00:34:43
>>792 説明の通りだがや。
1
=3-1*2
=3-1*(5-1*3)
=3-1*5+1*1*3←5と3に注目してくくる
=3-5+3
=3+3-5
=2*3-1*5
>>793 さん
すみません、イミフ…です(汗
>>794 さん
後に理解が出来そうな予感がします…
>>795 さん
=3-1*(5-1*3)
=3-1*5-1*1*3
=3-5+3
=3+3-5
なるほど…ここで最後に素数に変換してるんですね。
=2*3-1*5…_〆(.. )メモメモ
検索しても分からないし、誰にも聞けなくて絶望していたところでした。
間違いの書き込みなのに、怒られると思ったのに。
まさか回答をしてくれるとは思いませんでした。ほんとに嬉しいです。
やっと、やっと、先に進めます!真剣に考えてくれた皆さん
ありがとうございました!!
797 :
デフォルトの名無しさん :04/09/27 02:42:22
>>796 > ここで最後に素数に変換してるんですね。
なんで素数?変換?
単に被除算数に注目してくくりだしてるだけだと思う
JavaBeanってあるんですが、なんでpublicなフィールドじゃだめなんでしょう? 透過的なセッターゲッターをめくらめっぽう作成するのならpublicなフィールドで十分だと思うのですが。
>>798 たとえばあるプロパティは10〜20の値しか取ってはいけないとする
そういう場合どうするかね?
それを操作するプログラムのミスで違う値が設定されるかもしれない
結局自分のフィールドは自分のクラスが直接扱うのが信頼性がある
>>798 「オブジェクト指向」「カプセル化」で調べてみれ。
簡単に言えば自クラスの与り知らぬところで好き勝手されないようにそうなってる。
>>801 拡張性とか考えれ
あとはツールがサポートするとか
803 :
デフォルトの名無しさん :04/09/27 12:16:15
クラスAの非staticメンバクラスBを、クラスA以外の場所で インスタンス化したいのですが、 クラスAのインスタンス変数ainsがあるとして、このainsを用いて メンバクラスBを、クラスA以外の場所でインスタンス化する 文法を教えてください。
>>803 A a = new A();
A.B = a. new B();
インナークラスは「A以外で使うな」という開発者の意思表示だと思うので
しないほうがいい。
805 :
758 :04/09/27 12:49:50
>>763 ネットでserialVersionUIDを探してみたのですが、あまり情報がみあたりません。
具体的なやり方、または、解説を行っているサイトを教えていただけるとありがたい
です。
ちなみに、UIDというクラスについての情報は見つけましたが、今回どう使うか
は理解できませんでした(汗
806 :
デフォルトの名無しさん :04/09/27 12:50:40
ありがとうございます。
807 :
デフォルトの名無しさん :04/09/27 13:07:28
>>805 APIリファレンスのJava オブジェクト直列化仕様の4.6 ストリーム固有識別子
の項目にあります。
具体的なやり方は本当にただクラス内に
private static final long serialVersionUID = 任意のlong値;
のフィールドを含めるだけです。
これでクラスのフィールド&メソッドを追加しても、前バージョンの
クラスがデシリアライズできます。
808 :
807 :04/09/27 13:08:34
お願いです。信じてください。
809 :
デフォルトの名無しさん :04/09/27 13:10:03
>>805 Googleで探せば見つかるよ。「serialVersionUID java」で探してみよう。
それともあれか?top 10だけ探して諦めるタイプ?
811 :
758 :04/09/27 13:42:42
>>807 なるほど、変更前も、変更後も同じ値を設定しておけば、ファイル内に書き込まれている
データが変更後のクラスとしてデシリアライズできるんですね(ちょっと言葉の使い方が意味不明
ですか)。うーむ、不思議だぁ
>>810 いや、ちゃんと探したんですよ。2時間ぐらい、ですが、そのキーワードだとサーブレットだのとか
関係ないのばっかり当たって、核心を突く情報が見当たらないんです。とりあえず、
もう一度探してみます。
812 :
758 :04/09/27 13:50:04
ソースファイルの分割の仕方がわかりません。
814 :
デフォルトの名無しさん :04/09/27 14:36:14
まず、はさみを用意して、真ん中から切ればOK
>>814 一旦プリントアウトしなくちゃならないから、かなり面倒・・・・
>>802 別に考える必要があるときばかりじゃないと思うんだけど。
範囲チェックが必要になったときにセッター作ればいいだけで。
ゲッターで処理することなんかほとんどないし。
継承して使うこともあまりないし。それはそれで継承するときにセッターゲッター作ればいいし。
変更の反映はツールがやってくれるし。
>>815 プリントアウトするだけで、何枚かの紙に分割されるよ。
ひとつお聞きしたい事が。。。 例えば、ゲームのアプレットを作っています。 テトリスをやっていて、次にぷよぷよを同じ画面でやりたい時は、どう書く んでしょうか? 一つのアプレットの中に二つのゲームを突っ込んでもいいのですが、もっと すっきり書く方法は無いのですか?
>>816 すでにJavaBeansの仕様がそうなっているから、
setXyz/getXyzがあることが前提で作られているツールや
フレームワークやライブラリが多い。
逆に言うとアクセッサ作った方が便利に使える世の中ってこと。
>>819 ツールやライブラリに通さないんだったり、ツールやライブラリがセッターゲッターがなくてもそれなりに動いてくれるんだったら不要ってことでOK?
>>820 おまい一人で開発し、未来永劫他人がメンテしないことが保証できるんだったら勝手にすれば?
俺だったらそんなソース見たくないけどね。
>>821 なんで?
セッターゲッターもってないことなんか一目瞭然だし、無駄なセッターゲッターなければコード行数も少なくて見やすいし。
823 :
デフォルトの名無しさん :04/09/27 16:06:03
pが整数ならば、つまり、下記のようにやりたいのですがいい方法(メソッド)ないですか? if(P == 整数){ ・・・・・・・ }
byte a,b; a=b+2; とかだと精度が落ちてるとか言われます。 どうしたらいいですか?
お馬鹿さんには何を言っても無駄。
>>823 Pの型が整数かどうか知りたいの?
だったら宣言した時に解かるじゃないか。
827 :
823 :04/09/27 16:21:15
>>826 ですよねw
言い直します。
qは整数とし、q/(q-1)が整数ならば・・・、とやりたいのです。
プロパティがフィールドとしては存在しない場合や、 プロパティの値そのものとは異なる形で存在している場合もある。 例が悪そうだが、 class Foo { int x; int y; // その他フィールド Point getLocation() { return new Point(x, y); } public void setLocation(Point p) { this.x = p.x; this.y = p.y; } // その他メソッド } class FooBeanInfo implements BeanInfo { public PropertyDescriptor[] getPropertyDescriptors() { PropertyDescriptor[] propDescs = new PropertyDescriptor[] { new PropertyDescriptor("location", Foo.class); }; } // 以下略 }
>816 範囲チェック後から実装したとして、 そのときにpublicなフィールドの値が範囲内だと信頼できるのか? できないだろ? そのときになってprivateにして膨大な数のソース書き直すぐらいなら はじめからgetterやsetter作っておいた方がいい。
830 :
デフォルトの名無しさん :04/09/27 16:35:04
>>824 JAVAでは、short型とbyte型の数値を計算する時は、int型に
拡張してしまいますので、b+2はint型の数値になってしまうのです。
よって a=(byte)b+2 とすればOK
831 :
823 :04/09/27 16:39:52
すみません。解決しました。 q/(q-1)が割り切れる時 = 余りrが0の時 って感じでやったら、うまくいきました。どうもです。
>>829 > そのときになってprivateにして膨大な数のソース書き直すぐらいなら
Eclipseがやってくれるから無問題。
>>832 自分が書いたライブラリを利用するコードの全てが
自分の手元にあるわけではない。
>816 後になって遅延生成入れときゃよかったとか 悩むくらいなら最初からgetter入れておくな、俺は。
VBのコントロール配列みたいに、javaでコンポーネントを配列化できますか?
>>835 Objectはすべて参照なのでいくらでも
838 :
デフォルトの名無しさん :04/09/27 17:32:39
>>835 できるよ
Frame[] frame = new Frame[100];
JButton[] button = new JButton[100];
ただ、コンポーネント配列の初期化はこの時点では中身が殻なので注意してね。
個別に初期化するか、既にインスタンス化されてるオブジェクトを代入するか。
あげちゃった、ごめん(´・ω・`)
getFrames()って使ってる香具師いる?JFrameに継承されてるくせに、なぜFrameを返すのか・・・orz しかもJFrame→Frameへのキャストは無理だし ぶっちゃけ、使い物にならん気がする
アプレットからアプレットを呼ぶには、 どのようにすれば良いのでしょうか。
>>842 「呼ぶ」の具体的動作を説明希望。
ブラウザで次のURLを開けばいいだけなら
AppletContext取得してそれ使う。
今、アプレットが動作してる領域に、別のアプレットを呼ぶ。 ということをやろうとしています。
たぶん842の目的はアプレット二つに分けなくてもいいんじゃねーか という気がする。まあ呼ばれるほうが自分が書いたコードじゃなくて 他からぱくってきたとかそういう事情があるのかもしれんが。
846 :
デフォルトの名無しさん :04/09/27 18:45:44
JMSってなんなのか簡単に教えてください メッセージ待ちのものに対して、メッセージ投げるメッセンジャーのようなイメージなのか 動いてるプログラムに対してイベントを投げて例外発生させたりできるようなものなのか よくわからないのですが、どっちも違う?
847 :
デフォルトの名無しさん :04/09/27 19:34:26
ユーザーがリンクをクリックしたとき、javaサーブレットを使った場合 動的なhtmlを表示することは、今日勉強して分かりました。 動的なhtml以外のファイルをユーザーに送るのって、 どうやってやるんですか?doget()をいじるのですか?
>>847 リンクなら直リンク貼れば?
動的に作成したものを出すならcontentTypeいじればいいかと
>848 ユーザーがリンクをクリックして、 サーバーが最初にユーザーに送ったファイルをユーザーは 手に入れず(送られたことに気が付かず)、 そのあと、ユーザーに見えない形で、 ユーザー側からサーバーにファイル(xml)が送られ、 さらにそれに対してサーバーはユーザーにファイル(xml) を送るのです。それをユーザーは必要としています。 その場合直リンクでもいいのですか?
ハッキングの相談?
javaは配列を戻り値にできますか?
できないと思う根拠は何ですか?
C言語だと基本的には出来ないね
SDKがダウンロード不能になってね―かい?
856 :
デフォルトの名無しさん :04/09/27 21:11:16
もう一回質問します。 誰かヒントだけでもお願いします(´Д⊂グスン はじめまして。質問させてください。 現在、電子署名の拡張情報の値をjavaで取得する方法で悩んでいます。 X509ExtensionクラスのgetExtensionValueメソッドを使用してDERで符号化されたOCTET文字 列までは取得出来ました。 しかし、取得したbyte配列をStringに変換しても文字化けを起こしていて中の値が見ること が出来ません。 どうすれば文字化けを直すことが出来るでしょうか? よろしくお願いします。
858 :
デフォルトの名無しさん :04/09/27 21:32:20
ほー最近のUnixはコピーのシステムコールなんてあるノ?
つーか環境依存しないように作られてるんだから システムコール呼ぶって考えはやめれ 30分あれば綺麗なライブラリつくれるだろうから それでさっさと作ればよろし
JSPの質問とかってここでさせていただいてもOKですか? 該当スレが見当たらないので。
865 :
デフォルトの名無しさん :04/09/28 11:50:50
>>777 > バグは全てソースの中にある(まつもとゆきひろ、Ruby開祖)
Code Reading読んだだろ藻前
>>832 Eclipseがやってくれてもすでに
依存関係にあるコードで
そんなことやっても苦しい
それに開発環境としてEclipseが使える場合はいいが、 チーム開発とかになってくるとそうもいってられないだろ そうそう他人のコード部分書き換えるなんてありえんし
リファクタリング時だけEclipse使えばいいじゃん。 どうせ後付けでセッターゲッターが必要になることも少ないんだし。 とくにゲッター。セッターは百歩譲って、必要になる可能性が高いからあらかじめ用意するでもいいとしても。 あとからゲッターの挙動変更することって、ほとんどない。あるの?頻繁にあるの? 最近はBeanUtilsで右から左へ移動するだけ、表示はJSPかVelocityってことも多くて、getXxxすることも減ってるし。 Strutsのexecuteの中 BeanUtils.copyProperties(o, form); session.save(o); だけとか request.setAttribute("list", session.load(ShohinTable.class, code).list()); だけとかってことも多いし。
JSPとかBeanUtilsはgetter/setterありきだと思うけど?
あ、JSPはそうだ。BeanUtilsもそうなんだろう。 ってか、いまんところちゃんとゲッター書いてるから、ゲッター無しでいけると思ってた。 ゲッター書きたくないんだよぉ。めんどくせぇんだよぉ。
>>870 >ゲッター書きたくないんだよぉ。めんどくせぇんだよぉ。
それこそEclipseの登場だな
あいかわらず
>>798 元気だな
リファクタリングといっても他人のコード勝手にいじるわけにいかないだろ
beansってのはライブラリでよく使われるんだしそういうもんだ
チーム開発しているのならツールもすべて指定されることも多い
>>871 Groovyみたいに、目に付かなくしてくれたらいいのに。
>>872 他人のコードいじれなかったら、リファクタリングにならんですよ。
というか、そういうレベルのコードの所有権って害にならない?
保守的な理由では利点があるけど。
あ、保守的というのは、メンテナンス的という意味ではなくて、コンサバティブという意味で。 「人のコードを触ると気を悪くする」とか「エンバグしたときに冤罪になる」とか、あまり建設的ではない利点
>>874 誰かが開発中のコードに他人が勝手に手を入れたらいかんだろう
昼休み中にリファクタリングしといたからとかいわれたらぶちきれる
これ以降はXPスレにでも行ってください
emacsでいいでしょ
リファクタリング自体は構わないが、
ゲッターセッター書くことで回避出来るものを、
それを免罪符にあとから修正するのはリファクタリングと言うのは違う。
たとえXPだろうと他に影響がないようにコーディングするのは大前提だろ。
>>868 セッターが許せる・作成するんならゲッター作らないとまったく意味がないことに気づかないか??
881 :
デフォルトの名無しさん :04/09/28 19:15:06
おすすめのフリーのソースエディタを教えてくらはい
>>881 emacsがとても使いやすいと思うのだけど、
Windowsではxyzzy?かな。
emacsだとほとんどマウスを触らなくても良いし、ほとんどの作業、
コンパイルからメールなども含めて、がemacs上でできる。
何で板違いな質問に答えようとするんだろう。
そんな流れどこにもない
886 :
デフォルトの名無しさん :04/09/28 22:22:31
質問です。 TOMCATでServletContext#getResource("/WEB-INF")を行うと "jndi:/localhost/CONTEXT_ROOT/WEB-INF"のURLが得られます。 これをWebSphereで実行すると "file:/c:/HOGE/CONTEXT_ROOT/WEB-INF"の様に絶対パスのURLが得られます。 TOMCATでも絶対パスのURLが取得できる方法があるのでしょうか。
新Java言語入門シニア編とやさしいJava及び、やらしいJava活用編を一通りマスターしました。 しかし、まだ、このスレや雑誌なんかを読んでると、こんな文法あるんだ?って感じで、わからないことだらけです。 次に読むオススメの書籍があったら、教えてください。
ひとつ思ったんですけど、 public paint(Graphics g){ } ってあるじゃないですか。これを public paint(){ Graphics g = new Graphics; } ってやっちゃだめなんですか? いいのか、ダメなのか、理由をつけて答えなさい。
>>887 >次に読むオススメの書籍があったら、教えてください。
もちろん、次は、どすけべJava
>>889 いや、何がしたいというわけでもないんですけど、基礎を身に着けたいです。
上記三冊で、基礎の部分は十分なんですかね?
894 :
886 :04/09/28 23:17:11
ServletContext#getResourceで"jndi:"や"file:"はなにで 決まるんでしょうかね。
>>890 しってるが、お前の態度が気に入らない。
とりあえず理由の一つはこれだ。public abstract class Graphics
Graphicsクラスがアブストラクトであることが関係してるの? アブストラクトって、メソッドの中身が定義されてないクラスだったっけ?
public static int returnx(int x){ return x; } みたいに定義みたいなもの?わかんないよー。
>>841 Frame→JFrameは出来ないの間違いね
で、getFrames()って使い物になるか?JFrameを返すようにしたいんだけど。
おまいさんはどんなときに使ってるの?
以前もこういうハンドルあらわれなかったっけ?
>>900 Frameのメソッドであって
JFrameでオーバーライドしていないからFrame返すのは当たり前
でもそれは問題にならないでしょ
もうちっと勉強しようね
>>902 いいたいことがわかんない
っていうか質問の答えになってないし
AWTの機能であるFrame.getFrames()にJFC/SwingのJFrameを返せと 言われても.... 1 親クラスは子クラスのことなどしったこっちゃない。ふつうのことだ。 2 AWTはSwingのことなどしったこっちゃない。当然だろ? ってだけのことじゃないの? getFrames()はJFrameを含め、アプリケーションが作成 したすべてのFrameを返すんだから、戻り値の配列にはJFrameもあればFrameもあるかも しれん。もしかしたら独自のFrameサブクラスもあるかもしれん。 FrameはJFrameのことなどしったこっちゃないからFrameとして返すだけだ。 キャストしたいならinstanceofでチェックしてからキャスト。JFrameじゃない可能性も あるからな。 あと、staticなgetFrames()はどのみちオーバーライドできん。
ここは意地悪な回答者の多いインターネッツですね(怒)
質問したいのは、 1 getFrames()は使い物になるか? 2 JFrameを返すようにはできないのか? のどっちだ? どっちもか? 質問は明確にせい。 1解答 使えるところで使えばまあ使える。適材適所だな。使えん時は全然使えん。 というか、そんなに多用するもんでもないし。 2解答 getFrames()をオーバーライドするという意味なら無理だが、別に自分で getJFrames()とかいうユーティリティメソッドを適当に作って、そこで Frame.getFrames()を呼び出して、返値の配列からinstanceofでJFrame のインスタンスだけ選び出して別の配列につっこんで返してやれば、望みの ものになるだろ。
907 :
デフォルトの名無しさん :04/09/29 10:49:18
どなたかお願いします。 マウスイベントで線などを描写しても、最小化したり、 別のウィンドウを前に出すと線が消えてしまうのですが、 どうしたら消えなくなるでしょうか。 座標位置をどこかに保存しておいて、paintメソッドで線を描き直すのは分かるのですが、 なにかそのようなメソッドでもありますか?
>>907 そんなメソッドは標準APIにはありませんが、あなたのハードディスクの中にヒントがあるでしょう。
%JAVA_HOME%\demo\applets\DrawTest
909 :
907 :04/09/29 11:28:44
>>908 Vectorを使うしかないんでしょうか?
一番スマートにいけますか?
910 :
デフォルトの名無しさん :04/09/29 11:55:43
>>909 public void paint(Graphics g)をオーバーライドして
そこに同じ線を書くコードを含めるか、createImage()で
バッファ用のイメージを作成して、そのイメージに線を描くようにし、
オーバーライドしたpaint内で そのバッファイメージをdrawImage()で
コピーしませう。
911 :
907 :04/09/29 11:57:10
>>910 ありがとうございます。
試してみます。
逆コンパイルについての質問です。以下「e-words」
ttp://e-words.jp からの
転載:
Javaで開発されたプログラムは逆コンパイルされやすい構造であることが知ら
れており、逆コンパイル対策ソフトも開発されている。
となっていますが、逆コンパイル対策の最新技術動向を教えて下さい。
ちょっと聞きたいのだが、 「Java 2 プラットフォーム API 仕様」は 前はダウンロードできたんですか? 今できないんですが。
915 :
デフォルトの名無しさん :04/09/29 16:25:29
double[6][5]の配列に テキストファイルの ***.txt ___________ |0 1 2 3 4 |0 1 2 3 4 |0 1 2 3 4 |0 1 2 3 4 |0 1 2 3 4 |0 1 2 3 4 のようなデータを読ませたいのですが、 コードの書き方が分かりません・・・。 StreamTokenizer等を使うのは想像がつくのですが(これ自体違うかも)。 *データの数字は任意で本当はランダムです。
BufferedReaderで読んで1行を" "区切りでStringTokenizerで分割、でどうかしら。
918 :
デフォルトの名無しさん :04/09/29 18:03:28
>>915 StreamTokenizer st=new StreamTokenizer(new StringReader(text));
st.eolIsSignificant(true);
double[][] num=new double[6][5];
int x=0, y=0;
loop: while(st.ttype!=StreamTokenizer.TT_EOF) {
try { st.nextToken(); }
catch (IOException ex) { break; }
switch(st.ttype) {
case StreamTokenizer.TT_EOF: break loop;
case StreamTokenizer.TT_NUMBER: num[y][x++]=st.nval; break;
case StreamTokenizer.TT_EOL: ++y; x=0;
}
}
919 :
間違えた訂正 :04/09/29 18:07:04
>>915 StreamTokenizer st=new StreamTokenizer(new FileReader(file));
st.eolIsSignificant(true);
double[][] num=new double[6][5];
int x=0, y=0;
loop: while(true) {
try { st.nextToken(); }
catch (IOException ex) { break; }
switch(st.ttype) {
case StreamTokenizer.TT_EOF: break loop;
case StreamTokenizer.TT_NUMBER: num[y][x++]=st.nval; break;
case StreamTokenizer.TT_EOL: ++y; x=0;
}
}
920 :
915 :04/09/29 18:44:07
>>919 ,917
ありがとうございます。
「なるほど」と言う感じです。
逆コンパイル防止の常套手段ってありますか?
>>921 わざとエラーが出るコードにすれば、逆コンパイルされても無問題だ。