[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 04/11 16:27 / Filesize : 251 KB / Number-of Response : 860
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:35:28 ]
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

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

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド98【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1171787388/

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

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

次スレは>>980あたりで。

357 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:51:39 ]
>>356
createTempFile だと、
prefix + "java.io.Fileが勝手に付加する文字列" + suffix って
名前のファイルを作っちゃわない? 二重起動防止にならんと思うけど。

あと、deleteOnExit だと、正常に終了できなかった場合はファイル残ったままになるよ。
もっとも、正常に終了できなかった場合にファイルを削除する方法は
今のところ提供されてないので二重起動の場合はダイアログだして
ユーザが選択できるようにした方が良いかも。v2c がやってるみたいに。

358 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:55:11 ]
>>355
Java では、 if(式) の式の部分は boolean じゃないとエラーになる。

if(s = "") の 「s = ""」って代入式の型は String なので、
コンパイラに boolean じゃないと怒られただけ。

359 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:00:25 ]
あらかじめ決めておいたポート番号のソケットをオープンできたら起動、
というのを見かけた。レースコンディションにはならないような気がする。

・異常終了したときの後始末はうまくできるんだろうか。
・ユーザー単位でのみ複数起動を禁止して別ユーザーなら起動を許す、
みたいなのは工夫が必要になるな。

RMI Registry(Activation)やJMXでなんかやれそうな気がしないでもない。


360 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:11:37 ]
>>357
ありがとうございます。
Preferences+ユーザー選択って感じにしようかな・・・。

361 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 19:13:45 ]
>>359
なるほど・・・ソケットは思いつかなかった。

362 名前:デフォルトの名無しさん [2007/03/12(月) 20:30:57 ]
synchronizedのブロックの適用が及ばない範囲、及ぶ範囲、そしてその理由について
わかりやすく教えてもらえませんか('A`)

同時に動くスレッド2個ぐらいで、、
HP5箇所ぐらい見たんですがいまいち理解できません



363 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 20:57:50 ]
>>357
俺は nio のファイルロックで判定した。

364 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 20:58:59 ]
356あてだった・・

365 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 21:05:56 ]
HashMapでClass<T>とList<T>を関連付けたいのですがいい方法はありませんか?



366 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 21:07:40 ]
>>365
HashMap<Class<T>, List<T>>

367 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 21:14:41 ]
>>366
あの……それだとHashMapをnewするときにTになにか入れないといけないけどそういう使い方を意図しているのではなくて。
T.classをキーにしてgetしたらList<T>型のオブジェクトが返ってくるようにしたいんです。
もしくはList型オブジェクトをなんかしてList<T>型にキャストするとか。

368 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 22:02:31 ]
>>367
「関連づけたい」という曖昧な言葉を使ったことへの反省はしないのね。


369 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 22:52:46 ]
>>368
反省しました

……ってなんて答えりゃいいかわからんそのあてつけみたいなのやめてくれよ……
一回で伝わらなかったら何度か説明する機会くらい与えてくれよ……
人格攻撃して話題そらしたいのか?

無理なら無理でいいよ別の方法考えるから……

370 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 22:55:18 ]
>>367
HashMapを継承した新しいクラスを作ればいい。

371 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:03:31 ]
>>370
Class<T>とTのときはそれでできたんだけど、(内部でHashMap<Class<?>,Object>に委譲して出口でclazz.cast(map.get(clazz))を返すようにした)
List<T>のときはどうやって実装すればいいかわからないんです。
Reflection周りでいろいろ探してはいるんですが……

372 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:06:28 ]
>>371
public <T> List<T> get(Class<T> c) {
 return (List<T>)get(c);
}

373 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:07:22 ]
間違えた。
return (List<T>)super.get(c);

374 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:17:47 ]
>>372
いけました。
ここで出る未チェックのキャストはアノテーションで強制的に黙らせる他ないんですよね?

375 名前:デフォルトの名無しさん [2007/03/12(月) 23:52:35 ]
switchの条件にlong型が使えないのはなぜなんでしょうか
char,short,int,enumは使えるのに

何か歴史的な理由があったりしますか?
効率?



376 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:10:08 ]
long は int に暗黙的にキャストできないから。

377 名前:365 mailto:sage [2007/03/13(火) 00:31:52 ]
ありがとうございました。
何とかうまくいきそうです!

378 名前:デフォルトの名無しさん [2007/03/13(火) 03:06:04 ]
//入力データ読み込みオブジェクトの

作成
BufferedReader myReader=new BufferedReader(
new InputStreamReader(System.in),1);
//敵出現メッセージ
System.out.println("敵が現れた。");
//味方、敵初期値
int mikata=5;
int teki=5;
while(teki>0){
//数値入力
System.out.println("どうする?1:攻撃、2:回復");
System.out.println("行動:");
//数値を読み取り、変数に代入
Int mystring =myReader.readLine();
Int koudou = Integer.parseInt(mystring);

と思われる部分で;が足りませんというエラーが出ました、どう修正すればいいのですか?

379 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 03:10:28 ]
・エラーメッセージはそのまま書く。改変されると推測が困難。
・ソースは必要な箇所を可能な限り原文に忠実に記述する。
 Int とか、「作成」から始まる行とか、何が正しいのか分からない。

380 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 16:28:12 ]
interface と abstract class の違いが良くわかりません。
interface でなければならない(もしくはその方がよい)場合、
また逆にabstract class でなければならない場合とは、
どんな場合なのでしょうか??

381 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 17:26:30 ]
Javaでは多重継承できないから属性を表すような実装はInterface
一方、デフォルト実装を与えたい場合などはabstract class

382 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 17:47:50 ]
このクラスは○○というメソッドを持っているよ→interface
このクラスをベースに○○というメソッドを使って機能拡張してね→abstract class

383 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 22:58:08 ]
型の継承 → interface
実装の継承 → abstract

384 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:05:27 ]
>>380
・ある性質に特有の処理が存在する。部分的に実装を共有できる。
 もしくはどうしてもある種の実装が必要だ。
(interface は実装をもてない。abstract class はもてる。)
・その性質の出現する場面が予想できる。もしくは限定した局面でしか使用しない。
(あとから再利用を試みる場合、interface の方が制約が少ない。
 abstract class だと、別のクラスの継承が必要な時にはもう使えない。)

上記を満たすなら abstract class。
制限をかけることによって(考えることを減らすことで)実装を容易にしたい場合も。

それ以外は interface。
interface の方がより純粋。制限が少なくて柔軟性が高い。
反面、実装の手間が多くなる。

最近は「とりあえずinterfaceにしとけ」な気がする。
実装に関してはヘルパークラスやテンプレートクラスを内包して、
そっちに処理を転送する方法で、継承と大差ない手間で済む。
その上で拡張性を保てる。

GUIフレームワークの基本部品なんかは abstract class ベースのものが多い。
画面表示に関する基本実装がどうしても必要とかそんなんだろうか。

385 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:08:57 ]
非オブジェクト指向言語だからといって
オブジェクト指向的にプログラムがかけないことはないように、
abstract class を interface代わりに使ってプログラムは書けるだろうけど、
そんな悲しいことは普通はしない。



386 名前:デフォルトの名無しさん [2007/03/13(火) 23:27:22 ]
x64で動作するeclipseってあったっけ?
もしくはjava用のIDE


387 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:34:38 ]
>>380
interfaceを作って、abstract で骨格実装(デフォルトの実装)を作って、
多くの実装クラスを骨格実装を継承するようにすると
柔軟な構造になるよ。ひと手間掛かるけど

388 名前:380 mailto:sage [2007/03/14(水) 00:14:01 ]
なるほど…
デフォルト実装の必要性と、プログラムの柔軟性との兼ね合いってことでつね。
みんなありがd

389 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:38:02 ]
>>333
不変クラスつくればいいだけだろう。
あれでconstなクラスは作れる。
無理って事は無い。

390 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:39:26 ]
>>324
配列の中身が書き換えられないように、
Collections.unmodifiableList()を使うとか、

clone()を使うとか、考えようぜ。
IBMのdwで、不変クラスで検索してみ。
constに相当するものを作る方法がのってる。
Wikipediaの「イミュータブル」でも検索してみると良い。

391 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:39:54 ]
>>327
しばらくスレを見ていなかったので>>322のことにまだ気づかなかっただけだ。

392 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:41:03 ]
>>332
それは、Effective Javaでは禁じ手とされているものだぞ。

攻めて、enum型にせよ。enumが駄目ならfinalでコンストラクタがprivateなクラスを。

393 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:41:49 ]
>>337
定数インタフェースは、勝手に実装されることがあるからやめとけ。

394 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:41:58 ]
public class Hello
{
public static void main(String args[])
{
System.out.println("Hello!");
}
}

395 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:43:43 ]
>>343
代替手段があるからいらないんだよ。
constは余計なゴミなんだよ。ゴミ。
全てを不変にしたくないときはfinalのほうが柔軟性が効くんだよ柔軟性が。
部分的に可変にしたほうがよいこともあろう。


>>345みたいな浅はかでお馬鹿なC言語厨には理解できないが。



396 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:44:43 ]
>>351
FindBugsを使え。そういう問題が起きても
困惑することは無くなるだろう

397 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:47:22 ]
>>375
switchは総ナメ野郎の糞だから


398 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:53:34 ]
>>395
防御的コピーって知ってる?
代替手段がないからこんなことしないといけないんだけど。

399 名前:デフォルトの名無しさん [2007/03/14(水) 01:06:51 ]
質問なんですが、下記のようにジェネリクスを使ったインタフェースを使って
実装クラスを書くと意図したように実行まで行えるのですが、
アノテーションを入れるとメソッドのオーバライドをしていないと怒られてしまいます。
これはアノテーションが間違っているのでしょうか?
それともアノテーションを使っていない方はたまたま実行まで出来てしまっただけで、
本来ならコンパイルが出来ないはずなのでしょうか。

public interface Base<T>{
    public void print(T data) ;
}

public Derived implements Base<Integer> {
    public void print(Integer data ) {
        System.out.println(data.toString() ) ;
    }
}

400 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:23:52 ]
>>399
Derived のメソッド定義に @override をつけたものとして話を進めるけど
それはオーバライドじゃないから怒られる。ジェネリクス関係ない。

401 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:42:18 ]
>>398
不変じゃなかったら、constつけてても防御コピーしなきゃだめだろ

402 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:56:36 ]
>>401
残念ながらC++のconstは防御的コピーする必要はない。

403 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:20:34 ]
勝手にコピーされるから?
不変でないオブジェクトは、明示的にせよ暗黙的にせよコピーしないと、
中にしまいこんだはずのオブジェクトを勝手に編集される可能性がある。

404 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:42:49 ]
不変バージョンと可変バージョンが1つのクラスで定義でき、
const つけると不変クラスとして使えるってことか?

たしかに、両方のバージョンをそれぞれ作るのは面倒

405 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:43:16 ]
超初心者です。。midiを内部で生成して再生するプログラムを作ろうと、ググっていて
java-house.jp/ml/archive/j-h-b/039552.html
の話を見つけました。確かに
  static byte test [] = new byte [] {0x7f, 0x80};
とやってみると、0x80以上を代入しようとすると「精度が落ちている可能性 期待値int」
とか言われてしまいます。

リンクにあるようにjpgBuff[j] = (byte)jpgBuff_i[j];で変換すると正しく扱えるようなのが不思議です。

>しかし int に入れておいて byte にするというのは、意味がないように
>思います。というか、int でできるなら byte でソースに埋めこんでも
>できなきゃおかしいですよね。ただ代入しているだけなんだし。何か
>その辺もおかしいのでは?
とあるように0xffまではbyteで扱えるはずですよね?

0x80以上をbyteな配列に代入するにはどうすればいいんですか?

何か勘違いをしているようでしたらご指摘をお願いします。。



406 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:58:05 ]
byte は 0 〜 255 じゃない



-128 〜 127 なんだよ……

407 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 03:04:54 ]
>>405
> とあるように0xffまではbyteで扱えるはずですよね?
違う。byteは -128〜127まで。
キャストを使って符号を無視するように明示しないかぎり byte では 255(0xFF) は扱えない。

> 0x80以上をbyteな配列に代入するにはどうすればいいんですか?
直接的にはキャストを使う。

間接的には String から byte配列に変換するようなユーティリティメソッド作るとか
"\u007F\u0080".getBytes("ISO8859-1"); みたいに文字列リテラル使ってみるとか。

408 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 03:21:44 ]
>>406-407
ありがとうございます。

>直接的にはキャストを使う。
java-house.jp/ml/archive/j-h-b/026824.html
を参考に  byte b = (byte)0xff;
でエラーが出ないことは確認できました。

配列の場合は
 static byte test [] = (byte []) new int [] {0x7f, 0x80};
とかやってみたんですが、どうもうまく行きません(変換できない型)
これは後出しで変換するしかないんでしょうか?

409 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 03:24:00 ]
static byte[] test = new byte [] { (byte)0x7f, (byte)0x80 };

410 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 03:33:54 ]
なるほど、確かにうまく代入されています。

ただ毎度面倒くさいし、見掛けも悪いのであらかじめ
-128 〜 127 の数値で扱うようにしておいたほうが
良いかも、と思いました。。。

ありがとうございました。

411 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 04:26:00 ]
UByte 型作っちゃいなYO

412 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 05:30:50 ]
ejbってもう誰も使ってないの?
みんなjspで力つきたのか? phpレベルの底辺が好きなんだね。

413 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 08:25:06 ]
>>412
ばかめ!EJB2は死んだわ!

414 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 09:01:03 ]
誰かこれを解説してください。
>3個の数字の並び替えの場合、その並び替えは 3! = 3 * 2 * 1 = 6通り、
>ですが、1回だけ shuffleを行う際に使っている j、k の選び方は 36 通りです。
>つまり、これが6通りの並び替えのどれかに対応します。
>しかしながら、 (36 ) ÷ ( 3 ! )は割り切れないのでどれかの並び方に偏ってしまうということがわかります。
blogs.sun.com/javaev/

415 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 09:31:16 ]
>>414
実際に並べかえてみりゃわかるよ。小学生並の解き方だけど。

例えば、
> for (int i = 0; i < a.length; i++)
を削った場合、j,k は 9通り(3^2)で、実際に並べ替えてみると
j=1::k=1:A、B、C, k=2:B、A、C, k=3:C、B、A
j=2::k=1:B、A、C, k=2:A、B、C, k=3:A、C、B
j=3::k=1:C、B、A, k=2:A、C、B, k=3:A、B、C

出現確率はこんな感じに偏る。
A、B、C::3/9,
A、C、B::2/9,
B、A、C::2/9,
B、C、A::0/9,
C、A、B::0/9,
C、B、A::2/9

続きは自力で。



416 名前:414 mailto:sage [2007/03/14(水) 09:37:37 ]
>>415
ありがとうございます。助かりました。

417 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:24:34 ]
作成したjarファイルを、JREが必要無い状態で、exe形式で実行したいと考えています。
検索してみたところ「JET」なるコンパイラが見つかり、
「パーソナルエディション」なら個人に限り無料で使用できると聞いたのですが、
公式サイト内を探してみてもパーソナルエディションが見つかりません。
ひょっとして配布終了してしまったのでしょうか?

418 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:36:12 ]
>>398
知っとるわい馬鹿

419 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:37:18 ]
>>402
constするとその内部にあるものまですべてfinalになるなら
部分的にconstにできるfinalのほうが柔軟性が良いんだけどね。



420 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:38:42 ]
>>417
ないっぽいね。exe化はあきらめて、JSmoothかexewrapあたりにしておくのが吉。

421 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:52:00 ]
double型からint型に変えるやり方はあるのですが
逆にint型らdouble型にかえるやり方があるのでしょうか?
一応double型からint型に変えるやり方を参考にして
やってみたのですがどうもエラーがでるようで・・・」

422 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:00:15 ]
何をやった。
意図していた結果 / 実際の結果

を具体的に書くといいぞ。

double doubleValue = (double)100; と書いたらコンパイル時に〜という
メッセージが出ました、とか。


423 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:16:08 ]
public class Henkan{
public static void main(String[] args) {
double s = 5.0;
int i = (int)s;
System.out.println(i);
}
}

これを参考にしてdoubleをint、intをdoubleにすれば変換できると
思いやってみたのですが結果
Henkan.java:3: 精度が落ちている可能性
検出値 : double
期待値 : int
int s = 5.0;
^
エラー 1 個

になってしまいまして、どうすればいいのがわからないです。


424 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:26:26 ]
>>423
ttp://www.google.com/search?rls=ja&q=java+int+double+%E5%A4%89%E6%8F%9B&ie=utf-8&oe=utf-8

425 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:27:15 ]

intとdoubleを入れ替えたということは
int s = 5.0; // A
double i = (double)s;
としたわけだな?

今回の目的はintをdoubleに変換することなんだよな?
Aの行で確かに精度が落ちている。
intなんだからただの5でないといけない。




426 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:27:40 ]
>>423
> int s = 5.0;
5.0 は浮動小数点リテラルで、型は double だから、
int に代入するにはキャストしないとダメ。
int s = (double)5.0;

もしくは、整数リテラルを使って
int s = 5;

427 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:28:32 ]
× int s = (double)5.0;
○ int s = (int)5.0;

428 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:39:05 ]
解決できました!みなさま即レスで返していただきありがとうございました!

429 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:43:22 ]
doubleにintを代入するときはそのまま入っちゃうのは、
情報欠落がないから。

プリミティブの
ワイドニング変換(widening primitive conversion)
ナローイング変換(narrowing primitive conversion)
というのを調べるといいかも。


430 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:53:17 ]
初心者はこのJava入門(Wikibooks)を読むべし

ja.wikibooks.org/wiki/Java/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%BA%96%E5%82%99


431 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:19:30 ]
>>417
gcjとかはどうよ?

432 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:40:46 ]
> doubleにintを代入するときはそのまま入っちゃうのは、
逆?

433 名前:417 mailto:sage [2007/03/14(水) 19:24:05 ]
>>420
>>431
ありがとうございます。>>431さんがおっしゃっているgcjを試してみたいと思います。
プログラム自体はSwingなんですが、gcjはSwingはダメなんですね。
この機会にSWTも勉強してみようかと思います。
ご親切にありがとうございました。

434 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:46:31 ]
>>433
JRE無しでないと駄目な理由は?
たぶん他の代替手段も、各種DLLが必要になってくると思うけど・・・

435 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:13:15 ]
>>429
doubleにlongを代入するとき、そのまま入っちゃうのは何故?
情報欠落があるのに。



436 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:23:36 ]
>>435
int→floatでも情報損失があるけど言語規定上問題なく拡大変換される。
プリミティブ型の拡大変換は情報損失の有無に関わりなくコンパイル時も実行時もエラーを発生させない。
だから、変換の可否は情報損失とは関係なく、言語仕様でそうなっていると言うべき。

437 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 00:59:22 ]
double d = Double.valueOf(args[i]);とdouble d = Double.valueOf(args[i]);の違いって何かあるんですか?

438 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:08:10 ]
>>437
その2つ、全く同じに見えるけど。

439 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:08:24 ]
なにもない

440 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 03:31:34 ]
他スレで質問したのですが、
スレの進行が滞っているのでこちらに書きます。

class C1{
}

class C2 extends C1{
  void f(){
    System.out.println("f() is executed.");
  }
}

class Example{
  public static void main(String args[]){
    C1 obj = new C2();
    obj.f();
  }
}

上記のプログラムをコンパイルすると、
「メソッド f() はclass C1 で見つかりません。」
というメッセージが出てコンパイルエラーとなりました。

あるクラスの変数によってサブクラスのオブジェクトを参照する場合、
そのオブジェクトが呼び出すメソッドは、スーパークラスでも宣言されている
オーバーライドメソッドでなければならないということですか?

441 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 03:51:11 ]
>>440
>    C1 obj = ほげほげ
>    obj.f(); 

2行目は、C1 の f() を探す。

442 名前:440 mailto:sage [2007/03/15(木) 04:33:07 ]
>>441
なるほど、あくまでその変数のデータ型に基づいてメソッドを選択するってことですね。
どうもありがとうございました!

443 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 09:46:06 ]
見つかって呼ばれるメソッドは変数のほうではなく、
オブジェクトに定義されているもの。


444 名前:デフォルトの名無しさん [2007/03/15(木) 12:12:22 ]
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(name)));
try {
...
} finally { reader.close(); }

とかって、素直で読みやすいコードだと思うんですが、
InputStreamReader や BufferedReader のコンストラクタで例外が発生したら
name のファイルが開きっぱなしになってしまいますよね?
(実際はもっと複雑なフィルタがかぶさってます。)

↓みたいに FileInputStream だけ別の変数にしとかないといけないんでしょうか?

FileInputStream file = new FileInputStream(name);
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(file));
try {
...
} finally { reader.close(); }
} finally { file.close(); }

close() がダブってるんでキモイのと、これだともしかしてさらに
InputStreamReader でもう一段 try しないといけないのかも・・・と、
なんだか釈然としないです。

445 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:27:25 ]
以下のようなソースがあった場合、
readerでIOExceptionを発生させるには読み取り権限がないファイルを渡すことでテスト
FileNotFoundExceptionを発生させるには存在しないファイルを渡すことでテストしようと思いますが
writerでIOExceptionやclose()メソッドでIOExceptionが発生した場合、
JUnitでどんなコードを書いたらよいのかがわかりません
よろしくお願いします
public String read(String name) {
  Reader reader = null; StringWriter writer = null;
  File file = new File(name);
  try {
    reader = new InputStreamReader((new FileInputStream(file)));
    writer = new StringWriter();
    int c;
    while ((c = reader.read()) != -1)
      writer.write(c);
    return new String(writer.toString());
  } catch (FileNotFoundException e) { System.out.println(e.getMessage());
  } catch (IOException e) { System.out.println(e.getMessage());
  } finally {
    try {
      if (writer != null)
        writer.close();
    } catch (IOException e) { System.out.println(e.getMessage()); }
    try {
      if (reader != null)
        reader.close();
    } catch (IOException e) { System.out.println(e.getMessage()); }
  }
  return null;
}



446 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:29:56 ]
>>444
tryブロックの外で、closeすべき変数を null を初期値とし、まとめて宣言する。
finally で、null チェックして逆順に close を呼び出す。というのはどうでしょう

ラップしてる変数の close 処理がうまくいくことを前提にするなら、
if文をネストして、null ではない一番外側の変数だけでcloseを呼び出す。
と言うのもありかも?

447 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:33:56 ]
>>444
1.5 以降なら、
www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36027&forum=12&start=15
の、かつのり氏の StreamUtils#close みたいなユーティリティメソッド作って、

FileInputStream file = null;
BufferedReader reader = null;
IOException e = null;
try {
 file = new FileInputStream(name);
 reader = new BufferedReader(new InputStreamReader(file));
 //....
}catch(IOException ex){
 e = ex;
}finally{
 StreamUtils.close(e, reader, file);
}
みたいにするとか。

1.4までだと java.io.Closeable がないから この方法は使えないんだけどね。

448 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:45:55 ]
>>445
InputStream を渡すメソッドだったら簡単だけど。
djUnit の Virtual Mock Objects 使ってみるとか?

449 名前:デフォルトの名無しさん [2007/03/15(木) 14:13:34 ]
質問です

画面に文字列を出力させるときに、その表示を一文字ずつ
順番に表示させるのって可能ですか?

例:ありがとう
と出力させるとしたら、「あ」が表示されて、少し待って「い」
みたいな感じです

450 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 14:21:45 ]
可能不可能でいえば可能。

画面てのがコマンドプロンプトなどのキャラクタ表示装置なのか
ウィンドウなのか、ウィンドウの中のテキストフィールドなのか
などによってやり方は違う。


451 名前:デフォルトの名無しさん [2007/03/15(木) 14:43:08 ]
アプレット上にパネルを置いて、そのパネルでmouseWheelMovedイベントを拾うプログラムを作っているのですが
アプレットの外の部分(HTMLで文字などを表示してるところ)をマウスクリックすると
パネル上でマウスホイールを回してもmouseWheelMovedイベントが来ません。
何が問題なのでしょうか?


452 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:20:00 ]
Java 1.6.0のソースのStringの部分を眺めていたら、public String toUpperCase(Locale locale)の部分(2556行)に

/* Now check if there are any characters that need to be changed. */
scan: {
for (firstLower = 0 ; firstLower < count; ) {
(ry
}

という部分があったのですが、このscan: {}はどういう意味ですか?

453 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:38:36 ]
>>451
自分のウインドウの外の出来事を、しかもアプレットが知ることが出来たらやばくね?

>>452
ラベル:
ループの中でbreakやcontinueしてたりしない?



454 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:53:03 ]
>>453
そうでなくて
パネル上にカーソル移動→マウスホイール動かす→イベント上がる
のに
パネルの外をクリック→パネル上にカーソル移動→マウスホイール動かす→イベント上がらず
ってことです。


455 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 18:14:23 ]
マウスホイールって入力フォーカスのあるコントロールに通知されるんじゃなかったっけ?
なんかそれを変更するツールがあったよーな。



456 名前:デフォルトの名無しさん [2007/03/15(木) 19:29:56 ]
すみません、質問なのですが。自分、去年末あたりからプログラミング(java)
を学び始めたのですが、DBをjavaのプログラミングで弄る技術は必須でしょうか?


457 名前:デフォルトの名無しさん [2007/03/15(木) 19:37:35 ]
>>456 使わないなら不要、使うなら必要。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<251KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef