【初心者】Java質問・相談スレッド78【大歓迎】
1 :
デフォルトの名無しさん :
2005/12/22(木) 11:12:49
超初心者です。 本を見ながら変数を入力すると結果が出るような物を作っているんですが、 JLabel jlb1 jlb2 jlb3; のような物を配列を使って表現することは可能なんでしょうか? String[] stringjlb = {"jlb1", "jlb2", "jlb3"}; JLabel stringjlb[0],stringjlb2,stringjlb3; みたいな感じなのかと思ったんですが、構文エラーが出てしまいます。
JLabel [] jlb = new JLabel[3]; jlb[0] = new JLabel("文字列1"); ・・・
4 :
デフォルトの名無しさん :2005/12/22(木) 12:39:49
データとそのデータに対する振る舞いを一まとめにする。 これがオブジェクト指向の全て。 お前ら難しく言いすぎ。
5 :
デフォルトの名無しさん :2005/12/22(木) 12:58:46
>>3 ありがとうございます。
またなんかあったらよろしくお願いします。
ファイル読み込みや書き込み操作時のclose()処理について質問です。 1. ------------------------------------------------------------------------------------------------ FileInputStream fis = new FileInputStream(new File("Input.txt")); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); while (br.ready()) { System.out.println(br.readLine()); } br.close(); isr.close(); fis.close(); 2. ------------------------------------------------------------------------------------------------ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("Input.txt")))); while (br.ready()) { System.out.println(br.readLine()); } br.close(); 1.の場合、FileInputStreamもInputStreamReaderもBufferedReaderもclose()処理を入れていますが、 2.のケースですとBufferedReaderのみのclose()処理があります。 個々のインスタンスを作らずにBufferedReaderのコンストラクタの引数に直接new InputStreamReaderやnew FileInputStreamなどを指定する場合、 これに対してのclose()処理はJVMが自動で行なってくれるのでしょうか。 また、それによってメモリの使用状況なども変わってくるのでしょうか。 そこまで大したものを作るわけではないのですが、少し疑問に思ったので質問させていただきました。
どのclose()も コンストラクタの引数に指定したストリームのclose()を呼び出すから大丈夫。 この場合だとBufferedReaderのclose()がInputStreamReaderのclose()を呼び出して、 InputStreamReaderのclose()がFileInputStreamのclose()を呼び出す。 1.はbr.close();だけで全部閉じるので後の2つはいらない。
8 :
デフォルトの名無しさん :2005/12/22(木) 14:52:05
http://ex11.2ch.net/test/read.cgi/news4vip/1124359566/980 人を納得させるなら
話術を使って攻めるがよし
技術を習得しつつ話術も極めると
説得力がある。技術も無いのに話術だけあっても
胡散臭く思われるだけだからな。
もっとアジャイル開発について調べてみてくれ。
上があれこれ言ってもこちらで勝手にクラスを作ってしまうのもよし。
早い者勝ちで済まされることもあるからな。
自分で作ってこうすればこういう利点があると説明し、
実際に動いているところをみせれば
かなりの説得力がある。デザインパターンにしても同様。
ソースコードを見せてみるといい。
見せるだけでなく、実際に動かすこと。
それからコードをちょっと修正した場合のケースも見せること。
プレゼンやレポートとしてまとめてみせるのもやってみること。
Java標準APIにもデザインパターンが使われていることを示してみると良い
Javaがインストールされたときに一緒についてくるsrc.zipの
中身を解凍して彼らに見せるもよし。サンプルコードで解説だ。
9 :
8 :2005/12/22(木) 14:53:22
10 :
デフォルトの名無しさん :2005/12/22(木) 15:03:49
署名なしのJavaアプレット上でHTMLを表示させたいんですが、 何か良い方法はありませんでしょうか? ちなみに署名有りではうまくいくのですが。。。 JEditorPane htmlPanel = null; try { ResourceBundle2 resBundle = ResourceBundle2.getBundle2("resources.system"); String urlString = resBundle.getString(URL); String urlnocase = urlString.toLowerCase(); URL url = new URL(urlString); htmlPanel = new JEditorPane(url); htmlPanel.setEditable(false); } catch(Exception e) { e.printStackTrace(); }
質問なのですが Javaで書いたプログラムの中でPerlのプログラムを 実行させることってできますか? ある条件に一致したらperlのプログラムを実行させるようなのです。
JLabel [] jlb = new JLabel[6];//ラベル JTextField[] jtf= new JTextField[6];//テキストフィールド jlb[0] = new JLabel(" A ");//ラベル1 jlb[0].setBounds(35,20,40,20); jtf[0] = new JTextField();//テキストフィールド1 jtf[0].setBounds(85,20,100,20); ・ ・ ・ jtf[6] = new JTextField();//テキストフィールド7 jtf[6].setBounds(85,20,100,20); for(int a=0; a <= 6; a++){ gcp.add(jlb[a]); gcp.add(jtf[a]); }} としたのですが、ArrayIndexOutOfBoundsExceptionエラーが出てしまいます。 何が悪いんでしょうか・・。
>>13 釣りじゃなければ余りにも酷いので以降は参考書熟読してから来い
>JLabel [] jlb = new JLabel[6];//ラベル
で6個分しかメモリ確保してないのに
>jtf[6] = new JTextField();//テキストフィールド7
7個目の要素入れればどうなるか分かるよな?
>>13 配列で要素を6個しかつくってないのに7個使おうとしてるだろ
その配列の添え字は 0〜5 の範囲だ
>>13 ArrayIndexOutOfBoundsException の意味も調べとくように
17 :
デフォルトの名無しさん :2005/12/22(木) 17:01:41
大変失礼なお願いなんでが... Javaで年賀状を作っていただけないでしょうか? ソースを貼っていただけるとありがたいです
Javaで年賀状???
ぬるぽ
>>17 「作っていただけないでしょうか」じゃなくて
「作り方をご教示していただけないでしょうか?」
だろ
23 :
デフォルトの名無しさん :2005/12/22(木) 17:57:23
さっさと作れよ
JavaMail 使って自分で作れ
25 :
デフォルトの名無しさん :2005/12/22(木) 21:22:59
「ポインタ」という言葉の本来の意味は「参照」とほぼ同等かもしれないが、 この業界ではC言語の影響が非常に非常に強いため、 『「ポインタ」と言えば暗黙的に「C言語でポインタと呼ぶもの、またはその機能」を指す。』 ↑これを認めるかどうかが『Javaに「ポインタ」があるかどうか』と同義。 だからJavaにポインタがあるなんていう奴は(ry
何度か挑戦したんだけど インスコ→ハロー蛇場をやったあたりで挫折しちゃう。 どうすれば楽しく続けられるかな? 参考文献は「JAVAのe本」
>>26 Javaにポインタがあると言う人は
見識も視野も広いって事でしょ
292 名前:デフォルトの名無しさん 投稿日:2005/12/22(木) 16:51:44 大変ぶしつけなお願いなんですけど。。。 javaでクリスマスカードをできれば4つ作っていただけませんか? 簡単なものでよいです。 ソースを貼っていただければ幸いです。 293 名前:デフォルトの名無しさん 投稿日:2005/12/22(木) 17:00:02 ただ漠然とクリスマスカードといわれても・・・ もう少し詳しく要求仕様を書かないとどうしようもないよ。 294 名前:デフォルトの名無しさん 投稿日:2005/12/22(木) 17:00:36 課題:Javaで、年賀状を作成せよ。 どなたか助けてください!留年しちゃう!!
javaでSystem.out.println("あけましておめでとう")って作って あとはパイプでプリンタなりメイラーに出力しとけ
jspの質問もここでしていいんですか?
Javaはポインタの塊だ。 ったくC厨はどいつもこいつもゴチャゴチャ屁理屈うるせぇんだよ。
単発質問です。 たまに見かける単語「フィールド変数」って何ですか? クラス変数やインスタンス変数とはまた違うもの?
推測だが、ローカル変数に対比する表現ジャマイカ
単発質問です。 クラスメソッドとインスタンスメソッドって どう使い分ければ良いですか? singletonとかと同じ感じなのでしょうか?
39 :
デフォルトの名無しさん :2005/12/23(金) 09:23:34
>>37 抽象的な答えで悪いが、
インスタンスの状態に関わるような処理はインスタンスメソッドを使用する。
クラスメソッドはそれが関係ないときか、クラスに対する操作の時に使用。
Singleton分かってるなら分かりきった答えだろうな…すまない。
42 :
デフォルトの名無しさん :2005/12/23(金) 11:55:44
ねえ。昨日さ、JDK5.0っていうの入れてみたんだよ。 でさあ、コンパイルしようとおもって、javac ってやったら エラーになってさ、binフォルダみてもjavac.exeってないじゃん。 もちろんbinフォルダにPathは設定してあるよ。 どうやってコンパイルすればいいのかな?教えてクリ。
43 :
デフォルトの名無しさん :2005/12/23(金) 11:57:50
>>42 Runtimeのみのほう落としてないか?
44 :
デフォルトの名無しさん :2005/12/23(金) 12:23:47
SDKと一緒にインストールされるJREのbinディレクトリを見ている、に一票
javacで検索すれば?
47 :
デフォルトの名無しさん :2005/12/23(金) 12:41:10
>>45 すみません。。ないです。
>>46 検索したら、Cドライブ(Dドライブにインストールした)のbinディレクトリ
にあったんです。でもCドライブにbinディレクトリなんてないよ。。でも、日付がえらいふるいや。。
これは、違うな。
2回目のダウンロード→インストールなんですよ。。どうしてかな。。
>>47 インストールするときに、何も考えずにOKとか押すのやめて
どこにインストールされるか、どんなオプションなのか確認
する癖つけた方がいいよ
>>48 一応、DドライブにJavaというフォルダを作ってそこにインストールしました。。
Cドライブが満タンだったから。。検索してもみつからん。。昨日、インストールした
All-In-OneEclipseだと、なぜかコンパイルできるんすよ。。
変なの。。
eclipse使ってるならjavacは必要ない。気にせず進め。
Eclipseは自前のコンパイラを持ってるからな
>>50-51 そうなんですか。ありがとうございました。エクリプスでいこうとおもいます。
皆々様、お手数をおかけしました。
>>49 によると
Cドライブを検索したがDドライブは検索してないと言うことか。
>>41 CとかC++は知らないのですが
所謂グローバル関数的な物なんですかね??
Mathクラスとかは全部クラスメソッドですよね・・?
う〜ん
ボタンイベントでファイルチューザーを動かすようにしているのですが、 一旦そのボタンを押すと、何故か押されたままになってしまいます。 元の押されていない状態に戻すにはどの様にしたら良いでしょうか?
>>35 クラス変数やインスタンス変数とは異なります。
クラス変数かインスタンス変数はstaticであるかどうかであり、フィールドはメソッド内で定義されるローカル変数とは異なり、クラスに属する変数になります。
つまり、フィールドのあり方として、クラス変数かインスタンス変数があるということです。
>>37 ・クラスメソッド
そのクラスの状態に関係ないメソッドに使用する。
入力されたものを変換して出力するだけのものはクラスメソッドにします。
例えば、java.lang.Mathクラスのようにユーティリティクラスに使用します。
・インスタンスメソッド
そのクラスの状態に関係のあるメソッドに使用する。
通常のオブジェクト指向的な使い方になります。
58 :
デフォルトの名無しさん :2005/12/24(土) 03:19:33
生成したインスタンスを、GCにたよることなく 自分から破棄(メモリ開放)したいのですが 何か方法はあるのでしょうか? swingで円や四角の図形を使ってプログラムを組んでいるのですが、 そこで描画とマウスの扱いの為に使う自前のクラスのインスタンスが repaint()等を呼び出しても そのインスタンスがいつまでも消えず問題になっています。 つまり、再描画はされており一見問題ないようにみえるけれども マウスの処理が残っているため、動作において問題になっている という状況です。 実際問題としては不必要なのですが 処理上ではまだ動作しているようなので、 GCなどでは破棄されません。 また、そのクラスのインスタンスが生成され続けると 動作に問題が出るだけでなくメモリがどんどん埋まっていく可能性があります。
>>58 任意のタイミングでの解放は無理
自分でVM作ってください
基本的に、実装の仕方が悪い
コントローラーがイベント発生の度に生成されるんでしょ?
ありえないよ、そんな実装。
>>58 >処理上ではまだ動作しているようなので
って事は、動作していること自体が想定外なんでしょ?
そのバグを改修する事が先だろ。
61 :
デフォルトの名無しさん :2005/12/24(土) 04:26:25
Javaでhtmlのtableタグのようなデザインにするためには どのようまレイアウトマネージャーが必要でしょうか
ようようま
>>58 宿題スレでソース晒したほうがいいと思うよ
自分で何をつくっているのか把握できてないと思う
64 :
デフォルトの名無しさん :2005/12/24(土) 09:06:15
65 :
58 :2005/12/24(土) 10:12:01
わかりました。 基本的なとこを直します。 どうもありがとうございます。
ちなみに、どういったインスタンスが残り続けてるの? イベントリスナーとかいろいろあると思うけど
67 :
デフォルトの名無しさん :2005/12/24(土) 15:44:10
JSPとサーブレットで簡単なサイトを作ろうと思っています。 Javaで実装したいのですが、 「こんにちは○○さん」 の○○さんをデータベースから取得して表示したいのですが サンプルプログラム、もしくは参考サイト教えて下さい。
>>67 JavaでHelloworld
でぐぐるといいかもしれない。
ServletからJDBCまで簡単に使える方法が載っている。
数が不定のデータをArrayListで受けて、固定長配列に置き換えて処理する、 という手法を用いる際に、受けるデータはプリミティブ型では無理なのでしょうか? やりたいのは、 入力として任意の数(個数は動的に決定する)のintがあり、 入力の完了時に内部変数として固定長のint配列に置き換えて 以後の処理を行いたい のですがどのようにすれば実現可能でしょうか? ArrayListにはInteger型で追加し、置き換え時にInteger配列をint配列に置き換える、 辺りを自前で作るべきなんでしょうか… よろしくお願い致します。
>>69 commons primitives の ArrayIntList 使えば?
>>69 凄く悪い答え方するけど、『基本型でも全く問題なく格納できるよ』
>>69 1.4ならそれしかないが
1.5なら
>ArrayListにはInteger型で追加し
の部分はintのままで追加できる
しかし
>置き換え時にInteger配列をint配列に置き換える
っていうのはやはり自前しか無さそう
toArray()でもそこまでやってくれなさそう
自作してもすぐに終わるしな
>>70 も言っているように、そういうListのクラスを自分でつくるっちゅ-のも面白いと思う
75 :
69 :2005/12/24(土) 17:28:55
レスありがとうございます。 現在の環境、環境を変更する権限を持たないことを考慮すると 自前で書いちゃった方がよさそうですね。 沢山アドバイスありがとうございました。
数値を入力して図形を描くプログラムを作ってるんですが、 窓の大きさを変えると毎回図形が消えてしまいます。 大きさを変えてもグラフィックが残るようにするにはどうすればいいんでしょうか。
>>69 =75
お勧めしないが
ByteArrayOutputStreamにintをbyte*4として突っ込み
toByteArrayでできたbyte[]をByteBufferにラップし
asIntBufferでIntBufferに変換してそこからint[]にする。
描き直せば良い (マジで)
79 :
デフォルトの名無しさん :2005/12/24(土) 18:03:21
>>76 まずは、ダブルバッファリングで検索かけて、それを理解すること。
もう一つは、ウィンドウのリサイズで描画範囲が変わっているので、
それを意識したプログラミングをすること。
最初はこのくらいかな。
好きな位置に好きな大きさのボタンとかテキストフィールドとかが追加できない・・・
strictfpって何?
84 :
デフォルトの名無しさん :2005/12/24(土) 18:39:46
>>76 SwingならpaintComponent()の中で描画してる?
87 :
eclipse :2005/12/24(土) 19:46:52
javaAppleにSWTを組み込めますか?
Mac版のEclipseがあるなら可能なんじゃない?
89 :
eclipse :2005/12/24(土) 19:54:18
WindowsXPでは不可能ですか?
javaApple かぁ・・・
だからMac版のEclipseがあればと言ってるじゃないか まぁMac OSXなら最悪Linux版のをエミュレートして実行できるかもしれないね
92 :
eclipse :2005/12/24(土) 20:08:14
意味が今ひとつ理解できません。
何で理解できないのか理解できません。
94 :
eclipse :2005/12/24(土) 20:13:35
なぜwindowsのはなしにMacが出てくるんですか?
自分でふっといて何言ってんの・・・
96 :
デフォルトの名無しさん :2005/12/24(土) 20:15:24
たぶん
>>87 は、Java Appletと書いたつもりでは?
>>96 そこは確実にわかった上でバカにしてるんだと想像
じゃあこのへんにしとくか サンドボックスの制限に引っかかるはずだから無理なんじゃない?
できなくもないが実質できない SWT_AWTってのがあるらしいからそれもあり ただしSWT自体がアレですので
マカはCocoaとかいうのを使わないと無理だから、純粋なJavaじゃないし。
103 :
デフォルトの名無しさん :2005/12/24(土) 20:40:28
>>102 それは誤解だな。
普通にPure JavaアプリもEclipseもTomcatも動いてるよ。
104 :
デフォルトの名無しさん :2005/12/24(土) 23:59:10
Javaでシリアルポートから通信をしようとしているのですが、 CommPortIdentifierがポート名を一つも返しません。 サンからのCommunicationsAPIに付属しているサンプルプログラム(SerialDemo.java)をコンパイルして走らせてみたのですが、ポート選択のリストボックスに何も出ない状態です。 コンパイル・実行とも、エラーメッセージ等は一切出ません。 OSでポートは認識されているし、デバイスの競合も無し。 WindowsXP,Linux、両方(ハードウェアも違う)で試しましたが、どちらも駄目です。(現在SunはWindows版のCom~APIの公開をやめています) ルートやアドミニストレーター権限でログインして試しました。 原因としてどういう可能性が考えられるでしょうか?
シリアルポートを持っていない
OSでポートは認識されているし
OSネイティブのAPIだとどうなの? 認識できてるの?
108 :
デフォルトの名無しさん :2005/12/25(日) 04:47:07
interface Xmas { public void insert(); public givePresent(String obj); } ここのは居心地が良いな〜
さ あ 、 性 の 6 時 間 の 始 ま り で す . / / /// ./ / /j / // 〃!|| | ||ll| | | ヽヽ ヽ | | |, -──- 、 / i l l l l ll l /!.| ,! / | /゙!゙"゙"゙"゙ll| | | !_ヾ゙r、,__.l ,. -‐''´ ̄`ーァ'"´ ヽ、/ l !. | | | |l | || li |/| l| ! | l! ! | | |ミミヾ,| .l7lー‐- 、 __/ | | | | |l l. _lki'l |! l! l+-l、_ ,j l/,!.l |三ニ、jイ l l三ヽ | r'´ _ l i l l lヽ, i´ !_i!ヽl l l! __ `メノl !l ! |=、ニ/ ! l/ヽ== 、-‐'"´ ̄ ̄`ヽ、 / / ヽヽ ヽ ヽ,r=ミ ! ,. ==ミ、 /// j l、 }彡r'、\ \ l_、 ̄`丶、 \ / | ,. -─-、ヽヽヽヽ!::::::::: , / ::::::::::: `/// //'∠ !_{,l、 \ヽヽ, | !l ̄`ー-、`ヽ 、 / __ l、 /,r‐,=≧--‐'´__.', ___ /ノ/ //´ヽj \ ̄ ̄二>‐、-!!,_ \ r'´ /ヽ l | l /rチ'"´ _,ィャヶ'´rt‐\. l'´ ! ///./ / lヽ/'´ ̄ | ヽ, `ヽ、 \‐' } | r ! lノ l /_,.ィ=彡/ l ! \ ー' / / / // l、 ヽ, \ ヽヽ lノ / 」/ ヽ 12月24日の午後9時から翌25日の午前3時までの6時間は 1年間で最もセックスをする人の多い「性の6時間」です。 貴方の知り合いや友人ももれなくセックスをしています。 普段はあどけない顔して世間話してるあの娘もセックスをしています。 貴方が片想いしているあの綺麗な女性もセックスをしています。 貴方にもし年頃の娘さんや姉・妹がいて、いま家にいないのでしたら間違いなくセックスしてます。 貴方と別れたあの娘も貴方がその娘にやってきたことを別の男にやられています。 貴方の将来の恋人や結婚する相手は、いま違う男のいちもつでヒィヒィ言っています
110 :
104 :2005/12/25(日) 09:34:39
OSネイティブAPIでは大丈夫です。
String hoge; hoge = "1"; hoge = "2"; とするとhogeの中身が変わるのではなく hogeの参照位置が変わると思うのですが hogeの中身だけを変えたい場合はどうすればよいでしょうか?
>>111 Stringオブジェクトは変更不可能なオブジェクトなのです
なので、どうしようもありません。
どうにかしたければStringBufferやStringBuilder使うか、
SmalltalkみたくCollectionを継承したクラスとして
新しいStringを実装してください
>>111 Stringに関していえば
>>112 の内容
一般的にオブジェクトの状態を変えたければ
オブジェクトが持っているメソッドをコールする
=は代入演算子だから変数が参照すべきオブジェクトを
指定しているだけで、状態を変えるものではない
>>112 ,113
さんくつ。
なるほど。そうですよね。
よく考えるとできるほうがおかしいですね。
ありがとうございました。
Jarファイルの中の画像ファイルなどに アクセスする方法があれば教えてください。
リソースとクラスパスについて勉強しましょう
コマンド プロンプトでMicrosoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\> のC:\ >が消えないのですが。 全くの初心者です。
そうですか
Jama
画面をクレンザーでこすってみたらどうかな?
prompt $l$p prompt $h prompt $_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_$_
さーおまいら問題だ String s1="test"; String s2="test"; if(s1==s2) { System.out.println("おなじ"); } else { System.out.println("違う"); } さぁ どっちが表示される? いや、通常どっちが表示される?のほうがいいかな?
>>122 なんだ?「通常」とかいうのは
常に"違う"だ、きちんと規定されている
仮に文字列の一致を確かめるならequals()使う
>>122 言語規定に従ってるなら「おなじ」。
> 各文字列リテラルは,クラスString(4.3.3)のインスタンス(4.3.1,12.5)への参照(4.3)とする。
> Stringオブジェクトは,定数値をもつ。文字列リテラル(より一般的には,
> 定数式(15.28)の値となる文字列)は,メソッドString.internを使用して,
> 一意なインスタンスを共有するために"intern"される。
違うとほざく奴は試してから言ってみろやw
>>124 きちんと規定されている、なんてよくも言えたものだ。
おまいの組むプログラムはバグだらけだったりパフォーマンスに問題が出たりしそうだな。
ちなみに、
String s1 = new String("test");
String s2 = new String("test");
if (s1 == s2) {
System.out.println("おなじ");
}
else {
System.out.println("違う");
}
この場合は"違う"だ。
ちゃんと勉強し直せよ。
130 :
デフォルトの名無しさん :2005/12/25(日) 19:05:32
要は==での文字列判定はリテラルが共有されるので、
結果が不定だからやっちゃいかんということだね。
得意になってる
>>129 も痛いが、いったい何に使うつもりだい。
131 :
122 :2005/12/25(日) 19:49:04
はっはー
>>124 やっぱひっかかるやつおるなー
俺がわざわざ「通常」と書いた意味考えてくれよ
定数なら同じになるってこと?
>>131 すまん、「通常」じゃない状況を教えてくれ
通常 String s1 = "test"; String s2 = "test"; 通常じゃない String s1 = new String("test"); String s2 = new String("test"); とか char[] c = {'t', 'e', 's', 't'}; String s1 = new String(c); その他、変なVMを使った場合(漏れは見たことがないが・・・)
135 :
デフォルトの名無しさん :2005/12/25(日) 20:30:48
>>122 は「通常」とかいってる時点で分かってないと思われ。
言語仕様に通常も何もないわけだが。
リテラルがらみの言語仕様をまとめると以下のような感じだな。
String s = "hoge";と定義されているとき、
1.リテラル文字列
→同じオブジェクトへの参照を表現する。
s == "hoge" → true
2.定数式によって計算される文字列
→コンパイル時に計算され,リテラルであるかのように扱われる。
s == ("ho" + "ge") → true
3.実行時に計算される文字列
→新しく生成されるものであって,別の文字列とする。
String ge = "ge";
s == ("ho" + ge) → false
4.計算された文字列を明示的に収容(intern)した結果
→同じ内容をもつ既存のリテラル文字列と同じ文字列とする。
String ge = "ge";
s == ("ho" + ge).intern() → true
136 :
デフォルトの名無しさん :2005/12/25(日) 20:32:42
さーおまいら問題だ
137 :
デフォルトの名無しさん :2005/12/25(日) 20:33:52
通常 String s1 = "test"; String s2 = "test"; 通常じゃない String s1 = new String("test"); String s2 = new String("test"); 意味ちがうから当たり前どと思うが
質問です Calendar型の比較メソッドの after() や before() 辺り、引数が Calendar型ではなくObject型になっているのはなぜなんでしょうか。 類似の日付型でも判定してくれるのかとDate型を渡してみても 正しく判定されてるようではないですし… 下らん疑問ではありますが何か理由があるのだとしたら今後の 参考にしたいと思いますのでよろしくお願いします。
ぶっちゃけカレンダー関連は気にしない方がいい いろいろ設計が間違えている
140 :
デフォルトの名無しさん :2005/12/25(日) 20:47:55
>>138 わからん。設計者に聞けって感じだな。
Calendar以外のものをぶち込めるようにしたかったんだろうなぁ。
141 :
138 :2005/12/25(日) 20:54:01
>>139 >>140 むむぅー。設計者のみぞ知る…ですか…
ぐっと飲み込んで気にするな、ってとこですかね…;
レスありがとうございました。
このスレ読んで、「さーおまいら問題だ」とか言っちゃう痛い子にならないためにひとつアドバイスだ。
本屋で買った参考書を元に独学で勉強をしている者です。 自分で作ってみたのですがうまくいかないのでどこがいけないのか アドバイスもらえると嬉しいです。 interface Animal1{ void eat(); } interface Dog1 extends Animal1{ void run(); } interface Bird1 extends Animal1{ void fly(); } class OldException extends Exception{ OldException(String message){ super(message); } }
144 :
続き :2005/12/25(日) 21:16:01
class Shiba1 implements Dog1 extends OldException{ int age; Shiba1(int age)throws OldException { if(age < 5){ this.age = age; }else throw new OldException{ System.out.println("年齢が高すぎます" + age + "歳"); } } int getAge(){ return this.age; } public void eat(){ System.out.println("シェパードが食べます"); } public void run(){ System.out.println("シェパードが走ります"); } }
145 :
続き :2005/12/25(日) 21:17:06
class Swan1 implements Bird1 extends OldException{ String name; Swan1(String name)throws OldException { if(age < 5){ this.age = age; }else throw new OldException{ System.out.println("年齢が高すぎます" + age + "歳"); } } int getAge(){ return this.age; } public void eat(){ System.out.println("白鳥が食べます"); } public void fly(){ System.out.println("白鳥が飛びます"); } }
146 :
続き :2005/12/25(日) 21:17:47
class Test{ public static void main(String[] args){ try{ Animal1[] animal = {new Shiba1(4),new Swan1(3)}; System.out.println("年齢を設定しました"); for(int j = 0;j < animal.length;j++){ System.out.println("年齢は" + animal[j].getAge() + "歳です。"); } }catch(OldException oe){ System.out.println(oe.getmessage); } for(int i = 0; i < animal.length; i++){ animal[i].eat(); if(animal[i] instanceof Shiba1){ ((Shiba1)animal[i]).run(); }else if(animal[i] instanceof Swan1){ ((Swan1)animal[i]).fly(); } } } }
変な構文 throw new OldException{ System.out.println("年齢が高すぎます" + age + "歳"); } これって throw new OldException("年齢が高すぎます" + age + "歳"); って書きたいのじゃないの?
それとSwan1にフィールドageがない希ガス
>>143 見て無いが販売元のサイト見て正誤表が無いか調べるのが一番早い気がする
150 :
143 :2005/12/25(日) 21:35:55
>>147 >>148 レスありがとうございます。
ほんと間違えまくってますね・・・。
とりあえず int age;を設定して
>>147 さんに指摘してもらったところを
Shiba1(int age)throws OldException {
if(age < 5){
this.age = age;
}else{
throw new OldException("年齢が高すぎます" + age + "歳");
}
}
に変えてみたのですが(Swan1も同様に)どうもうまくいきません。
自分的には
class Shiba1 implements Dog1 extends OldException{
↑
この一文が不安なのですが・・・。
>Animal1[] animal = {new Shiba1(4),new Swan1(3)}; Swan1には数値を取るような引数を持ったコンストラクタはない。 メソッド名の間違い oe.getmessage → oe.getMessage();
>>149 参考書に載っている問題を元に、年齢が高い時だけ例外をスローするように
自分が勝手に付け加えたのでそれは出来ないんですよ。
>class Shiba1 implements Dog1 extends OldException{ 普通はimplementsよりもextendsが先だし、OldExceptionを継承して何するの? Shiba1もSwan1もそれ自体は例外ではないと思うが。 それと、151のはじめ2行は自分で気づいたようなので気にしないで。
AnimalではgetAgeを定義して無い
>>153 ですよね・・。
さっき Shiba1とSwan1にextends OldException{は要らないことに気がつきました。
そしてTestクラスを
try{
Animal1[] animal = {new Shiba1(4),new Swan1(3)};
System.out.println("年齢を設定しました");
for(int j = 0;j < animal.length;j++){
System.out.println("年齢は" + animal[j].getAge() + "歳です。");
for(int i = 0; i < animal.length; i++){
animal[i].eat();
if(animal[i] instanceof Shiba1){
((Shiba1)animal[i]).run();
}else if(animal[i] instanceof Swan1){
((Swan1)animal[i]).fly();
}
}
}
}catch(OldException oe){
System.out.println(oe.getMessage());
}
}
}
に変えてみたところとりあえずエラーが一つになりました。
もう少しがんばってみます。
AnimalやらDogやらは抽象クラスでいいんじゃない? age,getAge()をAnimalが持ってやれば
ヒント:try {}の中でAnimal1[] animalと書いてるけど、 これではブロックの中でしかアクセスできない。
158 :
143 :2005/12/25(日) 22:05:20
完成しました。
レスくれた方ありがとうございました!
>>154 ご指摘ありがとうございます。その通りでした。
そのアドバイスを修正していくと出来ました。
どうもありがとうございました。
159 :
デフォルトの名無しさん :2005/12/25(日) 22:13:40
すみません -128以上127以下の整数をランダムで10個ほど生成したいんですが、どうすればよいでしょうか?
API読め
(int)(Math.random() * 256.0) - 128;
>>161 サンテェス
やっぱりint型ですよね
なにか特別な型でも使うのかと思ってました
163 :
159 :2005/12/25(日) 22:40:02
無事にできました 161ありがとう!
すいません。質問です。 Java Image I/O は J2SE 1.4 からコアパッケージとなりましたが、 それ以前はオプションパッケージとして存在していたわけですよね? それはバージョンいくつのときだったったのでしょうか?
PNGやJPEGファイルに書き込まれている文字情報を Javaではどうやって取り出したらいいんでしょうか?
規格にっしたがってアクセスすればいいよ
独自でイベントリスナー的なものを作りたいのですが、 単純なサンプルプログラムないでしょうか?
>>170 デザパタ本みたほうが分かりやすいと思う
>>171 ビンボーなのでWebページでお願いします(;。;)
または、誰かソース書いてくれないかな…。
Buttonのソース読んだんですけど、ごちゃごちゃしてわかりませんでしたorz
173 :
170 :2005/12/26(月) 16:52:12
名前、付け忘れました。 えーと、interface作って、Lisner登録する側はそのinterfaceをimplementsしなきゃいけないということはわかるのですが…
独自イベントを作る 独自イベントを発生させるクラスを作る 独自イベントを受取るクラスを作る 以上
>>174 > 独自イベントを作る
extends java.util.EventObject
> 独自イベントを発生させるクラスを作る
add~Listener
remove~Listener
fire~Listener
> 独自イベントを受取るクラスを作る
>>173 > 以上
>>172 Swingのイベント周り見るとよく分かるよ
APIのソースよめというわけだ
Sunのコードは分かりやすいから大丈夫だと思う
177 :
170 :2005/12/26(月) 17:31:09
もうちょっと四苦八苦してみます。 ありがとうございます。
178 :
デフォルトの名無しさん :2005/12/26(月) 17:45:17
>>170 JUnitのソース読め。
TestResult.java
TestListener.java
いいサンプルだ。
立ち読みで十分だけどな
int size; byte[] data; InputStream in=null; try { in=Connector.openInputStream("scratchpad:///0;pos=0"); size=(int)(in.read()&0xFF); data=new byte[size]; if(size>0) { in.read(data); text=new String(data); } in.close(); } Iアプリのプログラムなんですが (in.read()&0xFF);の部分で何をやっているのか良くわかりません read():10101010 & 0xFF :11111111 = :10101010 で&0xFFの意味がないと思うんですが
いつも思うんだが、せめてtabを全角スペースに変換して ソースを貼り付けて欲しいと思うのは俺だけか・・・。 インデントが無いのが激しく見づらい。
まあ本気で答えてやろうってときは、エディタに貼り付けて オートインデントさせるからどうでもいいな。
>>180 -1 が返ってきた時に NegativeArraySizeException で落ちたくないとか。
書いてみた人に聞いてみんとわからんけど。
>>184 InputStream#read() の戻り値は int型で 0 〜 255 にマップされる。
unsignedが無いとなんで&0xFFが必要なんでしょうか? in.read()で読み込んだビットが符号なし10000001(10進で129)だった場合 符号あり10000001(10進で-1)に変換するってことでしょうか? ビット周りよくわかってないんで見当違いな事聞いていたらすみません
>>169 ありがとうございます
javax.imageio.metadata を使って読めました
インデントは個人差が有るからな。ヲレインデント通して整形する癖を付けた方がいいよ。
質問失礼します。 JComboBoxを使う時に combo = new JComboBox(); combo.addItem("itemA"); combo.addItem("itemB"); combo.addItem("itemC"); という風に設定してコンボボックスを表示した時、 最初に追加したitemA以外を初期値として表示する事は可能でしょうか? わかりにくい説明ですいません。
192 :
デフォルトの名無しさん :2005/12/26(月) 21:35:19
>>190 JComboBox#setSelectedIndex(int anIndex) または
JComboBox#setSelectedItem(Object anObject)
でできる
193 :
デフォルトの名無しさん :2005/12/26(月) 21:36:03
みんなデバッガなに使ってんの?
普通にAPIみればわかるな 難しいことは何にもないし
195 :
デフォルトの名無しさん :2005/12/26(月) 21:42:03
あーみんなデバッガみたいな弱虫ツール使わねーのかー だよなー
196 :
デフォルトの名無しさん :2005/12/26(月) 21:46:16
みんな漢だよなぁ いや、さすがムー板だ。此処だけは本物が揃ってるわ・・・ つーか根性入りまくりだ 統合開発環境とか金出して買う奴の顔が見たいって連中ばっかだよ
197 :
デフォルトの名無しさん :2005/12/26(月) 22:06:16
gcにかかりやすくするため、close()やnullセットをしているのですが、 ちゃんとできていることを証明したいので、一括してチェックするツールはないのでしょうか?
closeとnullセットは意味違うし 意味のないnullセットしてるやついたらぶん殴る
nullセットなんてしても99%は無意味
200 :
197 :2005/12/26(月) 22:13:49
>>198 失礼しました。
close()はFindBugsでチェックできてました。
残るはnullセットができているかチェックしたいです。
nullセットはすべきでない
nullセットをしてはいけない理由はなんですか?
nullにしなきゃいけないということは変数の使いまわし これは推奨できない 意識的にnullいれるようなところはやめてかわりに変数のスコープを制限すべし { } 使ってね
すいません、公開されているRDFのラッパークラスで何かいいものはありますでしょうか? RSS用のライブラリはいっぱいあるようなのですが・・・。 あるデータのメタデータをちょっとRDFで吐いて読みたいだけなので、 標準ライブラリのXMLクラスを使ってゴリゴリ書いてもいいのですが、 ちゃんと動いている奴があるのならそっちを使った方がいい気がするので。
208 :
197 :2005/12/27(火) 07:12:58
>>206 スコープ制限はやっています。
使い回しはしていないです。
アプリサーバ上で動いてる分なんですが、たまにパンパンになって、
gcかかりまくりレスポンス悪くなるので。
アプリ構造見直せ
>>208 鯖のパフォーマンス調整の問題なのになんでnullセットという思いつきしたのかが気になるところだ
nullを入れた方がGCが効率的にメモり回収してくれるから。
参照カウント制だから変わらないよねぇ。 どっちかといえば、プログラマーの参照消し忘れ防止効果じゃね?
ときどきGC.collect()をしとけばよくね?
>>213 参照カウントだけでやったら循環参照に対応できないし、
マルチスレッドを前提にすると、参照カウンタにアクセスするのに
排他処理が必要になるから下手すると mark/sweep より遅くなるかもよ。
javaにはないの?
鯖は世代別GCやってもセッションがどんどん旧世代にいくからねぇ 並列GCやってないとひどいことにはなる nullセットしてたらその会社からはもう仕事とらんけどな
もうIBMもNECもあふぉだな
IBMはSWT見ればひどさが分かる希ガス
224 :
デフォルトの名無しさん :2005/12/27(火) 18:14:53
>>204 の記事をじっくり読んでしまったが、一番下に要約があって少し悲しくなった。
225 :
デフォルトの名無しさん :2005/12/27(火) 19:24:21
スレ違い覚悟で質問です。 Javaをインストールできません。 Winなのでインストーラ版を落として実行すると、異常終了してしまいます。 試しにMSIのバージョンを3にしてみたら、インストール画面がでてくるようになったのですが、コンポーネントの選択みたいなとこから「次へ」を押した瞬間に異常終了します。 何か心当たりがある方はいらっしゃいますか? (JDK/1.5.0をWinXPにインストールしようとしてます。)
WinXP がそもそも正常稼動しているのかどうかが謎。
ダウンロードに失敗してないか?
228 :
デフォルトの名無しさん :2005/12/27(火) 19:32:44
nullの話なんだけどさ 2重のclose気持ち悪いからnull代入してfinallyでは実行しないようにするのと、finally以外にclose書かないのどっちが良いと思う?
229 :
225 :2005/12/27(火) 19:33:50
>>226-227 即レスどうもです!
XPは2年間以上まともに動いてます。(逆にそのせいで色々インストールしすぎたのが原因?)
ダウンロードは何度かやり直してみたのですが、毎回同じ結果に終わってしまいます。
通常はこんなこと起こりえませんよね・・・?
>>228 finallyで実行しないってなんだ?
普通はfinally以外でcloseは書かない
finallyの中にtry~catch書くときもち悪くて FileReader fr = null; try { fr = new FileReader("test.txt"); int i = 0; while ((i = fr.read()) != -1) { System.out.print((char)i); } } catch(IOException e) { e.printStackTrace(); } finally { try { if (fr != null) { fr.close(); } } catch(IOException e) { e.printStackTrace(); } }
>>232 どの変が気持ち悪いかしらんけど
普通のコードでしょ?
これ以外の書き方はないと思うけど
234 :
デフォルトの名無しさん :2005/12/27(火) 21:19:18
>>221 null入れるのbeaの人から教わった。
みんな聞いてくれ 俺って天才かもしれん
beaもあんな宣伝してるようじゃ死んでるだろ
240 :
デフォルトの名無しさん :2005/12/27(火) 22:56:33
>>232 try {
FileReader fr = new FileReader("test.txt");
try {
int i = 0;
while ((i = fr.read()) != -1) {
System.out.print((char)i);
}
} finally {
fr.close();
}
} catch (IOException e) {
//e.printStackTrace();
throw new IllegalStateException(e);
}
>>241 の書き方だとクローズ前に処理しなくちゃいけないとき駄目じゃないか?
>>211 それはよくある誤解だよ。
昔はそれで通じたけど。
nullを入れたらかえってパフォーマンス低下に繋がることも。
詳しくは dw ガーベッジコレクタ null でぐぐって
あととにかくfinalってのも1.4以上使っていてやるやつはぶんなぐる 1.3.1でもぶんなぐるけど
>>244 ものによっちゃ例外時にロールバックとか処理しなきゃいけないようなこともあるでしょ
>>247 昔はfinalつけるかつけないかでパフォーマンスが変わっていた
finalをとにかくつけて現場を混乱させていたやつもいたということだ
今のfinalは定数化やメソッド内変数を参照する名無しクラスメソッドとかのためにしか使わないね
ああ、そういうことか。finally の流れでいきなり final が出てきたから混乱したっス。 …… Immutable なオブジェクト作るために final 使いまくった記憶アリ。許せ OTL
組み込みだと未だにfinalを気にする人が残っている。しかし この手の分野でも、finalを付けても動作に影響がない場合には、 自動的にfinalを付けるようコンパイル後にバイトコードを再構築 するポストプロセッサがあって、ソースレベルでfinalを意識する必要はなくなってきている。
いまどきの VM は、final つけなくてもインライン化し、 ポリモーフィズムの必要性が出てきたところでインタプリタに戻す というような話を、少し昔に聞いた覚えがある。 が immutable なオブジェクトや、継承を想定して作ったクラス以外は、 オブジェクトの整合性を守るために final 使いまくりなのではないのか? SWT のように、「final じゃないけど、継承禁止」とか 文書化する手もあるだろうが、これって、普通なのだろうか。
>>251 組み込みでfinalやるとメモリ余分に食うと聞いたが。
finalは誤って値を代入することを防ぐことができる利点がある。
メソッド引数にも使える。
finalをよく使う例は不変クラスの作成かな
254 :
デフォルトの名無しさん :2005/12/28(水) 01:26:21
try { FileReader fr = new FileReader("test.txt"); try { int i = 0; while ((i = fr.read()) != -1) { System.out.print((char)i); ~~~~~~ ↑何これ?
255 :
デフォルトの名無しさん :2005/12/28(水) 01:27:27
オーバロードメソッドがあるから(char)にキャストしなくてもいいといっておくのもええんでない?
アルファベッドで出力するキーワードだろ
という言い方は誤解を招くけど。
258 :
デフォルトの名無しさん :2005/12/28(水) 08:11:20
>>254 (char)つけないと
あ→12354
い→12356
のように出力されました。
260 :
デフォルトの名無しさん :2005/12/28(水) 12:05:01
以下のようなTelnetのサンプルを使ってLinux(FedoraCore2)にaaaというディレクトリを作りたいのですが、作れません。 どこが悪いのでしょうか? whoコマンドでユーザを確認できるのでログインまでは上手くいっているようです。 もしかしてJavaじゃなくてLinuxの方の設定だったりするかも知れませんが許してくださぃ。。 public static void main(String[] arg) throws Exception { String user = "***"; String password = "***"; String prompt = "\\s"; // クライアントの生成 TelnetClient telnet = new TelnetClient(); // サーバに接続 telnet.connect( "*.*.*.*" );
261 :
デフォルトの名無しさん :2005/12/28(水) 12:06:50
// 通信用の入出力ストリームの生成 InputStream istream = telnet.getInputStream(); OutputStream ostream = telnet.getOutputStream(); Reader reader = new InputStreamReader( istream ); Writer writer = new OutputStreamWriter( ostream ); // 認証の実行 readMessage(reader, ".*login: $"); writer.write( user + "\n" ); writer.flush(); readMessage(reader, "Password: $"); writer.write( password + "\n" ); writer.flush(); // プロンプト出力待ち readMessage(reader, ".*" + prompt); // コマンド実行 writer.write( "mkdir aaa\n"); writer.flush(); // ネットワークの切断 telnet.disconnect(); }
>>260 その情報で回答者が回答できると考えるあなたの脳の作りを疑います。
TelnetClientって何よ。
263 :
デフォルトの名無しさん :2005/12/28(水) 12:16:23
>>262 さん
説明不足でした。
Commonsnet内のクラスだと思われます。
作ったファイルでローカルのHTMLを呼ぼうとしたんですが 下のメッセージがでてしまうんです。 java.lang.IllegalArgumentException at sun.net.www.ParseUtil.decode(Unknown Source) at sun.net.www.protocol.file.Handler.openConnection(Unknown Source) at java.net.URL.openConnection(Unknown Source) at sun.applet.AppletPanel.getAccessControlContext(Unknown Source) at sun.applet.AppletPanel.getClassLoader(Unknown Source) at sun.applet.AppletPanel.createAppletThread(Unknown Source) at sun.applet.AppletPanel.init(Unknown Source) at sun.plugin.AppletViewer.appletInit(Unknown Source) at sun.plugin.viewer.LifeCycleManager.initAppletPanel(Unknown Source) at sun.plugin.viewer.WNetscapePluginObject$Initer.run(Unknown Source) 同じ状況に直面した人いませんか?
265 :
デフォルトの名無しさん :2005/12/28(水) 12:59:05
267 :
デフォルトの名無しさん :2005/12/28(水) 16:51:50
doubleを任意の小数点以下桁数で丸めるにはどうすればいいですか?
>>267 double a = 2.342598462389;
double n = 3;
double digit = Math.pow( 10, n );
a = ((int)(a * digit + 0.5))/digit;
270 :
264 :2005/12/28(水) 18:02:35
>>270 localhost で HTTPD は動いてますか?
273 :
197 :2005/12/28(水) 20:50:39
明示的null代入していたところをすべてやめました。 いろいろありがとうございました。 アプリサーバも後々変更予定。
PERLの if ($str =~ /(abc|def)/) { print $1; } みたいなことをRegexで行うにはどうしたらよいのでしょうか?
Pattern p = Pattern.compile("(abc|def)"); Matcher m = p.matcher(str); if (m.find()) { System.out.println(m.group(1)); }
Matcher m = Pattern.compile("(abc|def)").matcher(str); if (m.find()) { System.out.println(m.group(1)); }
わざわざ例に似せてくれてありがと。 割とそのままいけるみたいですね。 リネームツールでもつくろかしら。
if(Pattern.compile("(abc|def)").matcher(str).find()) { System.out.println(m.group(1)); }
java.util.regexのgroupは0からじゃなかった?
280 :
デフォルトの名無しさん :2005/12/28(水) 23:00:20
Javaアプレットに関してわからない事があります。 HTMLで開いてそこにあるボタンを押したらMySQLの情報操作を行うというもので 今回は試しにDELETEボタンを配置して、そのボタンを押したら MySQLのDELETE文が実行されるというものを作ってみました。 アプレットを使わないで行う基本文での操作はうまくできましたが 今回はHTMLとボタンは無事に表示されてもボタンを押すとエラーが出て 先へ進めなくなってしまいました。 何か分かる事があれば教えてください。
281 :
デフォルトの名無しさん :2005/12/28(水) 23:01:24
import java.sql.*; import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class MySQL extends Applet implements ActionListener { Button delete1; public void init(){ delete1 = new Button("ボタン"); add(delete1); delete1.addActionListener(this);} public void actionPerformed(ActionEvent ae){ try { Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS"; Connection con = DriverManager.getConnection(url,"root","root"); Statement stmt = con.createStatement(); String sql = "DELETE FROM test "+"WHERE a=1"; int result = stmt.executeUpdate(sql); System.out.println(result + "行削除"); sql = "SELECT * FROM HELLO_WORLD_TABLE"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int a = rs.getInt("a"); System.out.println(a);} stmt.close(); con.close();} catch (Exception e) { e.printStackTrace();} } }
282 :
デフォルトの名無しさん :2005/12/28(水) 23:02:00
java.lang.ExceptionInInitializerError at com.mysql.jdbc.Connection.<init>(Connection.java:1175) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :266) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at MySQL.actionPerformed(MySQL.java:22) at java.awt.Button.processActionEvent(Button.java:382) at java.awt.Button.processEvent(Button.java:350) at java.awt.Component.dispatchEventImpl(Component.java:3615) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.EventQueue.dispatchEvent(EventQueue.java:456) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh read.java:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) Caused by: java.lang.RuntimeException: Unable to initialize character set mappin g tables at com.mysql.jdbc.CharsetMapping.<clinit>(CharsetMapping.java:73) ... 15 more 以上です。
283 :
デフォルトの名無しさん :2005/12/28(水) 23:19:05
284 :
デフォルトの名無しさん :2005/12/28(水) 23:23:16
いまさーSunのサイトからJDKがダウンロードできないんだけど… 俺だけ?
>>285 java.sun.com の jdk 5.0 update 6 落とせたぞ。
落とせない
ダウンロード先のアドレスが192.18・・・になってるんだけど これLAN側ネットワークアドレスじゃね?168だったら間違いないだろうけど そんなアドレス存在するのかなWhoisもこねーし
290 :
288 :2005/12/29(木) 12:59:45
>>288 192.18.ddd.ccc はプライベートアドレスじゃないぞ。
nslookup で逆引きもできるけど。
292 :
デフォルトの名無しさん :2005/12/29(木) 13:35:34
馬鹿は放置
JREが落とせないぞ
404
295 :
285 :2005/12/29(木) 13:44:27
俺の環境だとJ2SE SDKも落とせないんだ。 j2sdk-1_4_2_10-linux-i586.binが欲しくてダウンロードを試してみてるんだけど。。 でも285を書いた当時はダウンロードのリンクをクリックすると 404が返ってきてたんだけど、 今は応答が来ないようになった。もうちょっと待ってみるよ。
ああ、逝けないね でも漏れはこの前ダウンロードしたから困ってない こういうのうpろだに上げたらまずいんだよね?
止めといた方が良い
298 :
デフォルトの名無しさん :2005/12/29(木) 18:21:38
サードパーティのLook And Feelってないの? 誰でも作れるようなものではないのか? ライセンシーにならんと作れないとか?
public abstract class Animal public class Snake extends Animal public class Lion extends Animal があるとします。 ここで、Animalをランダムに選別して、吠えることができるなら、吠えるようにするという機能を付与したいとします。 私は、下の二つのどちらかになると思うのですが、どちらが良いのでしょうか? (1)interfaceを作り、Lionでimplementsする public interface barkable() { public void bark(); } (2)Animalに下記を追加し、Lionでオーバーライドする public boolean isBarkable() { return false; } public void bark() { throw new UnsupportedOperationException(this.getClass().getName() + " can't bark! "); }
ケースバイケース
305 :
デフォルトの名無しさん :2005/12/29(木) 21:24:09
ばかぶる?
俺なら そのAnimalが吠える事が可能かという属性が必要なら、Animalクラスに持たせる。 Animalかどうかに関係なく、ただ単に吠える事が可能かどうかならinterfaceにする。 この場合、Animalでない(?)ナベツネも吠えることが可能になる。
JTextFieldに文字を入力することができません。どうしたら入力できるようになるのでしょうか? JWindow w = new JWindow(); w.add(new TextField()); w.setSize(200, 50); w.setVisible(true);
308 :
デフォルトの名無しさん :2005/12/29(木) 21:48:33
>>307 JWindowでなくJPanelにのせよう
やってみましたが、これでもできませんでした。 JWindow w = new JWindow(); JPanel p = new JPanel(); p.add(new TextField()); w.add(p); w.setSize(200, 50); w.setVisible(true);
なんで JTextField 使わずに TextField 使ってるんだ?
この前Animal,Bird,Dogクラスで悩んでたやつか?
312 :
307 :2005/12/29(木) 22:05:30
>>310 Jを入れるのを忘れてました。でも、JTextFieldにしても入力できません。
313 :
デフォルトの名無しさん :2005/12/29(木) 22:08:27
JWindowのかわりにJFrameつかったら?
>>309 p..getContentPane().add(new TextField());
ふつうはこうじゃないの?
>>303 どっちでも良いけど
(2)で属性追加する必要あるの?
Animalは全て吠えるを持つ事にして吠えないものは何もしないようにすれば良いんじゃない?
ぁい、先生、質問です。 [1] SJC の質問はこのスレでOK? [2] SJC-A, SJC-P の合格ラインって、正答率何%くらい? [3] 在学中には取っておきたいんだけど、A と P どっち取るべき? [4] ぶっちゃけ、推奨コース受けなくても平気?
お、すまん。ム板だけしか探してなかったよ。ありがとう。
320 :
303 :2005/12/29(木) 23:21:06
>>306 吠えることができるクラスが、Animalの範囲に収まるかどうかが大事ということですね。
無闇にinterfaceにすると、汎用性は高まるけど、
TomatoにもPhilosophyにも吠えさせることが可能になってしまうから、
きっちりJavaDocコメントを書くなどの注意が必要になりますね。
つまり、
>>304 の仰るケースバイケースってことですね。
>>305 英語はなんとなく動詞+ableで○○できるって意味になると思ったので、
そんな名前にしてみました。
>>311 はい。先般はお世話になりました。
>>315 吠えない生き物が吠え(ようとし)たら、それは異常事態で例外扱いだと思うんです。
実装者のミスというか。
前もってif文で分岐しておくべきだと思っています。
皆さん、どうもありがとうございます。
例外にするか、何もせずに返るかは、他のクラスとの兼ね合いで考えたほうが良いよ。 やっぱりケースバイケース。
何でもif文で分けるのは感心できない 同じような分岐がプログラム上で何回も出てくるのは宜しくないし デザインパターンの何かが使えるんじゃないとか デザパタについて余り詳しくないのに言ってみるテスト
323 :
デフォルトの名無しさん :2005/12/29(木) 23:36:58
すみません。 以前別のサイトで質問した内容なのですが、 回答がなかったので質問させてください。 eclipseではjarファイルの作成ができました。 フリーのJava Studio Enterprise 8で、jarファイルを作成しようとすると、 作成できても、jarファイルをダブルクリックで起動しようとすると 「Could not find the main class. Program will exit.」と表示されます。 どこかのフォーラムでも同様のことが質問されていました。 windowsxpでの開発ですが、これについての解決策はありませんでしょうか? 素人の質問で申し訳ありませんが、よろしくお願いします。
マニフェストは?
つ[ MANIFEST.MF ] ……綴り合ってたっけ?
326 :
303 :2005/12/30(金) 00:02:53
>>321 >>322 確かに、if文が増えてしまうと見づらくなるきらいはありますね・・・。
ケースバイケースで、状況によって考えてみます。
デザインパターンは積ん読になってる本があるので、
それで調べてみます。
例外をifの代わりにする奴はあほ
唐突だな
if を例外の変わりにするのはアリだけどな。
330 :
デフォルトの名無しさん :2005/12/30(金) 00:46:42
>>324 様、
>>325 様、ありがとうございます。
意図する返事と違うかもしれませんが、
jarファイルを回答して、META-INFフォルダのMANIFEST.MFの中身を見ますと、
「
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.5.0_04-b05 (Sun Microsystems Inc.)
Main-Class: javaapplication14.Main
X-COMMENT: Main-Class will be added automatically by build
」
となっていましたが、あまりよくわかっていません。
Java Studio Enterpriseが自動的にjarファイルに付加したものです。
後、ごめんなさい。
いつの間にか、システムが不調になってしまい、
JavaVirtualMachineが起動できなくなっていました。
ちょっとなんだかよくわからなくて焦ってしまいました。
OSの再インストールをしなおして、もう一度やり直してみようと思います。
もしかすると、Java開発環境を入れすぎたのかもしれません。
すみませんでした。
>>295 j2sdk-1_4_2_10はJISAutoDetectにバグがあって
なんか知らないけどClassCastException投げるから
公開中止とか。
j2sdk-1_4_2_09にしとけば?
>>331 いや、どうせコンパイルにしか使わないのでそういうのは平気です。
昨晩、再度ためしたところ落とせたのでOK
333 :
307 :2005/12/30(金) 09:24:31
>>313 JFrame使ったらできましたが、JWindowでできないのはなぜでしょうか?
JFrameとJWindowの違い判ってる?
335 :
307 :2005/12/30(金) 09:37:17
本にタイトル(ボーダー)があるかないかだと書いてあったのですが、それ以外のことはわかりません。
336 :
デフォルトの名無しさん :2005/12/30(金) 10:25:55
ArrayIndexOutOfBoundsException通称アレックスが、あるスレッドの終わりで発生します。 デバッガが止まってるのは最後の } で、Arrayとは関係ないところなんです。 なんででしょう? だれかエスパーの人おねがい・・
それじゃどうにもならん スタックトレースと該当ソース晒せ
.NETだとデバグが止まっている矢印の一つ上のステートメントで 例外が出てるんだけどね
脇にそれますが、
>>336 の通称アレックスというのはJava業界ではメジャーな用語ですか?
ぐぐる先生に聞いたところでは皆無ですた
アレックスと言えばRX-78-NT1だろ
メジャーじゃない、2ちゃんだけだろ ArrayIndexOutOfBoundsExceptionなんて NullPointerExceptionに比べたら遙かに発生しにくいし
下のプログラムでは実行時間に2倍以上の開きがあります。 変数を初期化するかどうかの違いですが、実行時間が こうも開くのはどうしてでしょうか? public static void main(String[] args) { final int SIZE = 1 << 15; final int LOOP = 1000; long start, end; List<Integer> list = new ArrayList<Integer>(SIZE); for (int i = 0; i < SIZE; i++) { list.add(Integer.valueOf(i)); } start = System.currentTimeMillis(); Integer[] integer1;//nullで初期化しない for (int j = 0; j < LOOP; j++) { integer1 = list.toArray(new Integer[list.size()]); } end = System.currentTimeMillis(); System.out.println(end - start); start = System.currentTimeMillis(); Integer[] integer2 = null;//nullで初期化する for (int j = 0; j < LOOP; j++) { integer2 = list.toArray(new Integer[list.size()]); } end = System.currentTimeMillis(); System.out.println(end - start); }
>>342 実行するのが面倒だから聞くけど、後者の方が早いの?
integer1とinteger2の初期化の方法を逆にしても結果は同じ?
344 :
342 :2005/12/30(金) 14:55:05
前者の方が早いです。 初期化の方法の方法を逆にしても nullで初期化しないほうが早いです。
ほんとだ この命令が違うだけなんだけどね aconst_null astore
>>342 ちなみに、mustang の clientVM だと殆ど変わらない。
serverVM だと前者のがちょっとだけ速いみたいだけど。
俺も実行するのがめんどくさいから邪推だけど 計算結果の integer1 や integer2 がその後使われてないから 何かしらの最適化が行われてるんじゃないかな。 初期値が与えられていない方は、その値を確定するために ループを回しているとか。 計算結果を表示させるようにすれば、同じ速度になったりしない?
InputStreamを使ってテキストファイルから以下のような文字列を読み込んで ";"ごとに分割するプログラムを組んだのですが 1:AAAAA; 2:BBBBB; 分割すると 1:AAAAA; 改行文字2:BBBBB; となってしまいます。改行文字を除去するにはどうしたらいいでしょうか?
どうやって分割してるの?
>>348 InputStream 使わずに BufferedReader 使えば?
>349 substringとindexOfを使って先頭から";"が見つかったところまで(";"を含む)分割 2週目は一行目の";"の次を先頭に";"が見つかったところまで(";"を含む)分割 ってやっています >350 書き忘れてたんですがIアプリなんで BufferdReaderはないです;
>>351 ;の次の改行は取り除けばいいんじゃない?
substringとindexOf使って
改行コードと「;」のタイミングは不規則? 348にあるサンプルデータ列だと改行で切り分けて とってくりゃいいように見えるんだが そうじゃないなら文字列から改行コード抜いて 文字列再生成するような関数自前で作るとか StringTokenizerで改行とセミコロン両方で区切るようにして 末尾の区切り文字判定で処理かえるとか iアプリでStringTokenizer使えるかどうかはしらんが
>352 2行目をprintln("2::"+2行目)で表示すると 2:: 2行目 と表示されるので 2行目の文字列は \n2:BBBBB; だと考えて 2行目 = 2行目.subString(1,2行目の長さ); とやった後にprintln("2::"+2行目)と表示しても 2:: 2行目 となって改行文字が消えないんですが何か間違ってますか?; >353 改行は規則的に出てくるのでやってみます
>355 2文字だったんですね・・・・orz これならなんとか自己解決できそうです。 みなさん、レスありがとうございました。
>>356 Windows 上でテキストファイルを作っている場合は \r\n
Linux 上でテキストファイルを作っている場合は \n
Mac 上でテキストファイルを作っている場合は \r
だったっけ、うろおぼえ
いずれにせよ、テキストファイルをどうやって作るかに依存
とりあえず、\r と \n を消しておけばいいのかな
359 :
デフォルトの名無しさん :2005/12/30(金) 19:30:11
ちょっと聞きたいんですが、 アプレットの大きさを動的に動かせるプログラムを教えて欲しいのです。
>>359 アプレットから別ウィンドウ立ち上げたら?
アプレットの大きさってHTMLで指定されるんじゃないの?
>>260 >>263 Jakarta Commons NetやAntのtelnetタスク、sshタスクを使いたくなってしまう。
勉強のために自作するというのも悪くは無いが。
javaの速度は二の次でいいんじゃねーか? 破棄されずに誤動作起きるよりnull入れてこうよ remove呼んだのにあんじゃん、とか勘弁してよ
>>362 そのCommons使ってるんじゃない?
>>363 null の代入が必要なときに限り null を入れるべき
手抜きする人とは一緒に仕事したくない
>>363 企業のコーディング規約は未だに
「使い終わった変数にはnullを代入している:○、×」
みたいなのはあるね
>>367 二択クイズみたいなコーディング規約だな
ああぁ、コーディングチェックシートだ、それは 規約の方には「代入する」って指示が書かれてる
通常 main メソッドから動くクラスで new X() とすると 以下のどのクラスローダが使われるのでしょうか? Thread.currentThread().getContextClassLoader() ClassLoader.getSystemClassLoader() ClassLoader.getSystemClassLoader().getParent() Class.forName()メソッドは、2番目のクラスローダが使われると 記述されているので、2番目なのかなと思っているのですが・・ちょっと 自信なしです。 環境は Sun J2SDK 1.4.2 です。
自己レスです・・ rt.jar内のクラスはブートストラップローダ(3番?)、CLASSPATHを辿って 見つけることができるクラスは2番である事がわかりました。 1番はどのシーンで使われるか分かっていませんが、とりあえず解決できました。
うむ。おれの言ったとおりだな。
>>370 クラスをロードするのってVMじゃないの?
>>367 その企業はIBMのdwのあの記事をよく読んでいないってことが
よくわかるね
>>374 日本のIさんに言ってください><
いいスペックの筐体を売るための罠だとしか思ってませんが
Javaってメソッドの引数参照渡しだから下のできますよね? //メインループ List list = null; hoge( list ); hage( list ); hige( list ); // 0, 1, 2を表示 private void hoge( List l ) { l = new ArrayList(); l.add( 0 ); } private void hage( List l ) { l.add( 1 ); l.add( 2 ); } private void hoge( List l ) { for ( Iterator it = l.iterator(); it.hasNext(); ) { int i = (int)it.next(); System.out.println( i ); } }
>>376 参照渡しではありません。
hogeは×
hageは○
higeは○
上は間違えで、hageでぬるぽです。
あ…hogeが二個ありますね 失礼しました forでPrintln回してるのがhigeです 実際やってみるとぬるぽが出てるんです なんで駄目なのかよくわかんないんですが、教えていただけますでしょうか?
>>380 メソッドhogeで変数lにArrayListを参照させてるけど、
メインの処理にある変数listがそのArrayListを参照するわけではない
そのため、メソッドhageの引数であるlistはnullのままで、
メソッドhageないで参照している変数lもnull
で、このnull参照の変数に対してaddメソッドを呼んでるのでぬるぽが発生
>>376 Java にはプログラミング言語界隈でいうところの「参照渡し」はない。
Java 言語規定でいうところの『参照値が「値渡し」』される。
>>381 List list = new ArrayList();
hage( list );
hige( list );
だと大丈夫で、hageとかには参照渡しになるんですかね?
intとかの基本型の変数だと値渡しで、Stringとかのクラスの変数だと参照渡しと
理解していたのですが…
うーん、よくわからないな…
>>383 > intとかの基本型の変数だと値渡しで、Stringとかのクラスの変数だと参照渡しと
両方とも値渡し。
参照型の場合はC言語的に言うと、ポインタが値渡しされる。
385 :
デフォルトの名無しさん :2005/12/31(土) 13:22:33
JarFile jarFile = new JarFile(file); Manifest manifest = jarFile.getManifest(); Attributes attr = manifest.getAttributes("My-Class"); これでattrがnullになるんですがなぜでしょうか? jarファイルをlhacaで解凍したところ META-INFフォルダの中にMANIFEST.MFファイルがあり、 My-Class: MyClass というようにきちんと書いてあるのですが。
言語を学習するときは新しい気持ちで学習した方が効率的
C(C++)だったらこうで、Javaだったら・・・
確かにその場では理解が早くなった気になるけど、
最終的にどっちがいいと言ったら、断然新しい気持ちで学習したほう
参照渡しだの既存の考えで考えている以上
>>376 こういった疑問はつきない
388 :
385 :2005/12/31(土) 13:32:48
>>384 ではJavaではListとかを引数にした場合、そのコピーがメソッドに渡される訳ですよね?
じゃ複数のメソッドにまたがって変数を参照する場合はそれらより上位で
変数の中身を確定しておかなければならず、またそれらのメソッドの中で
その変数を変更(Listに値をaddとか)しても、上位にある元々も変数には
影響が出ないって事ですか?
>>386 んなことはない。値渡しや参照渡しの概念は重要
ところで、Javaの変数は、
その型がオブジェクトであるときは実体でなく参照を格納する
(C言語的にいうと、変数はポインタ)
391 :
デフォルトの名無しさん :2005/12/31(土) 13:47:50
>>389 惑わされるな。
コピーはされない。
コピーされるのはintとかdoubleとかだけ。
>>385 × Attributes attr = manifest.getAttributes("My-Class");
○ String value = manifest.getMainAttributes().getValue("My-Class");
>>389 > ではJavaではListとかを引数にした場合、そのコピーがメソッドに渡される訳ですよね?
参照値がコピーされる。オブジェクト自体がコピーされるわけじゃない。
> その変数を変更(Listに値をaddとか)しても、上位にある元々も変数には
参照されたオブジェクトには影響がでる。
参照値自体を変更しても元々の参照変数には影響がでない。
>>393 一応は…
深く突っ込まれるとボロがでると思いますが
>>394 ん〜……じゃあ
List list = new ArrayList();
hage( list );
hige( list );
private void hage( List l ){
l.add( 1 );
l.add( 2 );
}
private void hige( List l ){
for ( Iterator it = l.iterator(); it.hasNext(); ) {
int i = (int)it.next();
System.out.println( i );
}
}
はOKだけど
//メインループ
List list = new ArrayList();
hoge( list );
hage( list );
hige( list );
private void hoge( List l ){
l = new LinkedList();
}
とかやっても、listはArrayListのままってことですかね?
JVM 側に malloc() っぽい事させたのを C君が使う、このC君はfree()しないとリーク起こる?
398 :
377 :2005/12/31(土) 14:10:03
> JVM 側に malloc() っぽい事させた 表現があいまいなので答えられません。
>>397 freeの心配より前にJava側でGCされてC君がアクセスしてあぽん
>>390 それを理解するのに既存の言語に
あてはめる必要はないってことだよ
既存の言語の埋解度によっては
混乱を招くため
>>398 いや、なんでそうなるのかよくわかんなかったんで…
ともかくありがとうございました
>>401 既存の言語ってなんだよ
既知の言語だろ
0:00までに実家に帰れるプログラムを作ってください><
>>405 dw書いている良いIさんとnull代入させるIさんがいるってこと
J2SE 5.0 と J2SE 1.4.2 はどう違うんでしょうか? どっちをインストールすれば良いんですか?
409 :
デフォルトの名無しさん :2005/12/31(土) 18:01:52
努力しなさい
>>408 5.0 の方が新しい。 5.0 インストールしておけばよさげ。
使いたいソフトが 5.0 に対応してないとかの事情で 1.4.2 が必要とかでなければの話だけど。
412 :
:2005/12/31(土) 18:15:16
はぁ、年末年始も返上で卒研プログラムの作成か・・・。 このままPCにへばりついたまま年越しだろうな
実行中に動的にクラスパスを追加するルーチン作ったけど、あんまし使い道ない事に気づいた。
415 :
デフォルトの名無しさん :2006/01/01(日) 07:44:23
XML言語のお勉強をしようと思い、『やさしいXML(高橋麻奈 著)』で勉強していますが、 VALIDATE.JAVAをコンパイルできません。(本書で使うツール p.xiv) 本に書いてあるとおり、ソースファイルがある場所で"JAVAC VALIDATE.JAVA"とコマンドを打ったのですが。。。 ”コマンドまたはファイル名が違います.”としか表示されません。。 JDK1.5がWIN98をサポートされていないからですか? 誰か教えて下さい、よろしくお願いします。 私のPCのOSはWIN98で、SecondEditionではありません。 ちなみに下記が、私のPCのAUTOEXEC.BATです。 @ECHO OFF loadhigh c:\windows\COMMAND\nlsfunc.exe c:\windows\country.sys rem - By Windows Setup - \dos\mscdex.exe /D:cdrom001 /L:g SET PATH=%PATH%;c:\PROGRA~1\COMMON~1\AUTODE~1;C:\Program Files\Java\jdk1.5.0_06\bin
SET PATH=%PATH%;c:\PROGRA~1\COMMON~1\AUTODE~1;C:\PROGRA~1\Java\jdk1.5.0_06\bin; :SET JAVA_HOME=など とりあえず、空白含まない場所にインストールするのが無難だよ それか echo "C:\Program Files\Java\jdk1.5.0_06\bin\javac.exe" %* >javac.bat
>>415 パスの設定ができてないだけに見えるが・・・OSは関係ないと思う
419 :
デフォルトの名無しさん :2006/01/01(日) 13:32:34
415です。 教えてくれた人、ありがとう。 家に帰ってパスを再設定してみます。
さすがに今日は人が少ない
421 :
デフォルトの名無しさん :2006/01/02(月) 01:16:00
JFileChooserを開くだけのプログラムなんだけど、 これを実行しては閉じる、実行しては閉じると30回くらいやっていると、 デッドロックを起こしたようにフリーズする時が来る。 フリーズは1回目になるかもしれないし、30回こえても起きないかも知れない。 こちらの環境(Win2K。jre1.5.0_06)では50回以内にはかならず起きている。 JFileChooserに問題があるようで、JOptionPaneなどの場合は起きない。 というわけで、余裕のある方、確認してみて欲しいです。 import javax.swing.*; import java.io.*; public class BugDemonstration { static JFileChooser file = null; public static void main(String args[]) { final JFrame frame = new JFrame("The Frame"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.setSize(200,200); frame.setVisible(true); SwingUtilities.invokeLater(new Runnable() { public void run() { file = new JFileChooser(); file.setMultiSelectionEnabled(true); file.setDialogTitle ("Select lots of files..." ); file.showDialog(frame.getContentPane(), "Demonstrate problem"); } }); } }
invokeLater の引数に与えた Runnable 内で 例外が出てないかまず確認してはどうか。
423 :
デフォルトの名無しさん :2006/01/02(月) 02:46:37
>>422 不勉強ですいません。
それはどうやって確認すればいいですか?
コマンドラインから実行していますが今はフリーズしても例外は出ません。
>デッドロックを起こしたようにフリーズする時が来る。 だって >SwingUtilities.invokeLater だからな。
あーん、おしえてくだせぇ。知ってるなら。
質問ですorz チェックボックスの配置を指定するにはどうやったらいいですか? yes/no の二択を5個出したいのですが、すべて連なってしまい、 yes no yes no みたいに縦になってくれません。 どうしたらいいでしょか?
>>426 どうやっているのかプログラム晒してよ
awtかSwingすら書いてないし・・・
428 :
デフォルトの名無しさん :2006/01/02(月) 04:07:38
これでもフリーズするよ。 38回目でフリーズした。 どうして? import java.awt.Container; import javax.swing.*; import java.io.*; public class Test3 { public static void main(String args[]) { JFileChooser fc = new JFileChooser(); fc.showDialog(null, "Hoge"); } }
>フリーズした。 どのタイミングでフリーズするの? 実行してから何も表示されないの? それとも、JFileChooserが表示された後にフリーズ?
>>429 表示される前にフリーズします。
正確にはものすごーく重くなって、JFileChooserが表示されるべきエリアが
グレーに塗りつぶされて領域を確保したのが分かって、おそらくそのまま長
時間ほっておけば、JFileChooserの絵が完成するのかもしれないと思いつつ、
あまりに遅いし、Win全体が重くなって使えなくなるので、Ctrl-C連打して止めるか、
タスクマネージャで強制終了しています。
今ためしたところ、グレーのパネルが出たあと1分から2分放置したら、 JFileChooserが表示され普通に使えるようでした。 さらにひつこくもう一度フリーズさせて、数分以上放置しましたが、 フリーズしたままでした。 テストプログラム import javax.swing.*; import java.io.*; public class Test3 { public static void main(String args[]) { JFileChooser fc = new JFileChooser(); fc.showOpenDialog(null); } }
432 :
デフォルトの名無しさん :2006/01/02(月) 04:55:36
とりあえず、UIコンポーネントは UIスレッドからのみアクセスするようにしてみる。
>>433 メインスレッドでUIコンポーネントを作成していた気がするが、
まあいいや、原因違うかもしれないしガンバレ
>>421 のプログラムだってsunのサイトにあったサンプルひっぱってきたのです。
他にもいくつかネットにあるJFileChooserのサンプルでためしてるんだけど、
例外なくフリーズはおきるようだけど。こっちの環境固有の問題?
あー、めんどくさいから、ちゃんと言うと 昔は、pack か setVisible などでUIコンポーネントを表示する前は スレッドセーフにアクセスできるとか言ってたんだけど、 いつの間にか、いつでもUIスレッドじゃないとだめだという話になってた。 SUN のチュートリアルも、そうなってる。 昔のSUNのチュートリアルとか、 それを見て作った人のサンプルとかは、UIスレッドを用いずに UIコンポーネントを構築しているものがあるかもしれない。
439 :
437 :2006/01/02(月) 05:21:57
というわけで、ぶっちゃけ public class Hoge { public void main(String[] args) { SwingUtilies.invokeLater(new Runnable() { いろいろ } } } とかが安全。今回の挙動とは関係ないかもしれないけど それだけ
>>439 確かにそれはお約束だな
まぁ、setVisible(true)の部分だけソコに書けばいいのだけど
>>440 ちがう。と思う
たしかに、invokeLater によって、
メインスレッドとUIスレッドの同期をイベントキューを通じて行えるかもしれないが、
invokeLater が実行される前に
UIコンポーネントに UI スレッドがアクセスする可能性がある場合、
UIスレッドからは不完全に見えるオブジェクトにアクセスする可能性がある。
これだと48回目にフリーズしたけど30秒ほど待ったら大丈夫だった。 その後100回までためしたけど、問題はおきなかった。 でもなんかまだ怪しいような気がします。 import javax.swing.*; class Hoge { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFileChooser fc = new JFileChooser(); fc.showOpenDialog(null); } }); } }
>>442 ダイアログ周りは怪しいみたい。
前にJDialogを使ったときに、Modalなはずのダイアログが最前面に出なくてUIが操作できなくなったことがあった。
そのときは、ダイアログの親フレームを指定するようにしたら解決した。
そのプログラムも、showOpenDialog()の引数に有効なJFrameオブジェクトを指定すればうまくいくかも。
試してないが、健闘を祈る。
445 :
デフォルトの名無しさん :2006/01/02(月) 15:12:34
>>62 なぜそこで中国人ヴァイオリニストYOYOMA(ヨーヨーマ)がでてくるのか?
>Modalなはずのダイアログが最前面に出なくてUIが操作できなくなったことがあった。 >そのときは、ダイアログの親フレームを指定するようにしたら解決した。 それに関しては当然だと思うが・・・
>>444 ありがとう。
サンプルは話を簡単にするため簡略化してカキコしたものです。
もとはownerを指定していました。それでもフリーズします。
とりあえずこういうものだと諦めて作業を先に進めます。
448 :
デフォルトの名無しさん :2006/01/02(月) 18:34:12
JOptionPaneは親Frameを指定しない場合(null)、勝手にフレーム探すって本当ですか?
450 :
デフォルトの名無しさん :2006/01/02(月) 19:03:44
>>424 のいう、
>だって
>>SwingUtilities.invokeLater
>だからな。
というのが気になるなー
JFileChooserを呼ぶときinvokeLaterを使ったらまずいのですか?
>>445 台湾系アメリカ人のチェリストじゃなかったっけ?
>>367 こちらも規約に、null代入するように書いてある。納品前にチェックあるし。
なんで?と聞くと、gcにかかりやすくするためと言われる。
Sunの人が効果ないよって言ってくれたら信用してもらえるのかな。
当方、dwの記事読んでも効果があるのかないのか理解できないので説明は無理。
453 :
デフォルトの名無しさん :2006/01/02(月) 23:05:42
>416 >418 コンパイルできました。(Validate.classが作成されました) ありがとうございました。
>>452 最も大きな効果は、意味のない記述をソースから除去できること。
その場の使い捨てでない限り、ソースは人間が読むものであり、
意味のある記述だけを含むべきである。
そうでなければ、何が書かれているのかが把握しにくくなり、
ひいては不具合を引き起こしたり、その発見に支障をきたす。
通常、ソース(ロジック、アルゴリズム)の難解さは
何らかのトレードオフによって生まれるのだろうが、
こと null 代入に関しては、欠点だけしかない。
などと上に口答えできる環境にいる人は幸せ
455 :
452 :2006/01/03(火) 07:36:57
>>454 thanks
意味のある記述、の話したことあるけど、gcにかかりやすくする意味があるんだよ
と言われて負けっぱなしです。
が、上の方に書いてあったnull代入してもgcに影響与えないなら、↑の意味はないのですね。
あぁ、returnの前に =null;が並ぶ.。。。。。漏れがないかチェックさせられてる。。。。。
>>455 なんのためのgcやら…malloc()+free()と一緒じゃん。
SunのTech TipsとかIBMのdeveloperworksにその辺の話、なかったっけ。
そのうち各メソッドの終わりにSystem.gc()が必須になりそうだな。 隙を見てIBMの記事を印刷してデスクに置いておくとか
null代入は全く意味の無いことじゃないって。 場合によってはnullしとかないとメモリリーク起こす場合もある。
すみませんどなたかnull代入の件のdwの資料のURLお願いできませんでしょうか? いつか読んだことがあって、 それ以降null代入はtry-finally節で変数の後処理の時しかしないのですが、 もう一度読みたくなったけど見つけられないです。
204ですた
>>458 VMのバグとコーディング規約を一緒に考えてはいけない
>>461 ありがとうございます。
GCの仕組みによっても違ってきそうですね。
糞プログラマが作ったアプリレベルがどうこうできるほど、 最近のVMはバカじゃない。
糞プログラマがシングルトンなオブジェクトとかで 参照解放せずに つかみっぱなしにしてる場合は GC じゃ どーにもなりません。
>>468 他の部分の実装如何で大丈夫とは言い切れないが、
少なくともGCの対象にするためには
当該のオブジェクトからの参照を切るためにnull代入は必要。
誤爆したので改めてこちらに質問です 最近Java始めたばっかり何ですが、メソッドやフィールド変数は クラス(オブジェクト)に属するってのはわかったのですが、 +などの算術演算子やforなどの制御文ってどのクラスに属するのですか?
>>471 算術演算子や制御文が記述されている変数やメソッドが属するクラス(またはそのインスタンス)。
位置づけとしては何になるのですか? メソッド?
位置づけとしては、演算子・制御文でしかない。
そうですか・・・ ありがとうございました
476 :
デフォルトの名無しさん :2006/01/03(火) 13:57:03
long で保持している秒数を 2 hours 23 mins 35 secs みたいにフォーマットして出力する簡単な方法はないでしょうか?
>>476 java.text.DecimalFormatでも使えば?
>>455 そういうチェックは自動化できるだろ(いややらんでもいいって結論みたいだが)
FindBugsとかAspectJとかで
>>467 シングルトンってインスタンスどうせ1個だし
メモリに与える影響って少ないとおもうんだけどなーって思ったけど
どうなの?
例えばシングルトンででかい配列を使ったとして、
その定数的なでかい配列を生成するコストを減らすのも
シングルトンのメリットかなと思うけど。
>>455 nullセットして意味あるのは使いもしない変数が
残ってる場合じゃない?それだとnullセットしないと参照が切れないから
使わなくなったらするにnullセットする意味はあると思う
でもスコープ抜けると参照切れるからreturnの前でnullセットするのは全然意味ないような
その前にスコープの設定がおかしい可能性が高いからリファクタの余地がありそうだね
ま、そういうアホみたいな設計に当たったら説得するより、次にいいプロジェクト入るor立ち上げる方に
労力使った方がいいとおもう
話がシングルトンにずれてるね。
>>458 >場合によってはnullしとかないとメモリリーク起こす場合もある。
>>465 >糞プログラマがシングルトンなオブジェクトとかで
>参照解放せずに つかみっぱなしにしてる場合は GC じゃ どーにもなりません。
>>466 >具体的にどうゆう場合?
>>467 >
>>465 のような場合だろ。
ほら、話がずれてますね。メモリリークの話に戻そうぜ。
クラス設計できない糞プログラマのことはどーでもいいんです。
null 代入するくらいならスコープを切る というか、VM の最適化の邪魔にしかならないんじゃないか?
>>482 ほぼそうだとdw読んだら書いてあった。
485 :
480 :2006/01/03(火) 15:32:12
null 代入とは関係ないけど、WeakHashMapとかあるのね private void test() { int preSize = 0; for (int i = 0; i < 50000; i++) { Integer var = new Integer(i); gMap.put(new Integer(i), var); var = null; if (preSize >= gMap.size()) { System.out.println("gMap: gc success"); } preSize = gMap.size(); } preSize = 0; for (int i = 0; i < 50000; i++) { Integer var = new Integer(i); gWeakMap.put(new Integer(i), var); var = null; if (preSize >= gWeakMap.size()) { System.out.println("gWeakMap: gc success"); } preSize = gWeakMap.size(); }
null 代入意味無いわけないだろ いい例えが見つからないけど System.props みたいな持ち方してるのとかさ こいつの場合だと読み直させるのに System.initProperties(null); これしかないぜ スコープがなにかわかんない人はばんばんnull入れて行こうぜ null 代入なしは一歩先行く人達の技だ
487 :
デフォルトの名無しさん :2006/01/03(火) 16:51:05
SwingのJFrameにAWT関係のものを使う場合って動作保証外ですか?
489 :
デフォルトの名無しさん :2006/01/03(火) 16:56:22
通常Javaでは /** @version 1.0 */ のようにクラスのバージョンを設定できますが、 クラスにバージョンを設定するメリットって何でしょうか? プログラムのバージョンと同じと考えても良いのでしょうか? また、バージョン管理はどのようにするべきでしょうか? 例えば、Aというプログラムではversion1.0のクラスを Bというプログラムではversion1.1のクラスを使っている場合、 version1.0の方のクラスも上書きせずに残しておくべきでしょうか?
>>455 実際にnullを入れた場合と、
入れていない場合とで
パフォーマンスにどう影響を与えるか、
メモリリークにどう影響を与えるか
テストコードを書いて実行して
比較して結果をレポートしてみるのはどうだろう?
491 :
デフォルトの名無しさん :2006/01/03(火) 18:01:30
>>489 .NETフレームワークとは違って
Javaではバージョンを管理識別する仕組みはないから
単なるコメント以上の意味はないでしょう
運用ルールは好きにすればいい
正直.NETのバージョン管理うざいので何とかなりませんか
492 :
デフォルトの名無しさん :2006/01/03(火) 18:08:19
>>489 > 通常Javaでは
>
> /**
> @version 1.0
> */
>
> のようにクラスのバージョンを設定できますが、
> クラスにバージョンを設定するメリットって何でしょうか?
> プログラムのバージョンと同じと考えても良いのでしょうか?
プログラムの「そのクラスだけ」のバージョンと同じ。
プログラムのバージョンを考慮するのは@sinceのほう。
> また、バージョン管理はどのようにするべきでしょうか?
> 例えば、Aというプログラムではversion1.0のクラスを
> Bというプログラムではversion1.1のクラスを使っている場合、
> version1.0の方のクラスも上書きせずに残しておくべきでしょうか?
バージョン管理システムCVSやSubversionを使えばリポジトリサーバに
差分情報だけを残しておくのも簡単で管理が楽になる。
さらにソースコードに
@version $Id$ と書いておくと、サーバにコミットするたびに
$Id$の部分に自動的にバージョン番号をふってくれるので非常に便利。
CVSよりもSubversionがお勧めだ。
詳しくはこちら
Subversion r4
http://pc8.2ch.net/test/read.cgi/tech/1129642894/
>>486 意味のある null 代入が 意味のない null 代入に紛れるのが問題
スコープがなにか分からない人は勉強しる
ソースは文書であり、読み手が解読に苦労する文書は最低
>>491 何をいっているんだおまいは。
VSSが.NET frameworkの一部だと思ってないか?
495 :
デフォルトの名無しさん :2006/01/03(火) 18:40:52
>>494 VSSの話じゃないよ
アセンブリのバージョン管理の話
496 :
455 :2006/01/03(火) 19:18:49
>>480 残念ながら規約がそうなっているのでどのプロジェクトでも同じです。
>>490 一応そのつもりです。
VMが良くなっているなら、そういうリリースノートがあっても良いとおもうんだが。
これからはnull代入不要になります。みたいな。
CVSでも$Id$の補完ぐらいしてくれるよ。 Subversion廚必死だな。
クラスファイル単位でのバージョン管理って将来的にもサポートの予定 ないんだっけ? JSR-277だとモジュール単位でしか管理できないよね。
499 :
480 :2006/01/03(火) 21:40:38
500 :
480 :2006/01/03(火) 22:15:09
>>486 たとえばサーブレットだとsetAttribute("key", "value")ってやったのを
removeAttribute("key")せず(orにあたるメソッドがなくて)
setAttribute("key", null)してるってこと?
501 :
デフォルトの名無しさん :2006/01/04(水) 04:38:41
502 :
デフォルトの名無しさん :2006/01/04(水) 08:31:55
Javaでファイルのオープンとクローズは、次のようにするのが正しいとかいわれて、 正確にはそうすべきだってのもわかるけど、 IOExceptionが出てしまうときってHDDのアクセスに限っていえば、 たぶんハードウェア的にぶっこわれたとか、どうしようもない事態のほうが多いと思うんだよね。 どうせSyste.exitするしかないわけで、しゃったらリソースの開放とかどうでもいいじゃない。 FileInputStream fis = null; try { fis = new FileInputStream(file); }catch(IOException e) { System.out.println(e); } finally { try { fis.close(); }catch(Exception e) { ; } } だからなにがいいたいのかというと、とてもシビアなプログラム書いてる人には 上記の書き方が必要なのだろうけど、ほとんどのケースは try { FileInputStream fis = new FileInputStream(file); }catch(IOException e) { System.out.println(e); } で充分であって、万に一つの例外のために冗長なコードを書くのはちょっと 馬鹿げてるように思えるんだが、相場的にはどうなんでしょう?
訂正 >どうせSyste.exitするしかないわけで、しゃったらリソースの開放とかどうでもいいじゃない。 どうせSyste.exitするしかないわけで、そのときはリソースの開放とかどうでもいいじゃない。 二つ目のサンプルはclose忘れてた。スマソ。 try { FileInputStream fis = new FileInputStream(file); fis.close();
>>502 の1番目
その書き方ではファイルが見るからないときNullPointerExceptionが発生します。
>>502 きちんとclose処理されていないと不安で夜も眠れません
>>504 それはtryに入る前にfile.exists()で確認してから入れるって事で良いのでは。
>>505 だから二つ目のでも、正常にファイルが指定されていれば、クローズできるのではという問いなんです。
万に一つのケースのために最初の書き方を頑なに守るべきなんでしょうか。
万に一つと思うならそれでいいんじゃないの? 日曜プログラミングならそれで十分
>>507 いや、だからそれを聞いてるんですよ。
万に一つじゃないなら、それはどんな状況なのかしりたいのです。
で、そんな状況を自分の場合想定しなくても良いとわかれば、
安心して日曜プログラミングの書き方でいきたいなと。
>>506 File#exists() の直後に new FileInputStream() しても
同名のファイルが常に存在してる保証はない。
クライアントサイドでアプリケーション一個だけしか立ち上げない、
ファイル操作してるのはユーザーだけとかならそれでも良いだろうけど。
exists と new FileInputStream の並びがアトミックだと保証されてるなら
シングルプロセッサ上では大丈夫だろうけど、そんなもん保証されてなかったと思うし。
>>508 IOExceptionでも必ずしも終了しなくてもいいと思うが。
外付けとか、メモリーカードを抜いちゃったとか。
>>509 サーバーサイドで動くアプリの場合はそうあるべきって感じですか。
複数のユーザもしくはスレッドが次々と対象となっているファイルを
削除したり書き換えてるような状況であれば最初の書き方が必要なのは理解できます。
今私はクライアントサイドでアプリケーション一個だけしか立ち上げない、
ファイル操作してるのはユーザーだけというようなものを書いてるので、
日曜プログラマ的な書き方で良さそうですね。
512 :
507 :2006/01/04(水) 10:28:10
ぶっちゃけgcされるときにcloseすることがfinalizeで保証されているから いらないといえばいらないかも
ファイルが使用中でIOExceptionの可能性もあるわけで。 exitしないでリトライくらいはしてくださいね。
>>510 外付けドライブの場合は、それは当然ですね。
でもHDD上ならまず考慮しなくて良いのでは。
先のマルチユーザ、マルチスレッドの例をのぞけば。
>>513 使用中だからといって、1msもあけずにリトライしたところで
普通はまずbusyでしょ。じゃあn分ごとにリトライ?
他のアプリが掴んで離さない場合はいくら待ってもしかたがないし。
そんな諸々の状況までめんどうみてたらきりがないじゃないですか。
もちろん求められる要件次第ですが。
>>515 そんなの言われなくてもわかってますよ。
どんな書き方しようが自由ですもん。
でもそういう話をしてるんじゃないのはわかるでしょ。
>>512 それはいいこと聞きました。ありがとう。
調べてみます。
>>517 人の意見を否定する人とは話したくないんでね
「求められる要件次第」
>>519 そのおまえにおまえの意見ってどれとどれだよ。いってみな。
>>519 訂正
>そのおまえにおまえの意見ってどれとどれだよ。いってみな。
そのまえにおまえの意見ってどれとどれだよ。いってみな。
スルーしろよ 今は冬休みだぞ?
>>523 たぶん、冬休みだから暇な人が遊んでんだと思う
525 :
507 :2006/01/04(水) 11:23:09
なんで
>>502 のような阿呆を相手するのかわからん
他人の意見に対しては
あたかもそれを既に想定していたかのような返しをしている
だが,自分がどのような場合に一番目の書き方をしなければならないかは
全くか書かず,他人のレスに便乗しているだけ
私は万にひとつの例外を拾って何らかの処理をさせたいとあとになって思うかも 知れないので、分かる範囲でならパフォーマンスに大きく影響しない限り冗長に書く。 メンテしないと確定している、その場限りの作業なら何も気にしない。
528 :
507 :2006/01/04(水) 12:33:18
>>526 んー、
>>502 がきっかけで自分も気になったからね
でlog4jみたら実際エラー時に明示的にcloseしてなさそうだし
冗長なロジックは自分も嫌いだからね、ビジネスロジック集中したいじゃん
>>502 はgcとかfinalizeも分かってなくてこれから調べますって言ってるし
本当は基礎は一通り抑えてよ、とは思うけど 全く疑問を持たないよりは好きだよ
>>526 HDDのアクセスに限っていえばって書いてある。よく読めよ馬鹿。
>>527 その万に一つを拾いたがるのがプログラマーの愚かな性質なんだよ。
よく指摘されるけど。どれだけそれで時間を無駄にしてることが多いか。
> メンテしないと確定している、その場限りの作業なら何も気にしない。 そーゆー場合は try も catch もせずにメソッドに throws IOException つけるかも。
人間がトラブルすべてを予測できたら東証のようなことは起きないよね?
ニューヨーク証券取引所は東証よりレスポンスよくて、 東証みたいに半日止まったりしないって記事見掛けたけどホントかね? もし、そうなら日本は悲しい限りだな
535 :
デフォルトの名無しさん :2006/01/04(水) 13:07:42
Javaの最新版をDLしようとしたら、インストール先のディレクトがロックされてる っとかでるんだけど、どういうことなの?
>>530 それはプログラマー自体のパフォーマンスを落としてるから、そういうときは書かない。
そもそも日曜プログラミングなら時間の無駄なんて関係ない。
仕事なら仕様にないものを実装するときは先に打ち合わせするものだと思う...
>>531 なるほど
>>530 お前みたいなのが東証ダウンさせちゃうんだろうな
>>537 無批判に定型ロジックいれる方が危ないぞ
もちろん、理解もせずテストもせず勝手に省くやつは論外だが
539 :
デフォルトの名無しさん :2006/01/04(水) 13:17:10
>>497 CVS厨必死だなといいたいところだが百済なすぎ。
Subversionのほうが高機能でファイル/ディレクトリ名の変更、移動
があってもバージョンと差分情報を保持できる利点がある。
SubversionはApacheのいくつかのプロジェクトですでに使われている。
CVSはSourceForgeやEclipseなどで過去の遺産が残っているために
そう簡単に移行できないから仕方が無く使われている程度
>>536 なにがおきるかわからないからとにかく極力安全な書き方以外はしないっていいたいのかな
541 :
デフォルトの名無しさん :2006/01/04(水) 13:27:52
>>519 >
>>517 > 人の意見を否定する人とは話したくないんでね
> 「求められる要件次第」
ちょっとまて、肯定しかしない人間としか話をしたくないのか?
だれかがお前のことを死刑にするといったとする。
そこである慈悲深い者がお前を助けるために
お前が死刑になるという意見を否定したとする。
だがお前は人の意見を否定する人間とは話したくない
といってそれを拒否した。
まもなくお前は処刑された!!!!!!
それでもいいのか貴様!!!!
いいのか? 殺されてもいいのか!!!!!?
>>519 は聖徳太子時代の性善説を未だに信じている
綺麗事しかいえない反アメリカ主義の左翼系儒教信者
いよいよくだらない精神論に発展してきたな。
>>502 日曜プログラムという話は最初出てきてないのでただの釣り
人様に公開するならそれなりのことはしておいてほしいな
nullセットにしても釣りが多すぎ
冬休みだから論点がずれやすいみたいね。w まあいいけど。
546 :
デフォルトの名無しさん :2006/01/04(水) 13:36:51
>>534 > ニューヨーク証券取引所は東証よりレスポンスよくて、
> 東証みたいに半日止まったりしないって記事見掛けたけどホントかね?
> もし、そうなら日本は悲しい限りだな
速さに拘り過ぎた結果もたらした悲劇だな。
旧日本軍の戦闘機みたいだ。軽くて性能はいいが日本軍の無計画さ
が太平洋戦争で露わになった。
その無計画さは未だに日本人に根強くのこっている。
物質よりも精神を重視すると称してあまりにも無計画であることが
日本のこのIT業界の蕭然さを表している。
最後の最後も精神論を持ち出して特攻隊で多くの人を死に追いやった。
刀や竹槍だけで勝てるなどと過信して多くの人々が犠牲になった。
547 :
デフォルトの名無しさん :2006/01/04(水) 13:37:52
548 :
デフォルトの名無しさん :2006/01/04(水) 13:38:16
それじゃただのイエスマン
549 :
デフォルトの名無しさん :2006/01/04(水) 13:39:19
>>519 ==イエスマン
は否定的な意見をいうことで新たな発見に
つながるということが理解できないのかな?
否定的な意見はすべて徹底的に排除するとは
一体何事やら
550 :
デフォルトの名無しさん :2006/01/04(水) 13:40:36
肯定しかいわない奴は詐欺師や悪徳セールスマンに多い。 罠にはまる可能性があってアブナイから気をつけよ。 フィッシング詐欺の手口でも最近よくみかける。
551 :
デフォルトの名無しさん :2006/01/04(水) 13:41:37
現実解は 否定的な意見をいいつつ肯定的な意見も同時にいうことだ。 否定しか言わない、肯定しか言わないのはどちらも建設的ではないし 技術革新は一切起こらない。
552 :
デフォルトの名無しさん :2006/01/04(水) 13:42:38
科学技術の進歩は、なにかに疑いを持つことから始まる よって否定を否定することは(ry
おまいら、いーかげんにしてくだちい。 ここ、質問スレなのよ(´・ω・`)
554 :
507 :2006/01/04(水) 15:12:28
javaの話書き込んでいいのか分かりませんが log4jはあまりIOExceptionは考えてないみたいなので参考にならないぽい ということでberkeley db java edition見てます
DBならかなり厳重にやってそうやね
556 :
507 :2006/01/04(水) 15:59:30
>>555 やはり違いますね オープンに失敗したらcatchしてcloseしてる
ただ、トランザクションのコミットとかの場合はユーザまで例外が飛んで
ユーザがcatchしてcloseしないといけないみたい(finalizeは使ってないみたい
そういえばDBだと明示的にcloseしますね プールの解放にも関係したりするので
結局、要件しだいと
557 :
デフォルトの名無しさん :2006/01/04(水) 16:00:50
java.awt.geom.AffineTransformクラスで 画像を台形に変形できますか?
Javaのコーディングは教科書通りにくそまじめに書いてたら 冗長で読みにくいもっさりしたソースになる。リソースも無駄に消費する。 いかに安全に手抜きするかが勝負。
559 :
507 :2006/01/04(水) 16:06:26
>>558 大規模なシステムだといかにカプセル化して
何度も同じロジックかかなくていいようにするかが大事だね
Integer intobj = 0; と Integer intobj = null; って同じ意味ですか?
>>560 java勉強するのに使った本、サイトって何ですか?
562 :
sage :2006/01/04(水) 16:26:59
>>560 コンパイルエラー
と
intobjにnullが入る
nullが入るって変か?
質問です。 Javaからシリアル通信をしたいと考えています。 色々調べているうちにJava Communication APIというものがあるのを 知ったのですが本家SunにはWinのバージョンがありませんでした。 どこにもログ落ちてなさそうですし。 どうすればいいのでしょうか??
>>562 javac1.5からはエラーじゃないんだな。
>>564 マジで?!
場っばばっ場っ場バージョンアプーしないと!
ArrayListもなんか使いやすくなったらしいし
>>564 まじよ。わたしゃめんどくさがりーだからこういう手抜きできるのは好き。
567 :
560 :2006/01/04(水) 16:50:28
結局>560はどっちも同じ意味ですか?
さらにこれもありだw Integer intobj = 0; intobj = intobj + 120;
>>564 たとえばそれって
Integer i=0xff;
Integer e=023;
とかやっても意図する動きするの?
だったらかなり便利だな
>>567 うんとねー
System.out.println(intobj);
して自分で確認するといいよ。
>>569 するけど、やっぱこれはダメかってケースもあった。
それがなんだったか今すぐは思い出せんけど。
おーとぼくしんぐ? あっ! パンチングマッすィーンか!
574 :
デフォルトの名無しさん :2006/01/04(水) 17:02:26
>>556 Jakarta Commons DBUitlsを使え
575 :
デフォルトの名無しさん :2006/01/04(水) 17:05:53
Integer i=0xff; System.out.println(i == 0xff); trueだってさ、いいねこれ
AutoBoxingなんて5.0の目玉機能の一つだろ? 5.0なんてだいぶ前に出てるのに今ごろ何言ってんだ?
今日、釣りに行った 竿を置いたまま昼寝してたら たくさん掛かってた
582 :
デフォルトの名無しさん :2006/01/04(水) 22:00:28
PrintStreamを使って PrintStream ps = new PrintStream(new FileOutputStream(filename), true); for(int i=0; i<NUM ; i++){ ps.print(hairetu[i]); ps.rint('\n'); } のようにファイルに出力したあとに そのファイルの"行頭"に、また別の要素をprintしたいんですが psの行頭に書き込む方法はなにかないでしょうか? (全部読み込んでから書き込むと時間がかかるような処理のため)
そういうのはRandomAccessFileの仕事
584 :
デフォルトの名無しさん :2006/01/04(水) 22:52:11
>>583 なにいってんの?w
>>582 新しいファイルつくって新しい要素書き込む
そのあと追記で元のファイルの内容を書き込んで
ファイル名変えればいい
>>582 1. bufferにため込んではく
2. RandomAccessFile(後から書き込むバイト数が分からない場合は移動も必要)
メモリ次第でどちらかかな
586 :
デフォルトの名無しさん :2006/01/04(水) 22:57:12
>>584 はRandoAccessFileの使い方が分からないと判明
587 :
585 :2006/01/04(水) 22:57:14
お?ごめん、読み込んでから書き込むの意味が分かってなかったぽ
そんな理由でRandomAccessFileつかうの効率悪い 通常は原始的な方法しかない 新しいファイルに書くしかないというか、それが普通の考え
589 :
585 :2006/01/04(水) 22:59:12
行頭って言ってるけど一行だけ?
同感。 つーか俺は理由は違うけどな。 RandomAccessなんかやってる最中例外起きたらどないすんだろ?こいつら。 トランザクション設計できない時点で糞だなぁ。 ファイルは元に戻すことは出来ないんだよ?w
ファイル名変更なんてやってるから例外起きるんだろ
592 :
デフォルトの名無しさん :2006/01/04(水) 23:06:16
っていうかファイルの先頭に行を追加するような 仕様を考えたヤシが一番イタイ
593 :
585 :2006/01/04(水) 23:12:49
結局、ファイルの先頭なのか各行頭なのかも分からんし
594 :
582 :2006/01/04(水) 23:17:05
みなさん、レスありがとうございます 分かりにくくてすみません、 ファイルの1行目だけに要素をひとつ追加したいってことです
1行だろうと複数行だろうと変らないよ 原始的な方法をやるしかない
596 :
582 :2006/01/04(水) 23:21:48
ps.close() をしてから、出来たファイル(out.txt)をもう一度読み込み 1行目に追加したい要素をprint 2行目以降はout.txtを読み込んでprint って原始的な方向で書いてみようと思います。ありがとうございました
全部読み込むと時間がかかるっていうのにまた読み込むんだな 少しずつなら速いのか?
あーあ、ブタに真珠なげてもわからないからもとの方法におちつくとw
25過ぎの頭の弱いPGが集まるスレはここですか?
大卒で26以上のPGは終わってると思うが それはまた別のスレでやれ
高卒のほうがすごいということですか
ブタにもわかるように頭の強いPGの方説明してください
>>601 40代でJudeを作った香具師が終わっているとでも?
彼は凄いぞ。
25過ぎたら終わってるという根拠を示してくれ by 26歳
過酷な環境に気が狂って 何度も柱にぶつけても壊れない頭を持っているPG
606 :
デフォルトの名無しさん :2006/01/05(木) 07:38:28
>>604 それは特殊な例
貴方には当てはまらないから
それにPGがというよりまともな設計が
できるんでしょ、その40代の人
そんなことも気付けない貴方は
やっぱり…
PGは設計できないの?
PG、SEとか、型通りの区分けしかできない会社で働いてるんじゃない?
>>608 型どおりでない区分けで成功してるって事例を教えてください
今後の参考にしたいので。
610 :
デフォルトの名無しさん :2006/01/05(木) 11:03:19
いきなり質問すいません。 Javaのアプレットでテキストフィールドに入力した文字列を変数に入れる時は getText()でできますが、JPanelではgetText()でできませんでした。 初心者なんで質問の仕方がおかしかったらすいません。 理由が分かる方がいましたら教えてください。
JPanelのどこにテキストを入力したんだ???
26でPGって信じられない 4年もPGしてたらSEやアーキテクトへ進むのが普通だと思っていた 世の中自分の周りだけ見てたら気付かない事もあるんだと気付いた2006年新春
井の中の蛙大海を知らず
4年以内のPGだけが組んだシステムは使いたくないな それで動くのか?よっぽどアーキテクトが素晴しいだろうなw
616 :
デフォルトの名無しさん :2006/01/05(木) 11:34:29
>>615 使っていなかったので使ってみましたがだめでした。
>>616 アプレットはAWTでやったけど、今Swing勉強してるだよね?
ちなみに変数を*入れる*のはsetText(String)だけ、そんな落ち?
619 :
デフォルトの名無しさん :2006/01/05(木) 12:00:03
>>611 ,615,617,618
できました。ありがとうございました。
>>609 研究部門があるところは、そんな区分けないところの方が多いんじゃない?
例えば、携帯電話関連の新機能開発とか。
B向けでも、ハード&ソフトやってる小規模の会社は分けてないと思う。
コード書かなくなって久しいヤツの設計はクソ
うちんところは全部ソフトウェア開発者だな
Javaの質問かどうか分からないのですが、 MVCできちんと書こうとした時、処理の途中でユーザーへ問い合わせしたい事態が発生した場合、 皆さんはどのように処理していらっしゃいますか?
んじゃ仕様書く人とコーディングする人ごちゃまぜってこと?
>>606 なんだ
PG=設計ができないという勝手な決めつけで
25過ぎたら終わってるという根拠を持ち出しているわけだね。
アメリカじゃPGはSEやアーキテクトややってることも
すべてできるとされている。だからアメリカのプログラマは地位が高い。
そして日本のソフトウェアの品質は非常に低い。
プログラマの地位が低ければソフトウェアの品質も悪くなるのは当たり前。
それに気づかないワンマン馬鹿経営者や顧客は多いが。
ところで、みなさんリファクタリングってやってます? お金もらってやってますか? 新規の機能追加のついでに工数当ててます? 共通に手を入れたくなったらどうします?今動いてるやつのテストとかすべてやりますか? というか、このスレの話題じゃない気もしますが、流れにのって質問
いきなり済みません。 質問なのですが、 Javaだとデフォルト引数使えないんですか? ↓の様にやったら「")"がありません」、「";"がありません」とエラー。 public int getMDays(int year = this.c_year,int month = this.c_month){ : : } デフォルト値を定数にしてみても同じエラーでした。 jdk1.5.0_05です。
>>629 > Javaだとデフォルト引数使えないんですか?
使えない。
public int getMDays(){ getMDays(this.c_year, this.c_month); }
public int getMDays(int year, int month){
//処理
}
とかすれば良いのでは?
>>629 そんな記述はじめてみたよ。無理なはず。
しかも可読性悪いな・・・。
>>630 引数なしの方、return 抜けてんじゃね?
こうだな public int getMDays(){ return getMDays(this.c_year, this.c_month); }
c_yearみたいな命名は嫌だ、それだけで保守する気がうせる
どういう命名がいいのよ?
>>628 例えば、UI側からデータクラス側のファイル保存メソッドを呼んだとするじゃないですか。
で、書き込もうとしたら既にそのファイルが存在していた、と。
普通のプログラムは、書き込む前にユーザーに問い合わせますよね。
まぁ、この場合は事前に調べる関数を呼べば良いのかもしれませんが、
その手が使えないケースではみなさんどうしているのかな、と。
何か大きな勘違いをしている気もしますが・・・(^^;
cYearってことでは?
コーディング規約に従えばいいんじゃないかな?
>>637 ユーザに問い合わせるのは上書きするかってこと?
画面増やすか、もとの画面にメッセージを表示するべきかを聞きたいのかな
自分はMVCと関係あるのかも分かんないやw
WebProg板で聞いてみたら?
641 :
629 :2006/01/05(木) 16:23:29
ありがとうございます。 やはり使えないですか・・・。 教えて頂いたように、分けて記述する事にします。
>>640 例えば、
actionPerformed(ActionEvent e){
data.store();
}
...
public void store(){
File f = new File("hogehoge.dat");
if(!f.exists()){
FileOutputStream out = new FileOutputStream(f);
out.write(param);
}
else{
...
}
}
というコードがある時に、存在したら上書きするか聞きたいわけですが、当然elseの部分にはUIロジックを書きたくない。
けど、そうするには処理を中途で放り出したままreturnしてUIロジックに戻らなきゃいけないことになるので、
どうしたらきれいに書けるんだろう、と。
643 :
デフォルトの名無しさん :2006/01/05(木) 16:48:14
PG否定されると必死になる奴いるけど PGって肩書きが良いの? アメリカ云々も良いけどそんなに肩書きにこだわる理由が判らない
PG否定してるやつの視野がせまいからつっこまれてるんでは? システム開発にはPGとSEしかいないような言い方だし
>>642 store()の中でelseのときには例外をthrowするんじゃだめなの?
ActionPerformedで例外をcatchしたら処理をUIに戻すという方法。
>>645 外でcatchしても、store()に復帰できましたっけ?
この辺が思い違いなのかな。
復帰にこだわってるけど、ユーザに聞くなら storeはキャンセルしてactionPerformedを終了して、 ユーザからの結果に応じてまた処理を実行するしかないような
やはりそれしかないですかね・・・。 これに限らず、「ModelとViewを分ける」というのは理屈はいいんですけど、 ユーザーの反応を見なきゃいけない時にどうすれば良いのか分からないんですよ。 たとえば、今のを何個についてもループさせなければいけない時とか。 適宜処理段階ごとにメソッドを分けるしかないのかな・・・。
649 :
デフォルトの名無しさん :2006/01/05(木) 18:58:48
>>648 ModelとViewを行ったり来たりするだけじゃないのか?
基本的にはすべての画面で確認があり、条件が整っている時は確認は端折るイメージとか
>>636 c_year
駄目すぎ。
↓
cYear
まあいまあだがもっとわかりやすく
↓
currentYear
わかりやすいがmonthまでもcurrentMonthに
するくらいだったらメソッド名をわかりやすい名前に変えて
↓
year
だけでいんじゃねえのか
>>643 プログラミング経験の乏しいウザイ営業やSEがプログラマのことを見下しているから
ムカっとくるんじゃないか?
SEはプログラミングしなくてもいいといってるやつもウザイ香具師に見えるし。
プログラミング経験がないSEは論外
ずっとCをやってきて最近Javaをやることになって頭が混乱してる者です。 関数呼出のときにCでいうポインタ渡しってどうやるのでしょうか? int val1, *val2, val3[10]; val2 = (int *)malloc(...); foo1(&val1); foo2(val2); foo3(val3); みたいなのはJavaではそれぞれどういうふうに書くのでしょう? あまりにもアホな質問なのかもしれませんが、よろしくお願いします。
WindowsXPsp2を使用しているものです。 異なるバージョンのDevelopmentKitを共存させる方法はないでしょうか? ご存知の方、お教えください。
public class Test { public static void main(String[] args) { StringBuffer s = new StringBuffer(); test(s); Ssytem.out.println(s); } static void test(StringBuffer sb) { sb.append("⊂二二二( ^ω^)二⊃"); sb = new StringBuffer(); sb.append("test"); } }
655 :
デフォルトの名無しさん :2006/01/05(木) 23:23:21
すみませんが教えて下さい。 サーブレットってマルチスレッドで動作しますよね。 皆さんはStrutsなどを使用してアクションクラス作成する時に 同期処理ってどのように意識しますか? やたらめったらsynchronized使うわけではないですよね? どのように順序処理の整合性を保っていますか? 質問が大雑把ですみませんが、何か指針のようなものを 示していただけると助かります。 また、上述の事柄について解説してある書籍またはサイトを 紹介していただけると助かります。
>>655 メンドクサイからEJB作ってそっちで同期
657 :
デフォルトの名無しさん :2006/01/05(木) 23:28:25
>>655 Actionクラスのフィールドを使わない
以上
>>655 Actionにビジネスロジックを実装しなければいい
659 :
デフォルトの名無しさん :2006/01/05(木) 23:45:53
>>652 int val1;
Integer val2;
int[] val3;
val2 = (Integer) malloc(...);
foo1(Integer.valueOf(val1));
foo2(val2);
foo3(val3);
660 :
デフォルトの名無しさん :2006/01/05(木) 23:47:25
>>652 int val1;
Integer val2;
int[] val3 = new int[10];
val2 = malloc(...);
foo1(Integer.valueOf(val1));
foo2(val2);
foo3(val3);
>>653 普通にインストールすると別にセットアップされるだろ
JREも同じ
あくまでもデフォルトがパス設定やレジストリ設定されてるだけ
>>649 遅レスですが、そう考えた方が良いのかもしれませんね。
ありがとうございました。
665 :
デフォルトの名無しさん :2006/01/06(金) 00:39:47
655です。 皆さんありがとうございました。 また質問なのですがよろしくお願いします。 アクションクラスの内部から、ビジネスロジックを記述したbeanのインスタンスを 生成した場合、そのbeanインスタンス内部では同期処理を考えなくても 良いのでしょうか? n個のリクエストがほぼ同時にあるアクションクラスに到達した場合に、 そのアクションクラスの内部でbeanインスタンスを生成すると、 メモリ上にはn個のbeanインスタンスが別々に生成されると考えれば 良いのでしょうか? ご指導お願いします。
ループ設定を1回にしたGIFアニメがあるんですが それをJavaプログラム上で表示させると無限ループになってしまいます どうすればよいでしょうか?
>>665 アクションクラスのメソッドの中でBeans(sが必要)のインスタンスを作成する
668 :
デフォルトの名無しさん :2006/01/06(金) 01:08:01
655です。
はい。
>>667 さんの言うとおりです。私の書き方が間違ってました。
669 :
653 :2006/01/06(金) 01:22:58
>>663 どうもありがとうございました。
最近、ようやくOSを98からXPにしたばかりなので、コマンドプロンプトの使い方が
よくわからなかったのです。
調べてみます。
重ねて御礼申し上げます。
670 :
デフォルトの名無しさん :2006/01/06(金) 01:23:58
>>665 はい。メソッド内ならそうなります。
>>666 いえ。無限ループになる訳はありません。なにかの間違いです。
すいません、ふと疑問に思ったことがあるのですが、 StringBufferのappendは、なぜStringBufferを返すのでしょうか? StringBuffer sb = new StringBuffer(); sb.append("A"); //これで値が変わるのに sb = sb.append("A"); //こうした代入ができるようになっている
>>671 StringBuffer sb = new StringBuffer();
sb.append("こんな")
.append("使い方も")
.append("できるから")
.append("じゃないでしょうか");
673 :
java :2006/01/06(金) 02:20:33
すみません、聞きたいことがあります。 MouseEventでjavaアプレットを起動しているのですが そのアプレット内にあるActionEventが実行されません。 何が原因なのでしょうか? ActionEventのみで作ったプログラムは動きます。 よろしくおねがいします。
674 :
デフォルトの名無しさん :2006/01/06(金) 02:30:31
>>673 JavaではEventはイベントキューに入れられて、一つずつ順番に実行されます。
MouseEventによって呼び出されたメソッド内で、他のEventを発生させても
それはイベントキューに入れられたままで、MouseEventのメソッドが終了するまで
実行される事はないのです。
>>672 なるほど。言われてみれば、そんな使い方を便利だなぁと感じたこともありました。
ありがとうございます。お陰で今日はよく眠れそうです。
676 :
java :2006/01/06(金) 09:41:09
>>674 ありがとうございます。
では、具体的にどうすればよいのでしょうか?
MouseEventとActionEventを交互に実行するのは
そもそもできない作業なのでしょうか?
大規模なソフトウェアは事前に設計を入念に行わないと作れないとかいわれますが どれくらいの規模からが大規模なんでしょう? クラスにして何クラスとか、総ステップ数何行くらいからとか、、、
678 :
デフォルトの名無しさん :2006/01/06(金) 11:59:17
>>677 入念な設計をしないで破綻する様になったら大規模
と言うよりも
基本的には時間・予算という限られたリソースの中でどれだけ手を抜く事が出来るのかという考え方に立たないとダメ
679 :
デフォルトの名無しさん :2006/01/06(金) 12:02:47
MouseEventからActionEventを実行する場合、どのようにしてMouseEventメソッドを終了したらいいのですか?
680 :
デフォルトの名無しさん :2006/01/06(金) 12:20:46
>>679 イベントメソッドからイベントメソッドを呼ぶべきじゃないな
683 :
デフォルトの名無しさん :2006/01/06(金) 12:44:36
>>679 public void mouseClicked (MouseEvent e) {
new Thread() {
public void run () {
ActionEvent を呼ぶ処理
}
}.start();
}
こんな風にアクションイベントを呼ぶ処理を別スレッドでするのが
一つの方法です
685 :
初心者 :2006/01/06(金) 14:39:18
すみません。 ActionEventでウインドウを破棄するためSystem.exit(0)を使っているのですが、 うまくいきません。 他に方法はないのでしょうか?
686 :
デフォルトの名無しさん :2006/01/06(金) 15:03:48
JTableのセルにJButtonなんかのコンポーネントを使った場合、イベントはどこで取得すればいいんでしょうか?
>>685 どううまく行かないの?
dispose() はどう?
688 :
デフォルトの名無しさん :2006/01/06(金) 15:20:22
689 :
686 :2006/01/06(金) 15:23:18
>>688 CellRendererで返してるJButtonは描画のためだけに使われてるみたいで
イベントが飛んでこないんですよ
>>686 JTableのレンダラとしてJButtonを使った場合と仮定すると、
その場合イベントを受け取るのはあくまでJTable。
レンダラは描画のみで、イベントの送信先にならないことに注意。
JTableのイベントでクリックされた座標を取得して、
それがJButtonを描画した列ならなにがしの処理、とする。
691 :
686 :2006/01/06(金) 15:31:42
692 :
デフォルトの名無しさん :2006/01/06(金) 16:16:26
>>686 JTableにセットするTableCellEditor実装クラスを作成して、
それにJButtonを所持させます。
TableCellEditor#getTableCellEditorComponentメソッドの返値は
そのJButtonにします。
そのJButtonに任意のActionListenerをアタッチする事により
ボタン押下のイベントをJButtonで受け取れます。
文字列を整数に変換しようとしたらNumberFormatExceptionと起こられたのですが どういう文字や文字列が変換できないのでしょうか? 下のようなソースで実行しました。 String str="LAPL:ADFURAL:http" String stuck = String.valueOf(str.charAt(0)); int param = Integer.parseInt(stuck); System.out.println(param); これだと大文字のLが変換できて無いようなのですがorz
// 693 は何か強烈な勘違いをしている気がする int num = Integer.parseInt( "1234" ); // 693 が望んでいることはこっちかと int num = "LAPL".charAt(0);
>694 自分アホ過ぎた・・・・・・orz レスありがとうございます、無事解決しました。
>>660 ありがとうございます。
つまりオブジェクト(この用語でいいのかわかりませんが)で渡せば必ずCで言うポインタ渡しになるということでしょうか?
intのような基本のデータ型のポインタを渡すことはできないということでしょうか?
また、オブジェクトをポインタ渡しで渡したくない場合はどうするのでしょう?
Java(というかオブジェクト指向?)がよくわかっていないため、的はずれな質問かもしれませんが
よろしくお願いします。
>>696 > intのような基本のデータ型のポインタを渡すことはできないということでしょうか?
出来ないが、int なら Integer, float なら Float のように対応するラッパークラスが用意されてる
> また、オブジェクトをポインタ渡しで渡したくない場合はどうするのでしょう?
出来ない
新しい言語を学んでるんだし ポインタって言葉は忘れたほうが良いよ 混乱を招く元
まあ、ポインタはあらゆるプログラミングデータの根幹を為すものだから 忘れる訳にはいかんだろ。 アセンブラを知らない若い衆ほど、C言語でポインタを正確に理解しておらず 軽んずる傾向が強いのは嘆かわしい限り
なら速攻デスマに投入させないで勉強する時間をくださいよ
>>699 ポインタという概念自体は軽んじてないように見えるけどなー。
Javaの場合、ポインタの概念を含めて考えると混乱する部分が多いので
頭の中で変な置き換えをしないためにも、Java⇔Cみたいな考え方を
しないほうがいいよっていう忠告だと思った。
あとアセンブラを知ってるとポインタ理解の助けとなることは同意だけど
知らないから理解できないというのはどうかなぁ。軽んじているのじゃなくて
無理解から負け惜しみを言っただけかも知れないし。
ポインタについては「難しい」という漠然とした風潮があることにも原因があると思う。
実際普通に勉強していけば理解できるはず。入門書なんかでも、そこだけ
気合入れすぎてかえって難しくなってる気がするよ...スレ違いごめんなさい。
自分もJavaはクラスとインスタンス、参照だけ意識した方がシンプルだと思う プリミティブ型の位置づけが微妙だけど
そういや、CのポインタとC++のポインタ、 若干違うんだよね C++のほうが扱いやすくてわかりやすいけど
>>702 その微妙な問題があるために
ラッパークラスやObject#clone()が用意されているわけだが
|これをいちいちポインタという、C/C++の概念で説明する必要はない ↓(ポインタという概念が無意味という意味ではない) 変数はオブジェクトを参照するためのもの(参照しているもの) 変数をメソッドの引数としたときは、メソッドに渡されるのは変数そのものではなく 変数が参照しているオブジェクトが渡される ⇒foo(bar)→barが参照しているオブジェクトが渡されるのであって、barに関する情報が渡されるのではない メソッド内で、引数に渡されたオブジェクトの状態を変えると呼び出し元に影響を与える ⇒呼び出しもとと同じオブジェクトを対象としているのだから当然 bar := hoge new. foo(bar). --- foo(Object boo) { boo.method(); } メソッド内で、引数の変数が参照するオブジェクトを変えても呼び出し元へは影響しない ⇒引数と渡しているのはあくまで変数が参照するオブジェクトであって、変数の情報ではない bar := hoge new. foo(bar). --- foo(Object boo) { boo := nil. }
非オブジェクト言語の作法で理解するのが無理が有る。 ポインタは忘れた方がいいよ。 Javaに限らず新しい言語を覚える時は新鮮な気持ちで学習した方が効率がいいよ。 あとで振り返って、言語間の扱いかたの差異を気にする程度で十分。 日本語に直して英語を覚えても、日本語風英語になってしまうのがいい例。ネイティブ英語を身につけたければ日本語文法は忘れたほうがいい。 PGにも姉歯みたいに手抜き設計する香具師が居るんだね。 法整備進めて、アフォな設計するPGに責任取らせないと良くならないかな。
javaからhtmlに直接繋ぐ方法がわかりません。 javaでwindowを作って、そこにリンクのような形でhtmlに繋げる方法ってのは ありますか?
Javaでウインドウ作るメリットって何? はじめのウインドウもIEなどのブラウザじゃだめなの?
>>708 Cのポインタは、ただデータのアドレスを示す抽象的な値だけど
C++のポインタは、それをReferenceとして抜き出せる具体的な値で
だから型チェックができるじゃない
712 :
デフォルトの名無しさん :2006/01/07(土) 14:11:41
713 :
709 :2006/01/07(土) 14:15:25
>>710 javaから繋げることができれば、最初のウィンドウはIEでも全然問題ないです。
javaでGUIを作っていて、そのGUIのヘルプメニューみたいなものから直接htmlに繋げたかったんです。
>>709 JEditorPaneあたりを使うのが一般的なんだろうがJLabelでも簡易表示は可能だ。
SWTのBrowserみたいにネイティブのブラウザをラップしたものもあるので
そのあたりを使うのも可能。
715 :
709 :2006/01/07(土) 14:33:38
>>710 ありがとうございます。JEditorPaneってのを使ってやってみようと思います。
716 :
デフォルトの名無しさん :2006/01/07(土) 14:43:40
717 :
デフォルトの名無しさん :2006/01/07(土) 16:21:32
string型のIPアドレス(IPv4,IPv6両者)をbyte[]に変換するようなメソッドはないのでしょうか? 少し探してみたのですが、なくて困っています・・・ もしくは、string型のIPアドレスからInetAddressクラスを生成する方法でもかまいません。 どなたか、ご教授ください よろしくお願いします
自分で作れば?
InetAddress.getByName() はダメなん?
>>721 できました!!
ありがとうございました。
getByName(String)に直接IPアドレスを与えるとは全く思いつきませんでした
本当に助かりました。
ありがとうございました
723 :
デフォルトの名無しさん :2006/01/07(土) 19:13:27
724 :
デフォルトの名無しさん :2006/01/07(土) 20:24:46
>>724 結局「初心者」って言葉が免罪符だと思ってる奴ばっかってことだよ
SwingのLayoutで、BorderLayout内にFlowLayoutを並べたい場合はどうすればよいですか?
BorderLayoutのJFrameに FlowLayoutで配置したJPanelをAddする
>>723 硫黄酸化物? とか思った俺はロートル。
729 :
デフォルトの名無しさん :2006/01/07(土) 22:49:41
>>697 ありがとうございます。よくわかりました。
intとintの配列とクラスのインスタンスと・・・とごっちゃになってました。
少し頭の中が整理できました。
>>698 ,701-706
ご忠告ありがとうございます。ずっとCだったのでとても苦労してます。
731 :
デフォルトの名無しさん :2006/01/08(日) 09:51:19
お願いします; javaでmp3ファイルを読み込むのはどんなクラスを使ったらいいでしょうか? mp3以外の音声ファイルでもいいです; 読み込んだものを表示してみたいと思いました。
732 :
デフォルトの名無しさん :2006/01/08(日) 10:11:13
(
>>563 氏も同様の質問をされていますが)
現状ではWindowsでJava Communication APIを使う方法はないのでしょうか?
sunのサイトではダウンロードできないみたいなんですが…
よろしくお願いします
>>732 そういったNativeな機能はあまり期待しない方がいいよ
そういったことがやりたければC++をやりなさい
仕事で使う場合はイーサシリアル変換機つかったほうが楽だな
HTMLを読み込んでJAVAでしっかり表示してボタンとかも押したらちゃんさせたいんです、どうしたらいいでしょうか
>>737 java製のブラウザならjdkのサンプルかなんかにあった気がする
>ボタンとかも押したらちゃんさせたい
フォームのサブミットボタンでポスト送信していってこと?
まずは基本的な用語を覚えてないと人に丸投げすることもできないぞ
http とか htmlとか勉強しる
s/していって/したいって/ 俺はキータイプの勉強だな orz
>>737 楽にやりたいなら JDIC の browser コンポーネント使えば?
741 :
732 :2006/01/08(日) 22:34:20
ご返答ありがとうございます。
>>734 既にjavaで開発しているソフトがあって、それをシリアルの機材に対応させたいんです…。
実際の通信の部分は外部のCプログラムを呼び出すというのも検討してみます。
>>735 そんなものがあるとは知りませんでした。
それを使えばマックでもいける可能性があるわけですね!
>>741 わりとFA用途でつかわれてるよ
ソケット通信すればそれがシリアルになる
フロー制御はあらかじめ設定するだけ
TCPIPが使えればいいだけなのでMacでもWinでもなんでもOK
743 :
デフォルトの名無しさん :2006/01/08(日) 23:22:50
javaのバージョンが違う場合、 エラーがあったときの表示のされ方は異なるんですか?
744 :
デフォルトの名無しさん :2006/01/08(日) 23:30:50
public class test { public static void main(String[] args) { String str1 = new String("あああ"); String str2 = new String("あああ"); String str3 = "あああ"; String str4 = "あああ"; System.out.println( (str1 == str2) ? "同じ" : "違う" ); System.out.println( (str3 == str4) ? "同じ" : "違う" ); } } new String だとインスタンスの比較なのか "違う" となるのは分かったのですが、 もう片方は よく分かりません。 なぜ "同じ" となるのか教えて下さい。m(_ _)m
745 :
732 :2006/01/08(日) 23:34:08
>>742 なるほど、かなり魅力的な装置ですね。
ありがとうございました
>>744 ""で囲まれたリテラルは使いまわされるから
str3もstr4も同じ"あああ"を指す
747 :
744 :2006/01/08(日) 23:37:29
>>746 なるほど、使いまわされるのですね。
ありがとうございました。
>>746 >""で囲まれたリテラルは使いまわされるから
だからさ、毎回そうなるとは限らないということを何度いったら・・・
釣られるなよクマー
よし釣られないぞ。
>>732 IBMは1.3/1.4/1.5の各バージョンにおいて、Java Comm APIのWindows
実装を出してるぞ。
正解はこうだ 「""で囲まれたリテラルは、大抵の場合==で比較すると同じになる」  ̄ ̄ つまり 「""で囲まれたリテラルは、==で比較すると常に同じになるわけではない」 最近、このスレだったか他のスレだったか忘れたけど 「そんな、あやふやなことはありえない、どっちかに確定する(どっちかは忘れたが・・・)」みたいなこといっている奴がいたけど、それは間違い。 このように、「使いまわされるかどうかはそのときに決まる」というのが正解。 こんなの簡単なプログラム書けばすぐ終わる事だって。
釣りじゃなくてリアルなのか? こいつ。
757 :
デフォルトの名無しさん :2006/01/09(月) 00:30:07
「小泉純一郎」→「%BE%AE%C0%F4%BD%E3%B0%EC%CF%BA」といったように、 euc-jpの各バイトを「"%" +2桁の16真数表現」に変換する方法がわかる方いますか
>>757 こんなの簡単なプログラム書けばすぐ終わる事だって。
文字列リテラル として記述した場合は同一になる (コンパイル時にinternされる) 実行時に新しいインスタンスが構築される場合は 基本的に同一にならない(同値ではあるけど)
761 :
757 :2006/01/09(月) 00:36:34
>>760 おかぁさんといっしょに、おうちかえりましょうね〜
>>757 おれは759じゃないけどな、
「小泉純一郎(euc)」の文字列をeucで読み取ってバイト配列にすればいいんじゃないの?
%は自分でつけるんだろうが・・・
まぁなんだ、それってJavaの質問なのかといいたい。
C言語から始めてください。
基本の基を知らないうちにプログラム始めるからそうなるのですよ。
>>763 Javaを学習するのにCは不要
JavaはC言語を拡張したものではなく、C言語記法をまねただけ
おわかり?
765 :
757 :2006/01/09(月) 00:56:34
public static void main(String[] args) { String str = "小泉純一郎"; HexDumpEncoder enc = new HexDumpEncoder(); System.out.println(enc.encode(str.getBytes())); } 結果 0000: 8F AC 90 F2 8F 83 88 EA 98 59 この方法は間違いですよね 助言をお願いします
Javaで縮小化したときにタスクバーの右上に アイコンを表示させるアプリケーションは作れますか?
文字列の同値・非同値に関しては言語仕様で決まってるんだからそれを参照しろよ。 「Java 言語仕様 3.10.5 文字列リテラル」より。 同じパッケージ(7.)の同じクラス内(8.)のリテラル文字列は,同じオブジェクト String(4.3.1)への参照を表現する。 同じパッケージの異なるクラス内のリテラル文字列は,同じオブジェクト String への参照を表現する。 異なるパッケージの異なるクラス内のリテラル文字列は,同様に,同じオブジェクト String への参照を表現する。 定数式(15.27)によって計算される文字列は,コンパイル時に計算され,それらがリテラルであるかのように扱われる。 実行時に計算される文字列は,新しく生成されるものであって,別の文字列とする。 計算された文字列を明示的に収容した結果は,同じ内容をもつ既存のリテラル文字列と同じ文字列とする。
まず、その方法だとソースファイルもEUCにしないといけない もうひとつ、str.getBytes()の時点でOSがWindowsなら化けた文字でbyte[]に変換されてしまう
>Javaで縮小化したときにタスクバーの右上に >アイコンを表示させるアプリケーションは作れますか? 意味がよくわからない 縮小化したときのタスクバーの右上ってどの部分なのか?
ごめん自分で読み直してもよくわからなかった。 >縮小化したときのタスクバーの右上ってどの部分なのか? Windowsのタスクバーの右端(時計表示のすぐ左)ってことです。
>>770 それを言うなら「タスクトレイ」な
あーそれは無理、タスクトレイに常駐アイコンとかも無理
>>767 とうとう、頭おかしい奴が現れたか・・・というか・・・勘違いって奴?
==は何を比較していますか?
equals(Stringの)は何を比較していますか?
equals(Objectの)は何を比較していますか?
オブジェクトの同一と同値を理解していない馬鹿がいるな
>>771 ありがとう。タスクトレイっていうのか。
無理ですかorz
常駐して動作するアプリ作ろうと思ったんだけど(メモリ掃除ソフトみたいな)
Cの方がいいのかな(´・ω・`)
>オブジェクトの同一と同値を理解していない馬鹿がいるな
で?おまいさんは
>>772 の3つの答えをわかって言っているの?
773じゃないけど、上から【参照】【内容】【参照】。
>>774 あとは6でできるようになるから、出るのを待つか。
ということは?
>>767 の話は、ちょっと違うよね?と言いたい わかる?
論争するのは良いが アフォの俺にもわかるように結論書いてくれよ最後に
>>779 だから、
>>755 「""で囲まれたリテラルは、==で比較すると常に同じになるわけではない」 以上
同じにならない条件は何?
783 :
767 :2006/01/09(月) 01:35:30
同値・非同値でなく同一・非同一と書いたほうがよかったか? ""で囲まれた同値な文字列のリテラルは「かならず」同一Stringオブジェクトになります。
"あああ"はリテラル new String("あああ")はリテラルじゃない
ちなみに 同じパッケージの同じクラス内 同じパッケージの異なるクラス内 異なるパッケージの異なるクラス内 で同一になるという言語仕様を満たすため、 クラスファイルを読み込むときにVMは クラスファイルの定数プールに含まれる文字列を VM内の文字列プール内で一意にまとめるという処理を行なっている。
だから俺みたいなアフォにもわかるように結論を頼む
『参照が同じだ』って明記してあるのに、なんで
>>780 とかに勘違いするのか。
つか、781の答えをだれか頼む。 反例だから一個あれば十分なんだけど、これまで誰も==がtrueにならない 例を出してないよね。
いや、リテラルに関しては反例を認めないって言語規定に書いてあるのに……
>>790 なら780は釣りか真性ってことでOK?
どうでも良いから明日の朝までに結論出しておいてくだせぇ
こんなの簡単なプログラム書けばすぐ終わる事だって。
って言うか言語仕様読め。サンプルプログラムまで書いてあるから。
http://www.y-adagio.com/public/standards/tr_javalang/3.doc.htm#101083 package testPackage;
class Test {
public static void main(String[] args) {
String hello = "Hello", lo = "lo";
System.out.print((hello == "Hello") + " "); // 同一クラスのリテラルどうしの参照検査
System.out.print((Other.hello == hello) + " "); // 他クラスとのリテラルどうしの参照検査
System.out.print((other.Other.hello == hello) + " "); // 他パッケージとのリテラルどうしの参照検査
System.out.print((hello == ("Hel"+"lo")) + " "); // リテラルどうしを加算したものとの参照検査
System.out.print((hello == ("Hel"+lo)) + " "); // リテラル+変数を加算したものとの参照検査
System.out.println(hello == ("Hel"+lo).intern()); // 上記の結果を intern したもの
}
}
class Other { static String hello = "Hello"; }
package other;
public class Other { static String hello = "Hello"; }
796 :
続き :2006/01/09(月) 02:12:13
これらは,次を出力する。 true true true true false true // これらが出力されることが規定されている
こんなこともわからないのはC言語を勉強してないからだよw
いっぱい釣れましたクマー
>>795 otherパッケージの方、public付けわすれてるよ
String url = "
http://www.yahoo.co.jp/ ";
try {
URLConnection conn = new URL(url).openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
throw new Exception("error");
}
htmlを表示したいんですが、日本語が文字化けしてしまいます
既出かとは思うんですが、この場合の解決策を教えてください
既出なので探してください
804 :
802 :2006/01/09(月) 03:20:48
ヒントを教えてください
Yahooのサイトの文字コードは何か調べてみてください
806 :
デフォルトの名無しさん :2006/01/09(月) 03:35:27
System.out.println(sb.toString()); ↓ String test = URLEncoder.encode(sb.toString(),"euc-jp"); System.out.println(test); euc-jpでした 自分なりにやってみたのですがだめでした 「"Java質問・相談スレッド" 文字化け」で検索したのですがなかなか見つからないので わかる人すいませんがお願いします
まず自分が書いたコードで使われているクラスやメソッドのマニュアルは 全て目を通すこと。そうすれば、 InputStreamReader(InputStream in) を使ってはいけないことと、かわりに何を使えばいいかがわかるでしょ。
>System.out.print((hello == ("Hel"+"lo")) + " "); // リテラルどうしを加算したものとの参照検査 これもtrueか。 コンパイル時に計算すましてるのか。 >System.out.print((hello == ("Hel"+lo)) + " "); // リテラル+変数を加算したものとの参照検査 もしloがfinalならコンパイル時に確定できるわけだけどどうなるの? コンパイラいれんのじゃまくさい。
よーし、俺も釣られちゃうぞ。
>>755 =
>>793 「簡単なプログラム書けばすぐ終わる」ならさっさと書きやがれ。
お前が同じにならない例を1つでも出せばそれで終わるんだからな。
まあ、そんな例出せるわけないわな。pgr
ここまで釣ったのだから、
責任を持って
>>755 は反論しる
ワクテカ
Windows 用の J2SE Development Kit 5.0をインストール しています。インストーラではインストールする項目 が選べますが、 【開発ツール】J2SE Development Kit 5.0 (専用 JRE 5.0 を含む) 【Public JRE】スタンドアロン JRE このうち、上の「専用 JRE」てのはなんなんでしょうか?
Sun の JVM って、起動時に固定サイズのメモリがっつりOSから 取るんでしょうか?それともアプリケーションからの要求に 応じて動的にメモリ取ってくれるんでしょうか? Java アプリ動かすと、javaw.exe が激しくメモリ 占有しているんで、気になります。
814 :
デフォルトの名無しさん :2006/01/09(月) 08:32:30
>>755 は前にも出てきた半端な知識のリアル厨房だろ
釣りじゃなくてリアルで分かってないと思われ
815 :
デフォルトの名無しさん :2006/01/09(月) 08:35:59
817 :
デフォルトの名無しさん :2006/01/09(月) 08:57:23
CDT って C/C++ Indexer を On にしていると、 激しく固まったりして使い物にならないのはなぜ?
818 :
817 :2006/01/09(月) 09:00:53
すんません、 Eclipse スレと間違えました。 華麗にスルーしてください。
>>774 mustang ならタスクトレイ使えるよ。
メモリ掃除ソフトは作れないと思うけど。
>>812 privateJREというやつだ
SDKを動かすためにいれるランタイム
publicはレジストリ登録やパスを通していてシステム全体で使えるものだが
privateJREはそのアプリが必要とするランタイム
だから、publicとしてシステムには1.4.2をいれておいて
開発用に1.5.0ということも普通にある
また、細かいリビジョンでの違いが存在するため挙動を確保するために
アプリにつけて配布というのはよくあること
もうString同値の話題は禁止にしようぜ
すれば。脳内で。
マルムシさんがタウリン入り飴を好きなように 民度の低そうなやつに限ってGUIアプリだの、 常駐アプリだのを作りたがるね
>>809 わからない奴らだな、”常に==が同じになるとは限らない”といっている意味がわからないのか?
どうなるかは常にわからないのだから、何回も繰り返して表示するプログラム書けばいいでないの。
そのうちたまにfalseになるんだから
>>824 阿呆だな
「常に〜とは限らない」のならば
常で無い場合には必ず何がしかの条件があるはずだろ
その条件も提示せず結論のみ言ってるのは
細木かずこの占いより信用できない
確かに「==比較の結果」だけ着目すれば、既出のように
変数の初期化の仕方によって結果は異なるね。
>>825 勘違いしている
"aaa" == "aaa"
は確かに常にtrueだけど、
>>824 が言っているのは「==」の部分
両辺のオブジェクトについては触れてないだろ?
比較したいオブジェクトによって結果は異なる。
"aaa" == "aaa" の "=="かもしれないし、
new String("aaa") == new String("aaa") の "=="かもしれない
827 :
826 :2006/01/09(月) 12:14:58
ごめん、俺こそ勘違いだな >そのうちたまにfalseになるんだから これはあり得ないね 忘れてくれ
>>825 意味の捉え方が違う
スレッドで割り込むタイミングが全く一緒でしょうか?
アレと同じだよ
>>828 それは条件を提示する事が出来るが
>>824 は結果のみfalseになる場合もあると言ってる
条件提示できずとも,そのプログラムを是非晒してもらいたいものだ
なぜ、equals使いなさいといわれるのかよく考えてくれ ==で常に同じ結果になるとそこまで言うのなら(リテラルパターンの場合だけだが) ==使ってもいいじゃない?なのに(多分)おまえらは使っていないだろう?なぜ? >条件提示できずとも,そのプログラムを是非晒してもらいたいものだ そのまえによーお前の使っているPCの種類おしえろやCPUな
831 :
デフォルトの名無しさん :2006/01/09(月) 12:30:01
>>755 簡単なプログラムを書いてくれないためにループしてる件について
期待age
>>830 ThinkPadX31(PentiumM1.7GHz)、WindowsXP
VMはIBM1.4.2とSUN1.5.0
で、何で==を使って比較しないか。
それは両辺のオブジェクトの生成経緯を知らないから。
明らかにリテラルなら使うかもしれないが、そもそも
同一リテラルを比較することが明白なら
if(true)とでもしたほうがまし。
833 :
デフォルトの名無しさん :2006/01/09(月) 12:34:22
>>830 ハイ,条件が一つ出ました
どうやらfalseになる条件にCPUの種類が関係するそうです
期待ageage
>>834 環境構築はTOMCATのサイト見るんで、
プログラム書いてよ
>>834 わかった
環境はなんとかしよう
まずはその簡単なプログラムを提示してくれ
>なぜ、equals使いなさいといわれるのかよく考えてくれ リテラル値とは限らないからだろ。
も し か し て 再 現 で き な い の ?
次の言い訳 JDKをピッチでダウンロードしている Eclipseをピッチでダウンロードしている Tomcatをピッチでダウンロードしている Apacheをピッチでダウンロードしている Cygwinをピッチでダウンロードしている Apache-Tomcatコネクタをコンパイルしている
>ピッチ 家に無線LAN来る前はそんなことやっていたな
SPARCじゃないと再現できない とかですか?
ロードバランサー環境か・・・ふぅ〜
なんかつまんないね
要は別VMに持っていった時にfalseになることもあるっていいたいわけ?
RMI
視野の狭い奴ら
そもそもリテラルとStringオブジェクトの区別をつけろよな リテラルは別なVMにはもってけないだろ
そういや昔このスレで、やっぱり==はfalseになるって言ってるやつがいて、 根拠は「BeanShellで確認したから間違いない」だった。突っ込み入れる 気力も失せたね。
俺にはすっげぇ趣味の悪いストレス発散の方法があって、 道行くカップルの女のほうに、 「あ、ミキちゃん!久しぶり! え〜と、彼氏?同伴?かっこいいね〜! ってかミキちゃん最近店で見ないよね〜!! また行くからヌイてよね!!ミキちゃんうまいから!!」 とまくし立てて逃げて、隠れて様子を見るのが好きなんだけど、 この前同じ事したら、女のほうが泣きそうになりながら、 「違うよ!人違いだよ!私そんな事してない!!」 とか喚くのね。普通は「?」って感じでスルーするヤツが多いんだけど、 この女ものすごいリアクションとるのよ。 ぎゃーぎゃー喚いて、違う!本当に違う!の連発。 マジで風俗女か前歴があるとしか思えないほどの焦りっぷり。 じゃ、彼氏のほうが、「もういいって」とか言って涼しい顔。 なーんだ、おもんねぇと思った瞬間。女殴った。 街中で。グーで。思いっきり振りかぶって、顔を。 女は鼻血ダラダラ流して、泣きながら男の後を追う。 「本当にじでないよ!ね”ぇ!!ゆうぢゃんだけだよぉ!!」 とか叫びながら。 もう一個のストレス発散方法は、ありえない議論をさもそうであるかのように熱弁し 有識者のみしか対応できないようにして「中途半端な知識をもったやつら」を排除しようと言う試み どこまでわかっているのかを探る
850 :
デフォルトの名無しさん :2006/01/09(月) 13:29:12
日本語を英語に変換するにはどのように書けばいいんですかね?
852 :
デフォルトの名無しさん :2006/01/09(月) 13:32:53
>>851 ドラゴンブック読んでコンパイラの仕組みを学んで
あなたがこれから中学で学習する英語の知識をそこに
当てはめればいいよ
ひらがなをローマ時表記に変えるにはどのようにかけばいいんですかね?
javaでmp3を扱うためにJavaZOOMのライブラリを使ってるんですが、 iTunesとかのaacを扱うのにいいライブラリってないでしょうか? MEPG関係のライブラリでは扱えないですよね?
>>838 www
お隣の不思議の国の黄教授が思い浮かんだ。
859 :
855 :2006/01/09(月) 15:23:08
>856 ありがとう。 いまからいじってくるよノシ
(数字2つ:数字2つ)に一致する正規表現を作ろうとして Pattern.compile("([^(]\d{2}:\d{2})",Pattern.CASE_....); とやるとエスケープ文字が不正ですとかでるんですが \dで1〜9の整数値になるんですよね?
通常の正規表現だと \(\d{2}:\d{2}\) でよいとは思うが、Javaの場合 \\(\\d{2}:\\d{2}\\) となるかな
>861 \\ですか、レスありがとうございます
続きはないのか? ほとぼりが冷めたころ、また >だからさ、毎回そうなるとは限らないということを何度いったら・・・ でループするのか?
864 :
デフォルトの名無しさん :2006/01/09(月) 17:26:00
String問題引っ張ってるのは「さあおまいら問題だ!」の人かな。
済みません。教えてください。 appletの中でFilewhiterを動かそうとすると Exception in thread "main" java.security.AccessControlException: access denied ( java.io.FilePermission c:\temp\hoge.txt write) というエラーが発生するのですが、どうすれば動くようになるのでしょうか?
>>866 あきらめて設計を見直しな
アプレットを使うのはネットワーク上の不特定多数ということで
自分の環境で動くようにしたとしても意味ないから
868 :
デフォルトの名無しさん :2006/01/09(月) 18:34:11
アプレットの制限って知ってるよな? 知ってる上で使うのなら Policyファイルでググれ
870 :
デフォルトの名無しさん :2006/01/09(月) 21:08:27
インターフェースを使うメリットのガよくわかりません たしかに実装することによってそのメソッドを確実に使わなければならないっていう保証として プログラミング時に便利なのかもしれませんが そんなの仕様書にでも必ずそのメソッドを入れろって書いておけばすむような話の気がしますが
>>870 あなたが利点が分かってくるのは大分先っぽい
いまはそんなもんだとおもっておいたほうがよさげ
>>870 インターフェースは、オブジェクト指向厨のオナニーなので
あまり深く考える必要はないんだよ。
>>870 インタフェースのメリット一つとして、
実装を差し替えられることを挙げておこう。
たとえば、以下のコードは便利だとは思わないか?
interface Executale { public void execute(); }
があったとして、
Executable exec = (Executable)Class.forName("HogeExec").newInstance();
exec.execute();
この"HogeExec"という文字列を外部ファイル化しておけば、
コードを再コンパイルせずに、実装を切り替えることができる。
ファクトリーやランチャー、デバッグモジュールなど
アイデア次第で使い道が広がるだろう?
874 :
デフォルトの名無しさん :2006/01/09(月) 21:32:08
>>870 インターフェースって何に使うかっていうとポリモーフィズム実現のために使うんだ
オブジェクト指向の要のうちの一つといってもいい
ポリモーフィズムってのは、同一のメッセージでもレシーバーによって振る舞いを
変えられるってことね
Smalltalkの様に型という概念がない場合は、すべてのオブジェクトに対して
任意のメッセージを送信できる。オブジェクトにメッセージに答えられるメソッドが
なければ実行時エラーになるけど
それに対して、Javaは型がある言語
途中で送信してしまった 型がある言語では継承以外にポリモーフィズムを実現するための 手段だってことだ
>>874 わるいわるい。
自明だったので、ちょっと説明が足りなかった。
public class HogeExec implements Executable {
public void execute() {
....
}
...
}
という実装があるってことね。
例えばこれを以下のクラスに変えることもできるってことだな。
public class Hoge2Exec implements Executable {
public void execute() {
....
}
...
}
878 :
デフォルトの名無しさん :2006/01/09(月) 21:44:16
>>877 それって
Executableインターフェースがあってそこから
それぞれHogeExecクラス、HogeExec2クラスを見に行くって事?
Objective-CもSmalltalkの特徴を持った言語で、 本来はメッセージパッシングは実行時に動的に処理されるが、 protocol(Javaでいうところのinterface)を導入している。 これはNeXTが確か分散オブジェクト機能の発展とともに その必要性を考慮したからだと思った。 見知らぬ外部から送り込まれたオブジェクトが、 interfaceに合致しているかどうかということは 実行において重要だからね。
な〇あ〇〇はJava〇オブジェクト指向〇〇が〇き〇〇のかP.128だな。
>>878 newInstance()で作られたオブジェクトを
Executableでキャストして利用するってこと。
実装がどうなっていてもExecutableに適合していれば
使えるってこと。
EJBとかも基本はこんなような仕組みだよ。
ちょっと蛇足だけど書いておくと、 この手法は継承を使っても同じことができることに気がつくだろう。 共通の親クラスを継承していれば、親クラスにキャストできるからね。 ただ、以下の点は考慮に入れておいた方がいい。 1.継承は高価。 2.親クラスの仕様に依存する。 これらの点を考慮に入れても、 インタフェースでなく親クラスを使うことに価値がある場合もある。 継承なら、基本ロジックを親側に埋め込めるからね。 適所適所で適切に選択すればいい。
>>870 >>875 ポリモーフィズムは抽象クラスでも実現できるよ。
実装の変更がさも便利みたいに言ってるが、実作業じゃメソッドの実装よりも
その定義自体を変更したくなるケースが多いんだよ。
つまり、どう作るかよりも(how)、何の作るか(what)の方が難しく重要なワケ。
しかし、インターフェースは作ったが最後、その後に動的にメソッド定義を
拡張する事が出来ないので全く無用の長物に成り下がってるんだよ。
例えば、デザパタの一つ、ブリッジ・パターンで実装(インプレメンター)と
動作定義(アブストラクター)をそれぞれ別個に拡張できて便利とか言ってるけど、
ここで一番重要なのは、基本となるアブストラクター(Javaでいうインターフェース)の
メソッド定義だ。その初めのメソッド定義に不都合があると後で修正できない為に
全然使えなくなってしまう。しかし、これを上手く定義するのは予知能力者でないと事実上ムリ。
結論からするとインターフェースというのは、実作業で起こる最もポピュラーな
問題をはぐらかしてるだけの無用の長物であり、オブジェクト指向厨の自己満足オナニーに
過ぎないと思う。
884 :
デフォルトの名無しさん :2006/01/09(月) 22:25:53
>>883 が設計能力の無い上司に使われていた可哀想なPGだとうことは分った
>>883 あなたの場合、抽象クラスもインターフェースも
問題をはぐらかしているだけの無用の長物だと思う
そして、「インターフェースは自己満足オナニー」と
評価してオナニーしているにすぎない
888 :
デフォルトの名無しさん :2006/01/09(月) 22:44:44
>>883 抽象クラスは動的にメソッド定義を拡張できるのか?
>>883 インターフェイスってのは、ソフトウェア工学的に仕様定義が開発の初期段階として重要な位置を占めることがわかってきたから、それを言語レベルで実現するためのものでしょ。
「仕様定義なんて難しいからインターフェイスなんていらないやーい!」とか言っているように聞こえる。
>>883 そこでDependency Injection(DI)の話を展開できれば
聞いてやったのに、、、
アスペクト指向も設計厨のオナニーにすぎない。
アスペクト指向に関してはなくてもいいがな
スレッドについておしえてください。 参照おこなうときは、ワーキングメモリから、メインメモリにコピーされて参照され、 代入をおこなうときは、ワーキングメモリから、メインメモリにコピーされるとききました。 volatileとか、synchronizedでまもらないと、いつ、参照と、代入が、 メインメモリに対しておこなわれるかわからないともききました。 ということなのですが、以下のようなプログラムの場合、mapにputした値が消えたり、 putした値がみえなかったりするもんなのでしょうか。 import java.util.*; class Runner implements Runnable { private String key;private Map map; public Runner(String key, Map map) { this.key = key;this.map = map; } public void run() { for (int i = 0; i < 1000; i++) { String buf = key + i; map.put(buf, buf); } } public static void main(String[] args) { Map map = new HashMap(); for (int i = 0; i < 1000; i++) { new Thread(new Runner(String.valueOf(i), map)).start(); } } } それ以前に、複数スレッドからスレッドセーフでないHashMapを守らずに利用するのが間違いとはおもいますが。
おれもアスペクト指向はどうでもいい あれって単体じゃどうしようもないものな
895 :
893 :2006/01/09(月) 23:10:43
>参照おこなうときは、ワーキングメモリから、メインメモリにコピーされて参照され、 参照おこなうときは、メインメモリから、ワーキングメモリにコピーされて参照され、 の間違いでした。
>>893 良くは知らんが、そういう場合は例外があがると思うけどね。
まずいと分かってるなら、改善すれば良いと思う。
897 :
デフォルトの名無しさん :2006/01/10(火) 00:00:59
Javaでパケットをキャプチャするソフトとか作りたいんですけど どういった勉強したらいいでしょうか? 本とか探したんですけどなかなか見つからなくて。 良い本があったら紹介してください。 お願いします。
>>897 実装の目的は何?
プロトコル解析?
Etherealじゃだめなの?
散々考えてどうにもならなかったので、助けていただきたく初カキコします。 method.invokeを利用して取得したObjectの中にString[]が入っているのですが これをString[]型の値として扱う方法を探しています。 現状ではmethod.getReturnType().isArray()を使用して配列を確認した後 中の配列数分のループを処理しようとしています。 どなたかお分かりになる方いらっしゃいませんか?
901 :
897 :2006/01/10(火) 00:18:14
>>898 勉強のためです。javaと同時に勉強できて効率良いかなみたいな。
>>899 そうなんですか。初めてこのスレに来たもので。
>>901 少なくとも、本を見ながらでないと学習できない人にとっては効率悪い
>>900 String配列でキャストすればいいじゃん
>>893 > 以下のようなプログラムの場合、mapにputした値が消えたり、
壊れやすさは HashMap の実装によって変わると思うけど、
それだと put しかしてないので基本的には壊れ難いと思うよ。
仮に put した値が消えても、別のスレッドでも重複した値を put してるから
消えてるのか調べるのも大変だし。
壊れるテストをしたいなら 片方のスレッドでは同じキーで put と get を繰り返し、
もう片方のスレッドでは clear だけを繰り返せば もっと簡単に壊せるよ。
>>902 レスありがとうございます。
最初はそう思ったのですが実際にやってみると
InvalidTypeExceptionが発生してしまったのです。
String[] strs = ( String[] ) object;
※ object( String[2] )
限りなくしょぼい質問ですが、どなたかお願いします。 DOS窓でコンパイルして作ったクラスファイルを実行すると 「クラスファイルが見つからない」 と出ます。 以前に作ったクラスファイルさえも実行できません。もちろん以前と同じ手順です。 以前と変わった事といえば、 年が変わった iTunesを入れた だけです。 独学なので泣きそうな事態です。 よろしくお願いします。
>>905 >iTunesを入れた
これをいれるとQuickTimeもいっしょにインストールされる。
すると、QuickTime for Javaもインストールされて、環境変数CLASSPATHが
書き換えられる。実際にはQTJava.jarはlib/ext/にインストールされるから
全く必要のない書き換えなんだけどなぜかAppleの糞インストーラはこれを行う。
というわけでCLASSPATHを見直すこと。
>>904 あれ、だめなんだっけ?
元々のメソッドのシグニチャって何?
public Object foo();
とかだったりする?
見直すつーか、もうCLASSPATH削除しちゃっていい。 そうすればデフォルトでカレントディレクトリからクラスファイルを 検索してくれるから。
ってか、クラスパスは実行時に明示的に指定しようぜ
910 :
897 :2006/01/10(火) 00:38:32
>>902 そんな、初心者つかまえてそんなこと言わなくても。
教えてください、お願いします。
911 :
デフォルトの名無しさん :2006/01/10(火) 00:44:07
>>877 遅レスだが、イメージとして
クラスをインスタンス化ではなく、実態のないインターフェースをインスタンス化させて
そのインターフェースがそれぞれ自分を実装している
クラスのメソッドを見に行くって感覚?
それだとどのクラスが自分(インターフェース)を実装してるのかってわかるの?
>>904 object.getClass().toString() の結果と、
String[] array = (String[])object; したときの InvalidTypeException の FQN は?
キャストしなくても、一応 java.lang.reflect.Array.get(object, index) で配列の要素が、
Array.getLength(object) で配列の長さが取れるけどね。
>>910 事実だから
本気で学びたい人はこんなところで悠長なことしてないよ
>>903 >基本的には壊れ難いと思うよ
いや、やめた方がいい。
実装の処理を隅々まで眺めて
どのタイミングで割り込まれても大丈夫と判断しないかぎり、
何が起こるかわからない。
916 :
905 :2006/01/10(火) 01:06:54
>>906 >>908 >>909 本当にありがとうございます!
まさかQuicktimeがJavaの邪魔をするなんて、、、
PATHの見直しと、
C:\からの入力を癖にしたいと思います。
>>916 c:\からの入力というより、-cp使ってクラスパス指定する癖ね
918 :
905 :2006/01/10(火) 01:15:55
>>917 真性の初心者丸出しで恥ずかしい限りです、、、
知識をつけていただき有難うございます^^
釣り士が多いな。チャレンジしてみよう。 (1)具象クラスでもポリモーフィズムは実現できる。 だから、インタフェースや抽象クラスは無用な長物である。 (2)クラスがなくたってプログラムは作れる。 だからオブジェクト指向言語は無用な長物である。 (3)プログラムがなくたって人間は生きていける。 だから、プログラムは無用な長物である。 (4)人間なんか居なくたって地球は太陽の周りを回り続ける。 だから、人間は無用な長物である。
>>919 クラスがなくてもプログラムはできるね
クラスがなくてもオブジェクト指向は成り立つよ
921 :
915 :2006/01/10(火) 02:04:23
923 :
915 :2006/01/10(火) 02:30:50
>>922 すみません、そうですよね、でも宿題スレ進行遅いので・・。
連投スマン。問5は、変えるのはGroupServer.javaだけかな?
グループからメンバーを離脱できるようにlist.remove(m)を付け加えればいいって
感じかな?
問6とか、もうわからん‥。答え聞いて覚えたい。明日同じ研究室の人に聞いてみることにします。。。
ほんとやばいんすよ俺。相当頭悪いし、5回レポート提出したんですが、受理は最初の2回だけで、残り3回は採点中・・。
課題無視してテキトーだったのもあるから当然っちゃ当然。
http://www.ipa.go.jp/security/awareness/vendor/programming/a03_03_main.htmlのサイトのようだと まだ少し分かるんですが・・。あと1年くらいはこういうシステムの研究なのですが、
わかりやすく勉強できるのないですかね?俺、頭の悪い駄目人間なので同じ研究室の人に勇気もって
聞いてやるしかないですかね?なんか勉強しやすいサイトとかあったら是非教えて欲しい。
てか、答え聞いてから勉強するやりかたがいい。そっちのほうが明らかに効率的だし、そうじゃないと
俺バカだからできないから。説明不十分だし日本語もわけわかんない。これ必修だから落としたら
留年決定・・。これ落とさなければほぼいける。。自分で勉強してもわからないしさ、来るとこ間違えた。
てか、もう昔から駄目人間。マンツーマンでずっと教わりながらやりたい。研究室の人俺以外みんなできるから。
完ぺき主義者だから1個1個全ての説明が欲しい。無理だぁ。
924 :
915 :2006/01/10(火) 02:34:40
金払って、課題送って、いろいろ詳しい説明つけて送り返してくれるって 有料のサービスとかあるんすかね。そういうの使わなくちゃ駄目かもしんない、俺。
>ほんとやばいんすよ俺。相当頭悪いし、5回レポート提出したんですが、受理は最初の2回だけで、残り3回は採点中・・。 課題無視してテキトーだったのもあるから当然っちゃ当然。 助ける義理はない上に、スレ違いを指摘されて(しかも適正なスレを教えてもらって) まだ居座るとはいい度胸だな、オイ。勝手に課題落として死ねよ。
答え聞いてから勉強するやりかたがいい。 とか、自分で考える気はいっさいありません。 ありがとうございました。
>>923 留年ってなんのためにあると思う?
大学(高校)の面子を保つため
馬鹿をほいほいと進級させられるわけないだろ
928 :
915 :2006/01/10(火) 02:51:33
今日はあまり寝ずに自分でやってみて、明日研究室の人に聞いて見ます。 分かんないっていうか、ホントはだらけて自分でやってないだけですからね‥。 そんな俺も株の勉強し続けているんで、いつかはそっちの道で食っていきたいし、 例え退学・留年になってもいいかなぁって感じです(ならんけどね) もっとこの駄目人間を叱ってください。
929 :
915 :2006/01/10(火) 03:00:32
ちなみにピンチなのは研究室のこの授業だけで、選ぶ研究室を間違えたようでした。。 友達曰く、一番難しい研究室とのこと。 他の普通の授業のテスト勉強などはみんなで過去門とか回して単位は結構取れているので、 あとはこの研究室さえとれればいける感じです。 まだ採点中のやつも、分かるところはちゃんとやったし、分からないところもネットからそれっぽいところを 持ってきたり、「終わりませんでした」って書いたり。(←これは、駄目だね) まぁ、採点中のままなので再提出になったら頑張ってやります。 採点中なのにいきなりダメってことにはならんと思うから。以上、駄目人間でした。
教授に泣きつけw 分かりません、教えてくださいと・・・ 多分勉強不足だ!と言われるんだろうけど、今の時点で精一杯の努力を見せてみれば?
931 :
915 :2006/01/10(火) 03:15:03
>>930 ありがとう。優しいですね。でも自分の研究室そんなところじゃないんですよね。
先生もみんな優しいし。とりあえず、親が俺に月3万くらい負担させてきて精神的に駄目になってる部分もあるけど、
わがままな自分がだらけてる部分が多いです。不満ばかり感じたり。
とりあえず、1月乗り切れば、2月3月休みなので、そこである程度マジメに勉強やるしかないですね。
就活&株もやりたいですけど。来年は奨学金(月5〜10万くらい)もらう予定なので、それで少しは精神的に余裕が出るかもしれません。
まぁ全然追いつけないとは思いますけど、今日、明日くらいは徹夜でがんばってみますね。
(結構、健康主義者なので不健康なのは嫌いなんですけどね…;)
>>931 いろいろ難癖つけて何もしない人間でしょ、あんた
でも遅かったですね なきつくなら、1年のときから泣きつかないとw 漏れはそのオカゲで優ばかりだよw
株は当てにして(ry
935 :
デフォルトの名無しさん :2006/01/10(火) 06:08:23
サーブレットについて質問なんです。 以下のような動作をさせたいです。 ・現在ある画面が開かれている。 ・その画面のあるボタンを押す ・入力チェックをし、エラーなので、画面のエラーメッセージ枠にエラーメッセージを表示させる。 ただし、エラーメッセージ以外はボタンを押す前と全く同じ状態にしておきたい。 「エラーメッセージ以外はボタンを押す前と全く同じ状態にする」という部分の実現方法で悩んでいます。 私の知識で思いつくのは、以下のいまいちなやり方だけです。 ・前画面表示データをセッションに入れておく。 ・前画面表示データを全部サーバーに送る(サーバーでは、リクエストデータを丸ごとレスポンスに写し、エラーメッセージだけレスポンスに追加する) 何かスマートな方法があったら教えてください。 大概のフレームワークを使うと、レスポンスセッターみたいなものがあって、 アクション前後で画面遷移がない場合、レスポンスに設定したデータのみ画面で上書かれてたんですが、 フレームワーク上でどうやってたか知らないもので。。。
かならずBeanにセットするようにすればいまいちとは思わないかも 最初からBeanの内容を表示するようにしていれば表示も簡単 Jspはなし?
937 :
デフォルトの名無しさん :2006/01/10(火) 06:25:09
>>936 なんかわかりずらい説明ですいません。
jsp使用です。
jspにはjspと1対1のBeanを用意しています。
サーバ側のアクションクラスで、
エラーチェックに引っかかったときに、
bean.setErrMsg("エラーですよ");
とすると、エラー以外は空の画面が出てしまいます。
同様に、検索ボタン押下⇒結果表示のような場合も、
bean.setKekkaA("A");
bean.setKekkaB("B");
とすると、検索結果は表示されるが、検索条件入力が空になってしまう。
jspからサーバー側にBeanごとリクエストに渡す。
なんてことはできますか?
ボタンを押す前と全く同じ状態にするって、入力データの保持ってこと? value=で渡せばいいじゃん。 全く新規なら、「ここに名前を入れる」とかのデフォルト文字列を入れてHTMLを生成するとか。 JavaというよりHTMLのことだね。PG的発想でありがちな罠。
939 :
デフォルトの名無しさん :2006/01/10(火) 06:40:03
>>938 >ボタンを押す前と全く同じ状態にするって、入力データの保持ってこと?
そういうことです。
>value=で渡せばいいじゃん
入力データを渡して、出力データに○○コピーするということでしょうか?
そうだとすると、こんなやり方にしようかと思うんですが、なんか変なところあったら是非指摘をいただきたいです。
・jspでは、フィールドは全てformで囲む。
・アクションクラスの引数はビーンとする。
・コントローラでは、リクエストのデータをビーンにマッピングし、アクションクラスに渡す。
・アクションクラスでは、上書きしたデータのみビーンに設定し、jspに渡す。
これ今日中にインターフェース提出しないといけないんですよ。。。
940 :
デフォルトの名無しさん :2006/01/10(火) 07:25:05
計画的に学習せよ
>>910 前回質問したのは俺。
jpcapでぐぐると2種類のライブラリが見つかるけど、
片方はVMがクラッシュして使い物にならなくて、
もう片方はキャプチャ自体ができなかったから、
結局
http://www.microolap.com/products/network/tcpdump/ をRuntime#execで結果を解析して
IpPacketって言うクラスとそれを継承したTcpPacketとかのクラスを作って、
ヘッダ部分の値とか取れるようにしたけど、
tcpdumpの仕様でフラグメントしたデータのidentificationが一致しなかったり、
フラグメントオフセットが全部0だったりして、
完璧なものはできなかった・・・・
それ以外の部分ではうまくできたんだけどね
あぼーん
java.util.Propertiesクラス(↓)のloadFromXMLというメソッド(XML形式で書かれたpropertiesファイルを読み込む)を使用して、
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Properties.html javaのバージョンが5.0〜5.0_05では、問題無く動作する文字変換用プログラムを作成しました。
ところが、Javaのバージョンを5.0_06に変えた途端、
java.util.InvalidPropertiesFormatException: org.xml.sax.SAXParseException: URI was not reported to parser for entity [document]
java.util.InvalidPropertiesFormatException: org.xml.sax.SAXParseException: URI was not reported to parser for entity [document]
というエラーが出るようになり、propertiesファイルが読み込めなくなってしまいました。
5.0_05から5.0_06のバージョンアップで、XMLpropertiesの仕様変更などがあったのでしょうか?
ちなみに、loadFromXMLメソッドを使用して、XML形式のファイルを読み込むメソッドは次のようにしています。
private static Properties loadProperties(String filename){
Properties prop = new Properties();
try{
InputStream stream = new FileInputStream(filename);
prop.loadFromXML(stream);
stream.close();
} catch(Exception e){
System.out.println(e);
}
return prop;
}
また、propertiesファイルは次のような形式にしています。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE properties SYSTEM "
http://java.sun.com/dtd/properties.dtd ">
<properties>
<entry key="変換前1">変換後1</entry>
<entry key="変換前2">変換後2</entry>
</properties>
944 :
デフォルトの名無しさん :2006/01/10(火) 18:49:46
はじめまして。 今、Javaで、お絵かきソフトを作ってるんですが、 どうしても書いた画像を保存できません。 どうやって保存するのでしょうか? 教えてください。
どうやって保存しようとしてるの?
946 :
デフォルトの名無しさん :2006/01/10(火) 19:16:16
落としてきたソース(正式リリースのもの)からeclipseでjarファイル作ってそれを利用したとき Exception in thread "main" java.lang.UnsatisfiedLinkError: no jusb in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) ・・・・・のようなエラーが起きます。調べたら「Java 仮想マシンが、native と宣言されたメソッドの適切なネイティブ言語の定義を見つけることができない場合にスローされます。」 とあったので、これはもしかしてjar作成の際にnative型を間違ってなんらかに変更してしまったと考えていいのでしょうか? それともライブラリパスに変更がいるのでしょうか。 まちがってたらすいません。
947 :
デフォルトの名無しさん :2006/01/10(火) 19:56:52
再描画のため座標値をVectorに保存しているので それを使って、ファイル入出力処理で 保存しようとしましたが、できませんでした。 それで今度はピクセル情報を取得して ビットマップ保存をしようとしているのですが やりかたがわからないのです。 どうやればいいのでしょうか?
JPEGとかなら簡単に保存できるけど独自フォーマットがええのんか?
>>946 システムプロパティjava.library.pathをjusbのネイティブライブラリ
が存在する場所に設定。
ウインドウプログラムで x座標とy座標を入力して、(x,y)座標に ドットを表示させて、 また座標を入力して、ドットをその座標に 移動させて・・・ の繰り返しってできますか?
951 :
デフォルトの名無しさん :2006/01/10(火) 22:22:26
もちのろん
出来ないと思う理由ってなんだろ・・・
953 :
950 :2006/01/10(火) 22:44:42
ウインドウを最小化して 元の状態に戻さないと座標が 移動しないのですがどうすればよいでしょうか?
954 :
デフォルトの名無しさん :2006/01/10(火) 22:55:26
Update
955 :
デフォルトの名無しさん :2006/01/10(火) 22:56:03
revalidate
956 :
950 :2006/01/10(火) 23:19:54
見たよー。
958 :
デフォルトの名無しさん :2006/01/10(火) 23:40:20
滅茶苦茶
OK。実行してないから適当だけど、main3行目、なんで DrawingPanel を new してんの? この DrawingPanel は DrawingFrame に追加してないから、そもそも表示すらされてないから repaint かけても無駄なのに。
あと、『static int x=100, y=100;』 の static は削除するように努めたほうがいいよ。色んな意味で。
961 :
デフォルトの名無しさん :2006/01/10(火) 23:45:02
このプログラムを書くほうが難しいな
Javaで暗号化をいじっているのですが、 KeyGeneratorで作った鍵を、一度Base64にしてから復号したものを戻して もう一度SecretKeySpecで鍵にし、 cipher.init(Cipher.DECRYPT_MODE, key); とやると、「Parameters missing」とエラーが出てしまいます。 Base64前と復号後は同じデータになっていますし、 鍵同士をequalsしても同じと出るので、鍵自体は正しいと思うのですが・・・。 ちなみに、暗号化モードはAES/CBC/PKCS5Paddingです。
963 :
950 :2006/01/11(水) 00:19:35
staticは削除しましたが 他にどうしていいかわかりませんorz
964 :
950 :2006/01/11(水) 00:24:55
DrawingFrameに追加したらrepaintでいけました こんなこともわからないなんて・・・ ホントにありがとうございました でも書き方めちゃくちゃなんだろうなぁorz
965 :
デフォルトの名無しさん :2006/01/11(水) 00:30:44
>>962 PBEParameterSpecを指定してないのでは?
>>964 DrawingPanel、1枚無駄に追加してたりしてないか?
967 :
950 :2006/01/11(水) 00:36:33
はい、無駄に追加していたので 共用するようにしました
>>964 Integer.valueOf(reader.readLine()).intValue();
↓
Integer.parseInt(reader.readLine());
プロパティ(たとえば座標のx、y)は隠蔽し、
外部に対してはsetting methodを提供しましょう。
static int x, y;
↓
private int x;
private int y;
public void setX(int x) { this.x = x;}
public void setY(int y) { this.y = y;}
もしくは
setPoint(int x, int y) {
this.x = x;
this.y = y;
}
とかね
969 :
デフォルトの名無しさん :2006/01/11(水) 00:43:15
>>950 モンテカルロ法の実装をやってるんだね
まずはpaintではなくてpaintComponentね
データをSystem.inから入力するのはあまりにも非現実的なので、
乱数による自動生成にした方がいいね
970 :
950 :2006/01/11(水) 00:43:18
>>968 ありがとうございます
たしかカプセル化というものですね
いろいろ直してみます^^
あと、次の式 x-1、y-1 これだけでは意味のわからない演算なので メソッドにしてしまってもいいかもしれません。
>>970 そうそう、最初はそれでいいと思うよ
いきなりよい設計なんて無理なんで、
リファクタリングして良いものにしていけば
いいんじゃないかな
そのうち身に付くよ
973 :
950 :2006/01/11(水) 00:59:07
みなさんありがとうございます 少しずつですがわかってきた気がします^^
>>965 「パスワードベースの暗号化」用とあるんですが、関係あるんでしょうか?
とりあえずやってみます。
975 :
デフォルトの名無しさん :2006/01/11(水) 01:43:20
>>974 AlgorithmParameterSpecの実装クラスから
適切なのを選んで使ってみて
色々調べてみたら、フィードバックモードをCBCにした時はIV(初期化ベクタ)を設定しなければならないそうで、 設定してみたら通りました。ありがとうございました。
977 :
デフォルトの名無しさん :2006/01/11(水) 03:15:46
【サーブレットに関して】 画面からサーバに入力項目を送信する時に <input type="text" name=... value=...> とやるじゃないですか。 所謂入力フィールドでない部分を、送信する方法はありますか? 見た目は出力フィールドなんだけど、実は入力フィールドでもあるみたいな。 出力フィールドとして書いて、更にhiddenとして書く必要があるんでしょうか?
入力フィールドやら出力フィールドとは何ですか? 送りたいものを自分で勝手に送ればいいんじゃないですか? 全然Java関係ないし。
979 :
デフォルトの名無しさん :2006/01/11(水) 03:37:39
確かにJava関係なかったですね。htmlの問題です。 要はテキストフィールドの値はサーバーに送信できたんですが、 表の中身とか普通のテキストがサーバーに送信できません。 どうしたらいいですか? ということです。 すいません。
Java以外の質問は受け付けてないので・・・
Appletの開発はずっとテキストエディタのみでやってきたのですが、 GUIを作るのが面倒なのでIDEを導入したいと思っています。 GUIを編集するのにオススメのIDEを教えていただけないでしょうか? できれば日本語対応のもので。
GUI作るならJBuilderかNetBeansのほうがいいような希ガス
java.util.Propertiesクラス(↓)のloadFromXMLというメソッド(XML形式で書かれたpropertiesファイルを読み込む)を使用した、文字変換用のプログラムを作成しています。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Properties.html ようやく、エラーもなく、問題無く動作する物が完成しました。(jdk 1.5.0_05)
しかし、Javaのバージョンを5.0_06に変えた途端、
java.util.InvalidPropertiesFormatException: org.xml.sax.SAXParseException: URI was not reported to parser for entity [document]
java.util.InvalidPropertiesFormatException: org.xml.sax.SAXParseException: URI was not reported to parser for entity [document]
というエラーが出るようになり、propertiesファイルが読み込めなくなってしまいました。 なぜですか?
ちなみに、propertiesファイルは次のような形式にしています。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE properties SYSTEM "
http://java.sun.com/dtd/properties.dtd ">
<properties>
<entry key="変換前">変換後</entry>
</properties>
それstoreToXMLで書き出したふぁいる?
とりあえず、UTF-8で書き出すのが無難だと思うけど。 Charset utf8 = new Charset("UTF-8"); new OutputStreamWriter(in, utf8);
988 :
デフォルトの名無しさん :2006/01/11(水) 13:10:05
携帯電話って、Webにアクセスする時にユーザーエージェント以外に何か情報送ってるんですか? JAVAでそれらの固有情報を取得する方法があったら教えてください。 ログイン処理に使いたいです。
>>978 HttpServletRequest#getHeaderNames()
でリスト取得すれば良いじゃん
List<Double> l を double[] a に直したいんですが、どうすればいいでしょうか? double[] a = (double[])l.toArray( new double[0] ); としても、toArrayは引数double[]に適用できませんと言われます 引数無しだとObject[]をdouble[]にキャストできないと言われますし 今までは仕方なくforで回して要素一個ずつ代入していました
>>990 doubleはクラスじゃないからl.toArray( new double[0] )はできんよ
>>991 丸ごと変換するような方法は提供されてないんですかね?
いちいちforで回して一個ずつ代入するのもなんだかなぁって感じなんですが
>>992 Commons-primitivesを使ったらどうかね?
995 :
985 :2006/01/11(水) 15:31:55
自己解決しました。
拡張子を .properties から .xml にすることで、jdk1.5.0_06でも動作するようになりました。
>>986-987 ありがとうございました。
996 :
995 :2006/01/11(水) 16:19:07
と思ったのですが、
Windowsでは
>>995 のやり方で正常に動作するようになりましたが、
Linuxではやはりダメでした。
エラーは出ないもののxmlファイルが認識されません。
997 :
デフォルトの名無しさん :2006/01/11(水) 18:12:02
生め
埋め
梅
1000 :
デフォルトの名無しさん :2006/01/11(水) 18:14:07
1000ならあややとセクロス
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。