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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2005/07/21(木) 02:32:27
>>947

ここはこうすべきだろう
interface x<T>
 <T> T do();
}

とか
interface x<T extends Number>
 T do(T t);
}

class X2 implements<Double> {
 Douoble sinc(Double value){
  double a = value.doubleValue();
  return new Double(Math.sin(a) / a);
 }
}


953デフォルトの名無しさん:2005/07/21(木) 02:37:19
>>950
パラメタ化が静的か動的かの違い。
Genericsでは静的なものしか無理。
954デフォルトの名無しさん:2005/07/21(木) 03:03:03
>>947
リターン値をオブジェクトにしとくと色んな型が返せて便利じゃないか。
Vector(テンプレート無しね)にしとくとさらにOK。

実話です。
955デフォルトの名無しさん:2005/07/21(木) 04:29:16
あいかわらずクズばっかりのスレですね^^
956デフォルトの名無しさん:2005/07/21(木) 10:37:14
class A<T extends MyClass> {
 private List<A> list;

 public A(){
  this.list = new ArrayList<T>();
 }

 public void add(T t){
  list.add(t);
 }
}
957デフォルトの名無しさん:2005/07/21(木) 10:59:02
質問です。
識者様回答をお願いします。

EventHandler1 h1 = new EventHandler1();
Button button1 = new Button();
button1.addActionListener(h1)

EventHandler2 h2 = new EventHandler2();
Button button2 = new Button();
button2.addActionListener(h2)

とした時、EventHandler1クラスのactionPerformedメソッドから
button2に登録したh2をremoveActionListener()で削除したい場合、
どのようにするのが一番スマートでしょうか?
イベント発生時に他のイベントリスナを削除するためには、
イベントソースとリスナが両方ともクラス変数でなければダメなんでしょうか?

回答、お待ちしています。
958デフォルトの名無しさん:2005/07/21(木) 11:35:01
すいません質問です
オラクルJDBCドライバを使ってオラクルに
アクセスするツールをSWINGで作りました。
コマンドラインから実行するとうまく動くのですが
jarに固めてダブルクリックで動かそうとすると
JDBCドライバのロードでぬるぽエラーがでます。
jarでダブルクリックで動かしたい場合、JDBCドライバの置き場所が決まってたりするのでしょうか?
959デフォルトの名無しさん:2005/07/21(木) 12:24:27
MANIFEST.MFに書いておかないとダメ
960デフォルトの名無しさん:2005/07/21(木) 12:32:39
>>959
レスありがとうございます
JDBCドライバも書くってことですか?
メインクラスはちゃんと書いてあります
961デフォルトの名無しさん:2005/07/21(木) 12:34:49
int index = 500;
double ary = new double[index];
double sum = 0;
//aryにデータをいれる作業を行う

for(int i=0;i<index;i++)
{
sum = sum + ary[i];

}
System.out.println("sum = "+sum);
という計算を行うとNaNという結果が出力されるのですが、どうしたらいいのでしょうか?
ちなみに、aryの中には0か極小さな数値が保存されています。
962デフォルトの名無しさん:2005/07/21(木) 12:42:25
>>980
そりゃmain()の場所を示すための記述ね。

jar内に入れたjar(...でいいんだよね?) にクラスパスを通すために、
クラスパスを通したいjarを書いておかないといけないんだよ。
実行時にjar内のどこにドライバがあるのかわからんから。
jar内に入れず外部に置いた場合でも、コマンドラインから通しておかないとダメでしょ。
それと同じ。
963デフォルトの名無しさん:2005/07/21(木) 12:43:42
(注意)
このスレで質問をしても回答が得られるのは2割程度です。
どうしても回答が欲しい場合は、新たにその質問のスレッドを立てましょう。
964デフォルトの名無しさん:2005/07/21(木) 12:49:20
>>963
単発質問スレは回答どころか叩かれて終わりの可能性が高い。
回答してもらえないのは、下記のどれかに該当する場合が多い。
・質問の内容そのものが不十分。問題点をちゃんと伝えられていない。
・試せばすぐわかることをわざわざ質問する
・ぐぐればすぐわかることをわざわざ質問する
965デフォルトの名無しさん:2005/07/21(木) 13:16:07
>>962
丁寧にありがとでした
試してみたす ペコリ
966デフォルトの名無しさん:2005/07/21(木) 13:49:09
jar内のjarにクラスパスって通せる?
やってみてだめだったんだが、やり方教えてくれー。
967デフォルトの名無しさん:2005/07/21(木) 14:11:39
jComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {    
System.out.println("actionPerformed()");
}
});
jComboBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent e) {
System.out.println("itemStateChanged()");
}
});
コンボボックスに上のようなイベントを追加してアイテムを新たに選択するとitemStateChangedの方だけ2度同じものが実行されてしまういます1度にしたいのですが、どうしていいかわかりません
みなさんはどのようにされていますか?

windows2000 + java 1.5.0.04
968デフォルトの名無しさん:2005/07/21(木) 14:13:37
展開して格納しろ
969デフォルトの名無しさん:2005/07/21(木) 14:31:44
>>961
ary のどっかに NaN が入ってるとか?

NaN + 0d の結果は NaN になるので。
970デフォルトの名無しさん:2005/07/21(木) 14:49:40
>>966
MANIFEST.MF に
Main-Class: org.hoge.Main
とか書いてるだろ? そんな感じで

Class-Path: . lib/commons-logging.jar lib/commons-lang-2.0.jar 〜
みたいにjar内の相対pathで書いておけばおk
971デフォルトの名無しさん:2005/07/21(木) 14:49:49
>>969
もしくはaryに正と負の無限大が入ってて、
足したらNaNになったとか。
972デフォルトの名無しさん:2005/07/21(木) 15:20:58
javaでコンパイルされるために、
  (side1)^2 = m^2 - n^2;
(side2)^2 = 2mn
Hypotenuse = m^2 + n^2;
はどのように書けばいいのでしょうか?
973966:2005/07/21(木) 15:40:51
>>968
いや>>962の記述を見て展開しなくても良くなったんだっけ?
と思ってしまったわけですよ。でやってみてだめだったと。

>>970
それで試してるんですけどねぇ・・・・。
974デフォルトの名無しさん:2005/07/21(木) 15:45:25
>>972
mとnについて求めりゃいいだろ
Java関係なくて、中学生の数学の領域だ
975デフォルトの名無しさん:2005/07/21(木) 16:12:16
>>972
Javaには累乗やってくれる演算子が無いから、
m^2 は m * m か Math.pow(m, 2) で書き直せば?

ってそーゆー事じゃなくて?
976デフォルトの名無しさん:2005/07/21(木) 18:17:16
すいません、Javaにおける動画の扱いについて教えてください。

Java Media Framework (JMF)というのがあるようですが、これを使えば、動画から
1コマずつを静止画像として取り出すことは可能なのでしょうか?動画のフォーマット
はquick timeとaviファイルです。aviのほうは中身が実際にどういうフォーマットなの
かわからないので、API任せにしたいのです。

すいませんがお願いします。
977デフォルトの名無しさん:2005/07/21(木) 18:48:14
>>923-925
コネクションプールの実装ってどこがやってるか知ってるか?
もうちょっと言うと、元の質問はサーブレットコンテナ変えたら動きが変わったという話だがちゃんと読んでるか?
978デフォルトの名無しさん:2005/07/21(木) 19:14:35
質問させて下さい。

java.awt.Image として得られたjpgなどの画像ファイルのイメージがあります。
Image img = Toolkit.getDefaultToolkit().getImage("ファイル名");
というような感じで取得するとします。ComponentのcreateImageでもいいです。

ここで、このimgインスタンスをいじくり回して、
「元の画像ファイルのサイズ(width, height)」を「画像の表示を行わない」で
取得したいのですが、方法をご存じの方がいらっしゃいましたら教えて下さい。

java.awt.Image#getWidth(ImageObserver observer) 等はもちろん知っていますが、
このメソッドは、observerが表示を行わないと-1しか返してくれないのです。
java.awt.image.BufferedImage#getWidth()も、BufferedImageに変換するときに
どのみちサイズを指定するので無意味でした。

引数に画像ファイルを指定するとサイズを返すコンソールアプリなどを考えています。
javaのバージョンは可能なら1.3.*でお願いします。
979デフォルトの名無しさん:2005/07/21(木) 19:52:44
思いつきで答えると
ダウンキャストしてBufferedImage#getHeight()呼ぶとか
980デフォルトの名無しさん:2005/07/21(木) 19:55:24
MediaTracker
getWidth(null)
981デフォルトの名無しさん:2005/07/21(木) 19:57:44
ありがとうございます。
ダウンキャストしてみたのですが、
java.lang.ClassCastException が出てしまいます…。

質問の補足ですけど、対象ファイルはラスタデータで、そのピクセルサイズを知りたい、
と言う事です。宜しくお願いします。
982デフォルトの名無しさん:2005/07/21(木) 20:00:25
>>978
普通に ImageObserver 使って調べたら?

個人的には素直に J2SE 1.4以降で imageio 使うなりする方が良いと思うけど。
983デフォルトの名無しさん:2005/07/21(木) 20:01:40
>>982
ImageObserver 使っても画像がロードされなければ通知は来ない。
984デフォルトの名無しさん:2005/07/21(木) 20:15:48
>>983
Windows + J2SE 1.3 で調べたけど読み込み完了したら通知来るよ。
AWT用のスレッドが動いたまんまで止まらないらしいので強制終了しないと止まらんかったけど。
985978:2005/07/21(木) 20:19:07
>>980
それでいけました!ありがとうございました。
Component cmp = new Canvas();
MediaTracker mt = new MediaTracker(cmp);

mt.addImage(img, 0);
try{
mt.waitForAll();
}catch(Exception e){}
int w = img.getWidth(null);

>>982
imageioが使えればハッピーなんですけど、
使いたい処理系が1.3のjreしか無いんですよ…

>>983
その通りです。それで困ってました。
986デフォルトの名無しさん:2005/07/21(木) 20:20:22
ImageObserver 使ってわざわざ非同期ロードを同期ロードと同じように使うなら
素直に MediaTracker 使えよ。
987デフォルトの名無しさん:2005/07/21(木) 20:23:32
>>986
MediaTracker 使うには Component が必要っしょ。
>>978 をやるなら Component が無い方が良いかなと思っただけ。
988デフォルトの名無しさん:2005/07/22(金) 00:02:35
>>977
Tomcatのコネクションプールの実装は、Jakarta Commons Pool と Commons DBCP。
java.sql.Connectionの実装は、JDBCドライバ。
わかってんのか?
989デフォルトの名無しさん:2005/07/22(金) 02:19:55
>>988
アホ? コネクションプールから取り出した Connection を getClass().getName() してみろよ。
そこに JDBC ドライバベンダーに関係する名前が出ると思ってんの?
990デフォルトの名無しさん:2005/07/22(金) 02:35:21
コネクションプールからとってきた Connection ってタダのラッパでしょ?
991デフォルトの名無しさん:2005/07/22(金) 02:45:47
だから、元の話の「サーブレットコンテナを変えたら例外が発生するようになった」
「2回目の close() が失敗する」という事を考えれば、JDBC ドライバではなくデータ
ソースの実装に問題があるんじゃないか、という話をしてるんじゃん。Connection
インターフェースのインプリ (たとえそれがラッパーでも) の問題じゃないかと。
そこへ「Connection の実装は JDBC ドライバ、Tomcat は関係ない」とか言う
勘違いが来ておかしくなった (いまさらそんな話をしていたのではないとか言うなよ?)。
992デフォルトの名無しさん:2005/07/22(金) 02:46:19
ラッパってのは意味が違うと思ーよ
993デフォルトの名無しさん:2005/07/22(金) 02:46:57
インプリなんて略す奴にロクなのはいないが
994デフォルトの名無しさん:2005/07/22(金) 02:47:58
>>993
他に言うことは無いんか?
995デフォルトの名無しさん:2005/07/22(金) 02:52:53
Commons Pool や DBCP でも Connection の実装してんだけどね (ラッパーだけど)。
何で java.sql.Connection の実装は JDBC ドライバ (これも意味不明だが) と限定してんだろ。
996デフォルトの名無しさん:2005/07/22(金) 02:59:05
コネクションプールがJDBCドライバから取り出したコネクションをそのまま
クライアント(呼び出し側の意味な。)に使わせてると思ってる奴がいるのに驚いた。
もう夏休みに入ったんだっけ?
997デフォルトの名無しさん:2005/07/22(金) 03:08:28
998デフォルトの名無しさん:2005/07/22(金) 03:09:26
999デフォルトの名無しさん:2005/07/22(金) 03:10:06
コネクションプールがラッパー返すことくらい知っとけ
1000デフォルトの名無しさん:2005/07/22(金) 03:10:46
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。