【初心者】Java質問・相談スレッド112【大歓迎】 at TECH
[2ch|▼Menu]
[前50を表示]
400:デフォルトの名無しさん
08/02/17 12:13:34
初心者相手にいちいち優位に立とうとするなよ。

401:デフォルトの名無しさん
08/02/17 12:43:04
Java初心者ってか対人関係初心者だけどなw

402:デフォルトの名無しさん
08/02/17 12:47:28
おまいも十分そう見えるが。

403:デフォルトの名無しさん
08/02/17 12:57:40
>>402
>>387本人乙。

404:デフォルトの名無しさん
08/02/17 13:14:00
そう思いたいのですね。

405:デフォルトの名無しさん
08/02/17 13:36:39
そのほうが面白いし。

406:デフォルトの名無しさん
08/02/17 13:37:24
そうか。

407:デフォルトの名無しさん
08/02/17 13:48:17
うん。

408:デフォルトの名無しさん
08/02/17 13:53:49
こ。

409:デフォルトの名無しさん
08/02/17 15:16:04
ころころうんこ

410:デフォルトの名無しさん
08/02/17 15:17:25
食物繊維取れ

411:デフォルトの名無しさん
08/02/17 15:39:49
普通にSunのページわかりにくい

412:デフォルトの名無しさん
08/02/17 15:46:13
非開発者向けではどう見てもないよな。
母さんにあそこから最新の JRE 落として入れろとはとても言えない。

413:デフォルトの名無しさん
08/02/17 16:01:35
ほんと、SUNにはもっと普及率を上げるための努力をしてもらいたい。
まずはインストールをもっと簡単にして。

414:デフォルトの名無しさん
08/02/17 16:50:00
>>1 のリンク死んでるな。というかサーバが停止してるようだが。

415:デフォルトの名無しさん
08/02/17 17:55:48
>>412
もっともです。テンプレっぽいのに追加で。

**** 開発環境が必要の場合は ****
>>5

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
URLリンク(www.java.com)

416:デフォルトの名無しさん
08/02/17 17:59:58
ム板なんだし JRE の落とし方はどうでも良くない?
かえって混乱すると思う。

417:369
08/02/17 18:54:29
なるほど!何とか理解できました。>374 さん thx

418:デフォルトの名無しさん
08/02/17 18:59:59
>>416
ところがEclipseを使うのにJDKは不要だ罠

新人研修等ではじめからEclipseでスタートする場合、
JDKを入れたことがないという人も出てきそうなご時世だね。

419:デフォルトの名無しさん
08/02/17 20:16:41
Arrays.sortを使って数値の配列をソートしたんですが
これってソート後の配列の添え字情報とかも取得できないんですか??

たとえば
ソート前
a[0]= 2
a[1]= 1
a[2]= 3
 ↓ ソート
ソート後
a[1]= 1
a[0]= 2
a[2]= 3

の[1],[0],[2]の情報を取得したいですー!何か方法ありませんかー!

420:デフォルトの名無しさん
08/02/17 20:25:55
その添え字情報を何に使うんだ?
ただ単に安定なソートがしたい、ってだけなら、

List<Integer> lst = Arrays.asList(2, 1, 3);
Collections.sort(lst);

でOKじゃない?

421:デフォルトの名無しさん
08/02/17 20:35:50
class Hoge { public int ソート前のインデックス; public int 値; }
こういうラッパーをかぶせてからソートすればいいんじゃね

422:デフォルトの名無しさん
08/02/17 21:09:07
>>419
一番高速なのは、quicksortのコードを自分でいじって実装することかな。
値をスワップするところで、添え字もスワップすればいい

423:419
08/02/17 21:09:52
>>420,421
返答ありがとうございます

hoge[0] = 3423
hoge[1] = 4123
hoge[2] = 4142

a[0]= 2
a[1]= 1
a[2]= 3

みたいにhogeにID、aに値を保存していて、それぞれ添え字で=を確認してたんです
(つまり添え字が0ならID;3423→2みたいにです)
あとaには同じ値がたくさんはいっているのでソート後に値で確認もできないんです。。。

もしかして他にいい保存方法あったりしますかね^^;

424:デフォルトの名無しさん
08/02/17 21:10:48
>>422
やっぱ自分で実装するのが一番早いですかね?。。

425:デフォルトの名無しさん
08/02/17 21:16:03
クラス使えよ
class IDAndValue { int id; int value; }
ソートはComparatorを自分で実装すればいいだけ

426:デフォルトの名無しさん
08/02/17 21:21:10
>>425
ありがとうございます
やってみます!

427:デフォルトの名無しさん
08/02/17 21:27:25
Comparableでもいいよ

428:デフォルトの名無しさん
08/02/17 22:31:34
ファイルを後ろから読み込むにはどうすればいいのでしょうか?
BufferedReaderのreadLineのように一行ずつ読み込めるものがあると良いのですが、、、

429:デフォルトの名無しさん
08/02/17 22:45:34
そんなに大きくないならListに全部読み込んで、後ろから取り出せば?

430:デフォルトの名無しさん
08/02/17 22:45:43
多分だけど、どうしてそれがしたいかを説明すると
よりハッピーになると思う

431:デフォルトの名無しさん
08/02/17 23:05:38
>>378
>>361のページに↓のようにいつ統計を採ったのかを書いてある
Millward Brown survey, conducted December 2007.
See Methodology Section for details on the Millward Brown study.

432:デフォルトの名無しさん
08/02/17 23:24:14
public ShortTimer t;
t.start();
これでタイマーが開始しましたが、再びここで
t.start();
すると実行時エラーになります。
そこで t が t.start(); されているかを知る方法を教えてください。

433:デフォルトの名無しさん
08/02/18 00:01:19
>>432
>>2 Good Luck!

434:デフォルトの名無しさん
08/02/18 01:07:55
428です。
後ろに行くほど新しい情報が書いてあるログファイルなので後ろから読み込めたらいいなと。
容量はそれほど大きくもないのですが、、、

435:デフォルトの名無しさん
08/02/18 02:22:54
>>434
それは tail コマンドと同じ機能っぽい印象を受けました。

そして、あまりに便利なコマンドだから、かっこいいことをしてるハズだ
と、そう思って検索してみました。すると…

勘違いしていました。tail.c
URLリンク(programamemo2.blogspot.com)

バッファサイズ決めて、(最初はファイル長を割って余った分だけ)ファイルから読み込んで
改行文字数を数えて、必要数たまったら、そのバイトから最後まで出力っぽい感じ。
ファイルが更新された時の処理も、そのブログ記事にあるとおりで、なんともはや…

436:デフォルトの名無しさん
08/02/18 02:36:16
んなもん tail の動き見てりゃ 1 秒ごとに監視してるだけくらい想像付くべ。
ファイルのケツから数kB〜数十kB ごとに読み込んで行数カウント、必要行数に
達したらそこから開始位置まで出力、達しなければその前のブロックを評価が定番。

437:デフォルトの名無しさん
08/02/18 08:34:15
class Test {
int sum(int[] date){
int r=0;
int i;
for(i=0; i<date.length; i++)
r += date[i];
return r;
}
}

public class sample34{
public static void main(String[] args) {
Test test =new Test();
int[] date1 = new int[]{1,2,3,4,5};
int result;
result=test.sum(date1);
System.out.println(result);
}
}
これで15が返ってくる理由教えてください。
私の考えはsum(int[] date)ここに{1,2,3,4,5}を入れるわけですよね?
でdate.lengthとなっているから、その個数5だと思うんですけど
すいません意味不明で・・・

438:デフォルトの名無しさん
08/02/18 08:54:32
配列のインデックスは0から始まる

439:デフォルトの名無しさん
08/02/18 09:21:12
>>437
配列型の変数 date の length は int型で、この場合の値は 5 です。よって
L5: i が 5 未満の場合、L6 へ進む。そうでなければL7へ進む。
L6: r と date[i] を加算し、r にその結果を入れる。(i に 1 加える。L5へ進む。)
L7: r を返す。
// 何をしてるかと言えば、配列の各要素の値を加算した値を返してるだけ。

よって、Test のインスタンスメソッド sum(int[]) に
date1 を入れて実行すると 15 が返される。
// 各要素の値、1 から 5 までを加算した値

後は手元の本などで for文の仕組みを調べ直してください。

蛇足。制御文 if, else, for, while, do-while の "{ }" を省略した場合、
直後の1文が制御対象になりますが、見易さや事故防止等の為、
省略しないことをお勧めします。

440:デフォルトの名無しさん
08/02/18 09:26:03
data.length
  Σ data[i]
  i=0

441:デフォルトの名無しさん
08/02/18 09:36:09
ありがとうございます。分かりました!!!
これからも勉強頑張っていきます!

442:デフォルトの名無しさん
08/02/18 13:40:38
TreeMapでデータをソートしたのですが
Entryで得たvalueとkeyをStringにキャストしてInteger.parseIntをつかってから
int型にしてint型変数に格納しようとするとkeyだけキャストできないというエラーが出てしまいます

原因がわかりませんー・・・

443:デフォルトの名無しさん
08/02/18 14:01:46
OSのタイムゾーン設定では日本時間なのに
JavaのデフォルトタイムゾーンがGMTになっています。
デフォルトのタイムゾーンってどこをいじれば変更できるのでしょうか?
環境はJava1.6.0_04 Windows 2003 です。

444:デフォルトの名無しさん
08/02/18 14:06:03
>>442
コードを見せてみれ
エラーメッセージも正確に

445:デフォルトの名無しさん
08/02/18 14:07:15
>>442
キャストできないエラーというのは、「Stringにキャストして」の部分なのでしょうか?
1.5以降ならジェネリクスをお勧めします。

原因としては TreeMap に格納する際に何型を使ったのか、が怪しいところです。

446:442
08/02/18 14:14:34
public class Sort {
public Sortdata sort(Difference dif){
int i = 0;
String change_sm = null;
String change_play = null;
Sortdata data = new Sortdata();
NumericComparator c = new NumericComparator();
TreeMap map = new TreeMap(c);
while(i < dif.number){
change_sm = Integer.toString(dif.sm[i]);
map.put(new Integer(dif.replay[i]), change_sm);
i++;
}
Set s = map.entrySet();
i = 0;
Iterator it=s.iterator();
while(it.hasNext()){
Map.Entry e = (Map.Entry) it.next();
change_sm = (String) e.getValue();
change_play =(String) e.getKey(); //getKeyだけキャストがおかしいというエラーがでる
data.sm[i] = Integer.parseInt(change_sm);
data.replay[i] = Integer.parseInt(change_play);
System.out.println(data.sm[i]+":"+data.replay[i]);
i++;
}
return data; }
class NumericComparator implements Comparator {
public int compare(Object o1, Object o2) {
int result=((Integer)o1).compareTo((Integer)o2);
if(result==0) result=1;
return result;
} } }

447:442
08/02/18 14:16:22
すいません初心者でコピペで作ったようなプログラムなのでどこを載せればいいのかわかりませんでしたTT
エラーは

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at Sort.sort(Sort.java:34)

行は書き込むときに編集してしまったので違うかもです
change_play =(String) e.getKey(); //getKeyだけキャストがおかしいというエラーがでる
とりあえず↑を指してます

448:デフォルトの名無しさん
08/02/18 14:21:41
そらだめだよ。
Integerで格納したんだから、Stringにはキャスト出来ない。

449:デフォルトの名無しさん
08/02/18 14:24:24
>>446
Mapにputするときはkeyの部分をInteger型で入れている。
Integer型なのにString型へキャストしようとするからエラーになる。

450:デフォルトの名無しさん
08/02/18 14:31:02
>>446
重ねてJ2SE1.5(5.0)以降ならジェネリクスをお勧めします。
ついでに autoboxing も機能するので更に見やすくなります。

> map.put(new Integer(dif.replay[i]), change_sm);
key が Integer, value が String。そりゃ key でキャストエラーになります。

以下蛇足。
・変数は使う直前で宣言すること。
・元が int型なら Integer だけにしておけば良いのに。
・初期化、比較、更新があるなら while ではなく for を使うように。
・ついでに初期化部で int i = 0; で宣言すること。(添え字の使いまわしは厳禁)

451:デフォルトの名無しさん
08/02/18 14:36:27
みなさんありがとうございます!
ジェネリスクも試してみようと思います><

452:デフォルトの名無しさん
08/02/18 14:37:10
>>443
set | find "TZ"
結果はカラ?

453:443
08/02/18 14:45:46
>>452
レスありがとうございます。
TZ=JST
とでます。

454:デフォルトの名無しさん
08/02/18 15:37:48
ネイティブインターフェイスの使い方を教えてください

455:デフォルトの名無しさん
08/02/18 15:42:34
>ネイティブインターフェイス
JNIのこと?

456:デフォルトの名無しさん
08/02/18 15:55:04
はい

457:デフォルトの名無しさん
08/02/18 15:59:29
>>454
これでも読んどけ
URLリンク(java.sun.com)

458:デフォルトの名無しさん
08/02/18 16:05:55
dllの作り方教えてください

459:デフォルトの名無しさん
08/02/18 16:10:42
それはJavaじゃないよ

460:デフォルトの名無しさん
08/02/18 16:11:22
わからない問題があったので教えてください

public class Test extends Thread{
private int i, j;
public synchronized void run(){
for(int count = 0; count < 2; count++){
i++; j++;
System.out.print("i=" + i + " : j=" + j + " ");
}
}

public static void main(String[] args){
new Test().start();
new Test().start();
}
}

A. i=1:j=1 i=1:j=1 i=2:j=2 i=2:j=2
B. i=1:j=1 i=2:j=2 i=1:j=1 i=2:j=2
C. iとjの値は出力されるが表示順は一意ではない

Testクラスは二つでき、runメソッドはそれぞれで動くため
AにもBにもなりえる(実際は何回やってもBになるが)と思ってCにしたんですけど答えはBでした
Aにはならないんでしょうか?

解説には「run()メソッドをsynchronized指定しているためrun()メソッド実行中は
他に制御が移ることなく処理されます」とあります



461:デフォルトの名無しさん
08/02/18 16:20:05
答はCであってます。
printの後ろに、
try { Thread.sleep(1000); } catch (InterruptedException e) {}
を追加して実行してみてください。

462:デフォルトの名無しさん
08/02/18 16:29:21
たぶんスレッドでの(i=1:j=1 i=2:j=2)の組の出力は保証されるということなのだろうけど、
どっちのスレッドかわからんよな、これ。
Aは間違い。でも、結果的に出力は必ずBになるなw

463:デフォルトの名無しさん
08/02/18 16:31:40
えー、保証すらされないだろ

464:デフォルトの名無しさん
08/02/18 16:33:05
>>461-462
ありがとうございます
安心しました

465:デフォルトの名無しさん
08/02/18 16:51:26
フルパスからファイル名を取り出す関数とかあれば
教えてください。
WinAPIのGetFullPathName()のようなやつがあれば・・・

466:デフォルトの名無しさん
08/02/18 16:53:02
File#getName()

467:デフォルトの名無しさん
08/02/18 16:54:52
>>466
快速的回答謝謝。

468:デフォルトの名無しさん
08/02/18 16:58:18
wikiのリンク切れてる・・・
だれか原因わかる人います?

469:デフォルトの名無しさん
08/02/18 17:05:24
リンク切れてるっつーか、ホスティングしてる wikiroom が
最近落ちまくり & ほったらかし & メール送っても無応答状態らしい。

470:デフォルトの名無しさん
08/02/18 17:07:32
>>469レスサンクス!

まじか…javacの設定方法探そうと思ったのに…

471:デフォルトの名無しさん
08/02/18 18:15:45
lass Test {
int m;
int n;

Test(int i,int j) {
m=i;
n=j;
}

Test(Test testC) {
m= testC.m;
n= testC.n;
}

int sum(int i,int j){
return m + n + i + j;
}
}
public class sample38{
public static void main(String[] args);
Test test = new Test(10, 5);
test.m++;
test.n++;
Test test2 = new Test(test);
System.out.println(test2.sum(2, 3));
}
}
このプログラムの中の
Test(Test testC) {
m= testC.m;
n= testC.n;
がある意味がよくわかりません。テキストを読んでいてもよく分からないので教えてください。

472:デフォルトの名無しさん
08/02/18 18:20:34
いわゆるコピーコンストラクタってやつ

473:デフォルトの名無しさん
08/02/18 18:25:06
コンストラクタのオーバーロードじゃね

474:デフォルトの名無しさん
08/02/18 18:27:44
Java 的には clone() だな。

475:デフォルトの名無しさん
08/02/18 18:33:51
JNIはどうすんの

476:デフォルトの名無しさん
08/02/18 18:35:42
>>471です。処理はどんな手順で進んでいくのですか?

477:デフォルトの名無しさん
08/02/18 18:58:35
どこまでわかるのか書け

478:デフォルトの名無しさん
08/02/18 19:08:06
オブジェクトはフィールド、メソッド、クラス、を持つとよく聞きますが、実際にオブジェクトを生成する際、フィールド以外の物も新たに作るのでしょうか?
それとも状態を持つのはフィールドだけなのでメモリにはフィールドのみを生成するのでしょうか?

479:デフォルトの名無しさん
08/02/18 19:13:44
フィールドのみと考えていい

480:デフォルトの名無しさん
08/02/18 19:13:48
クラスとメソッドはほぼ一体。最初にクラスを参照したときにメモリ上に現れ static 宣言
されたフィールドとメソッドを持つ。非 static フィールドはインスタンスごとに作成される。

481:デフォルトの名無しさん
08/02/18 19:16:33
>>479,>>480
素早く分かりやすい回答ありがとうございました。
ずっと気になっていたことだったので本当にすっきりしました。

482:デフォルトの名無しさん
08/02/18 19:23:08
>>477
Test test = new Test(10,5);
これを上の
Test(int i,int j) {
m=i;
n=j;
に入れて、つぎにmとnに1を足すまでは分かる。

Test(Test testC) {
m= testC.m;
n= testC.n;
これどんな処理してるん?


483:デフォルトの名無しさん
08/02/18 19:28:09
testCに渡された既存のTestオブジェクトの中身を
新しく作ろうとしてるTestオブジェクトにコピーしてる

484:デフォルトの名無しさん
08/02/18 19:35:35
Javaのコントロールパネルの出し方教えてくれ
どこにもなくて困ってる

485:デフォルトの名無しさん
08/02/18 19:36:35
test

486:デフォルトの名無しさん
08/02/18 19:37:48
どういうときにコピーコンストラクタは使うの?

487:デフォルトの名無しさん
08/02/18 20:09:37
オブジェクトをコピーしたいとき

488:デフォルトの名無しさん
08/02/18 20:14:13
必要なクラスやライブラリが増えるとクラスパスの設定が面倒になりますが、
自分が書いたソースのクラスファイルを格納してるフォルダに全て突っ込んじゃえばいいと思うんですが、
この考え方は間違ってますか?
例えばDBのJDBCドライバを使うにはCLASSPASSに追加するかtomcatのcommon/binに入れたりするけど
前者の場合、無関係なプログラムにも影響を及ぼすし、後者の場合はコンテナを変えたらまた作業が増える。
自分が作ってるサーブレットのクラスファイルを保存してる場所にJDBCドライバを入れちゃえば全て解決な気がする。

489:デフォルトの名無しさん
08/02/18 20:23:03
Javaのアルゴリズム本はどれがオススメですか?

490:デフォルトの名無しさん
08/02/18 21:36:42
>488
間違ってる
クラスが増えれば増えるほどクラスパスの設定の方が、クラスの競合とかの考慮より楽になる
そんなことよりIDE使っているなら面倒な作業にはならんだろ

491:デフォルトの名無しさん
08/02/18 21:41:45
プリミティブ型も実はクラスある?
判別のために例外的に形だけあるってことかな
int.classやらがあって驚いたわ。

492:デフォルトの名無しさん
08/02/18 21:47:16
Integer.TYPE

493:デフォルトの名無しさん
08/02/18 23:14:44
bolean b;
b=true;
?ここを教えてください。
(b==false)が新になる。

bolean b;
b=false;
?ここを教えてください。
(b==true)が新になる。

494:デフォルトの名無しさん
08/02/18 23:17:06
b=!b;

495:デフォルトの名無しさん
08/02/18 23:24:17
boolean

496:デフォルトの名無しさん
08/02/19 03:06:22
>>491
プリミティブ型はあくまでプリミティブ型で、そのクラスといったものはない。
あるのは、プリミティブ型を表すClassクラスのインスタンスで、各ラッパークラスで定義されている。
例えば、リフレクションAPIでメソッドの引数の型を指定する時などに使ったりする。

497:デフォルトの名無しさん
08/02/19 03:18:57
初心者用スレとはいえ質が低過ぎる
答える気すら起きん

498:デフォルトの名無しさん
08/02/19 08:17:12
画像ファイルを手動で振り分ける簡単なソフトを書いた。
表示して、設定してあるフォルダに振り分けるだけの簡単なソフトだ。
とりあえず、予定の作業は出来るようになった。

だが、アニメーションGIFの再生がおかしいことに気づいた。
「透過色」というのが上手く扱えていないようだ。

Toolkit.getDefaultToolkit().getImage("hoge.gif");で入手したImageを
JPanelから導出したクラスのpaint(Graphics g)でdrawImageにかけているだけなのだが、
何か足りないようだ。

足りない部分は簡単に補える?
それとも、意外に面倒?

499:デフォルトの名無しさん
08/02/19 08:29:49
ペイントコンポーネンツ

500:デフォルトの名無しさん
08/02/19 12:26:35
JSFの使い方を教えてください

501:デフォルトの名無しさん
08/02/19 13:44:08
>>500
Wikipedia項目リンク(%E6%88%A6%E9%97%98%E6%A9%9F)

502:デフォルトの名無しさん
08/02/19 15:50:00
すみませんが、質問です。

クラス継承についてですが、親クラス、子クラスに共通して、同名のパブリッ
クなインスタンス変数があり、その初期値は親と子で違うとします。

子クラスのインスタンスを作り、それを親クラスの型の変数に代入した場合、
その変数のインスタンス変数には、親の価が入っています。

public class Parent {
public String hoge = "親";
}

public class Child extends Parent {
public String hoge = "子";
}

Parent x = new Child();
System.out.println(x.hoge); // => 親
System.out.println((new Child()).hoge); // => 子

要するに、パブリックなインスタンス変数は、子によってオーバライドできな
いのです。メソッドと違って。

どうしてこれは、こういう言語仕様になっているのでしょうか?
メソッドのようにオーバライドできてもいいと私は思うのですが。


503:デフォルトの名無しさん
08/02/19 16:18:57
どうしてだろう・・・

Parent[] xArray = { new Child01(), new Child02(), new Child03()}
for( Parent x : xArray ) System.out.println(x.hoge);

みたいに同じ変数名にアクセスして子独自の値が取れたら便利そうだよね。

504:デフォルトの名無しさん
08/02/19 16:21:48
実装は面倒だし(というか汚くなる)、効率の問題もある。
何より、変数をそんなに便利(に見える)にしてしまったら、
マルチスレッドとか大変になる。
オブジェクト指向の原則も何もあったもんじゃなくなるだろうが。

505:デフォルトの名無しさん
08/02/19 16:24:14
>>502
子の方に新しいhogeを定義しなきゃいいんじゃ?

public class Parent {
public String hoge = "親";
}
public class Child extends Parent {
public Child(){ hoge ="子"; }
}
Parent x = new Child();
System.out.println(x.hoge); // => 子

506:デフォルトの名無しさん
08/02/19 16:24:37
フィールドの隠蔽は普通に出来てるんだから面倒も効率も関係ないだろ。

507:デフォルトの名無しさん
08/02/19 16:25:24
Javaはフィールドは静的解決だからだろ

以上

508:デフォルトの名無しさん
08/02/19 16:28:02
>>502
言語規定には、「フィールドアクセスのために動的に表検索する必要がないので
Javaは素直な実装でも効率が良い。遅延束縛と上書きはインスタンスメソッドが
使用されるときだけJavaで利用可能となる。」とある。
URLリンク(www.y-adagio.com)

509:デフォルトの名無しさん
08/02/19 16:29:50
付いていけん
馬鹿にも分かるように誰か説明してくれよ

510:デフォルトの名無しさん
08/02/19 16:31:04
フィールドは静的に(つまりコンパイル時に)解決できるから効率いいよね、ってこと。
>>506は何か勘違いしているから無視してOK

511:デフォルトの名無しさん
08/02/19 16:32:28
スレッドとか関係ねーじゃん。

512:デフォルトの名無しさん
08/02/19 16:34:33
フィールドアクセスにはsynchronizedで制限かけられないだろーが

513:デフォルトの名無しさん
08/02/19 16:36:19
つまり静的解決にすれば効率いいけど柔軟性に欠ける
動的にすれば柔軟性は上がるが実行時の効率が落ちる
そこでバランス取ってメソッドだけ動的にしたってこと?

514:デフォルトの名無しさん
08/02/19 16:37:23
フィールドを動的解決するとどんないいことがあるのか例を教えてくれ

515:デフォルトの名無しさん
08/02/19 16:38:39
まともな人と、ちょっと鈍い人と、どうしようもない馬鹿がいるっぽい

516:デフォルトの名無しさん
08/02/19 16:38:57
>>514
答:全部メソッドでできるので不要

517:デフォルトの名無しさん
08/02/19 16:40:31
何か主張があるようだが強烈な表現力のなさで何を言いたいのかさっぱりわからん。
「フィールドアクセス」 は行為であって主体じゃないから synchronized でモニタ取れるわけないだろ。
this かそれに順ずるインスタンスに synchronized かけろよ。

518:デフォルトの名無しさん
08/02/19 16:44:34
Hoge hoge = new Piyo();
synchronized (hoge) {
hoge.x = "";
}
いちいちクライアントサイドでこんなことしたく無いだろ?ってことが言いたかったんだが

519:デフォルトの名無しさん
08/02/19 16:47:53
>>518
それ hoge.x が Piyo のフィールドかスーパークラスのフィールドかは全く関係なくね? って事。
synchronized(hoge.x) とした時にどっちのモニター取ってるか分からなくなるというならともかく。

520:デフォルトの名無しさん
08/02/19 16:50:39
>>514
悪いことの方は、以下の場合コンパイルエラーを出さないといけなくなる。

class S { int x = 0; int z() { return x; } }
class T extends S { String x = "1"; }

521:デフォルトの名無しさん
08/02/19 16:52:26
それは関係ないけど、フィールドアクセスが動的だと、
何も考えずに使ってしまうようなやつが絶対いるだろ?
で、518のように書くやつなんているのか、と考えたときに、
いないだろうな、と。

522:デフォルトの名無しさん
08/02/19 16:58:11
フィールドがサブクラスから書き換えられないのって
単純に、フィールドはなるべく隠蔽されるべきって考え方からだと思ってたけど違うの?

523:デフォルトの名無しさん
08/02/19 17:00:49
書き換えられるよ、finalとかprivateじゃなければ

524:デフォルトの名無しさん
08/02/19 17:02:02
書き換えってオーバーライドのことね

525:デフォルトの名無しさん
08/02/19 17:04:11
親のフィールドをそのまま継承してるだけと、オーバーライドするのと、どう違うのか説明すれ

526:デフォルトの名無しさん
08/02/19 17:10:17
>>522
それは新しい話題? カプセル化の話?

上書き(override, オーバーライド)は動的処理。
仮にフィールドの動的処理が可能なら、カプセル化は簡単に崩壊する。
// メソッドを上書きせずに、フィールドだけ上書きすればよい。

527:デフォルトの名無しさん
08/02/19 17:13:37
privateメソッドがオーバーライドできないのと同じように、
privateフィールドもオーバーライドできなければ、別にカプセル化は壊れない
オーバーライドしたいのはprotectedとかpublicだけだろ?
隠蔽だかカプセル化だかとは別問題かと

528:デフォルトの名無しさん
08/02/19 17:24:14
誰が正しいことを言ってるのかカオスだわ。と言いつつ私は526だったり。
言語規定を貼る作業に戻りますm(_ _)m

529:デフォルトの名無しさん
08/02/19 17:32:47
さっぱりわからん
誰かねんどろいどに例えてくれ

530:デフォルトの名無しさん
08/02/19 17:34:36
状況が逆なら逆で適当に自分流の解釈始めるだけだから、
決めの問題的な話題なんてどうでも良いんじゃないのか。

531:502
08/02/19 18:38:57
どうやら収束したようなので、お礼を言わせていただきます。皆さん、ありが
とうございました。

意外に思うかもしれませんが、自分は最初の質問以外、一件も書き込んでいま
せん。自分の分からない点は全部、他の人がツッコんでくれました。このスレ
は時々利用させていただいてますが、こんなのは初めてです。

レスの全部が理解できたとは言えませんが、大変勉強になりました。

532:デフォルトの名無しさん
08/02/19 19:06:45
>>486
Javaによるアルゴリズム事典
おすすめ

533:デフォルトの名無しさん
08/02/19 21:35:53
開発ではeclipse使ってるんですが、
わざわざeclipse立ち上げるまでもないちょっとしたファイルを作ったり編集したりするためのエディタが欲しいです。
具体的には、html、java、jsp、ビルドxml、単なるテキスト文…こういったファイルを編集します。
メモ帳ではあまりにも使いづらいので他を探してるのですがオススメのものは無いでしょうか

534:デフォルトの名無しさん
08/02/19 21:53:56
豊丸

535:デフォルトの名無しさん
08/02/19 22:00:01
サクラエディタ

536:デフォルトの名無しさん
08/02/19 22:14:30
>>533
eclipseを立ち上げっぱなしにしておけばいいのでは?

537:デフォルトの名無しさん
08/02/19 22:14:58
vim だな。

538:デフォルトの名無しさん
08/02/19 22:33:13
Mule。
馴れれば結構使える(と思う)けど馴れるまでが大変(だろうな)

539:デフォルトの名無しさん
08/02/19 22:34:12
eclipseのエディタ機能だけ使うことが出来る?
わざわざプロジェクトとか作らないで

540:デフォルトの名無しさん
08/02/19 22:38:44
>>538
× Mule
○ Meadow


541:デフォルトの名無しさん
08/02/19 22:40:44
viとかvimって極度に嫌ってる人がいるよね
史上最悪のエディタだとか

542:デフォルトの名無しさん
08/02/19 22:42:03
んなこと言ってる時点で Sun の Java 使う資格はない。

543:デフォルトの名無しさん
08/02/19 22:42:55
史上最悪のコードというのなら分かるが
エディタとしては中毒性が高い。

544:デフォルトの名無しさん
08/02/19 23:08:38
viとvimって何が違うの?

545:デフォルトの名無しさん
08/02/19 23:13:26
機能差が歴然。

546:デフォルトの名無しさん
08/02/19 23:22:55
eclipseの補完機能が優秀過ぎるから他のどのエディタ使っても物足りなく感じる

547:デフォルトの名無しさん
08/02/19 23:29:55
お尋ねします。
SortedSetを使い、ソートさせ、表示にはtoStingを使っているのですが、"[""]"の表示が出てしまいます。このカッコを表示させない方法はありますか?
もしくは、違った方法でソートの結果を出力させられるのでしょうか?
教えていただける方、よろしくお願いします。

548:デフォルトの名無しさん
08/02/19 23:32:43
set.toString().substring(1, set.toString().length() - 1)

549:デフォルトの名無しさん
08/02/19 23:44:12
>>548さん、早速ありがとうございます。
最後にもう1つだけ質問ですが、2つの結果を出す際に、1つ目の結果と2つ目の結果の間の","を消す方法はあるのでしょうか?
たびたび申し訳ありませんがよろしくお願いします。

550:デフォルトの名無しさん
08/02/19 23:45:14
set.toString().substring(1, set.toString().length() - 1).replaceFirst(",", "")

551:デフォルトの名無しさん
08/02/20 01:52:59
>>539
Remote System Explorerプラグイン入れれば、ローカルや、Telnet、FTP、SSH経由で
ファイルシステムにアクセスできる。

>>547
toStringはデバッグ出力などで使うものであって、
特定の書式にしたいのなら、自力で出力すべき。

552:539
08/02/20 12:32:29
>>551
ありがとうございます!まさに探してた機能でした。

553:デフォルトの名無しさん
08/02/20 13:12:04
tomcatの起動について質問です。
現在linuxにtomcatを入れて開発を行っているのですが自動起動に失敗してしまいます。OS起動後に直接起動スクリプトを実行すると正常に起動します。

環境とバージョン
CentOS5.1 32bit/jdk6/tomcat6
ログには以下のような出力があります。
文字制限に引っかかるため一部省略します。
--
2008/02/20 11:47:00 org.apache.catalina.connector.Connector pause
致命的: プロトコルハンドラの一時停止に失敗しました
java.net.SocketException: Network is unreachable
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:209)
at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:486)
at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:283)
at org.apache.jk.server.JkMain.pause(JkMain.java:681)
at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
2008/02/20 11:47:01 org.apache.catalina.core.StandardService stop
情報: サービス Catalina を停止します
以下試したこと。
・自動起動を一番最後に持って行った(rc3.d/S99tomcat)
・F/Wの自動起動を停止
どなたか解決策をご存じの方がいたら教えてください。

554:デフォルトの名無しさん
08/02/20 13:14:38
eth0 起動してんのかよ。

555:デフォルトの名無しさん
08/02/20 13:31:36
>>554
eth0にグローバル、eth1にローカルを設定しています。

また、iptablesにてグローバルは25番のみIN/OUTを許可、ローカルは全て許可に設定しています。
iptablesの自動起動も止めてみたのですが、解決しませんでした。

556:デフォルトの名無しさん
08/02/20 19:00:05
アプレットに関する質問です。
アプレットを使って画像を表示させたいのですが、
アプレットビューアを起動するコマンドを打つと上手く表示されるのですが
html形式のファイルを直接開くと画像が切れて表示されてしまいます。
htmlファイルを直接開いたときに画像が切れないように表示させるには
どうすればいいでしょうか?
よろしくお願いします。

557:553
08/02/20 19:11:40
自己解決しました。
環境変数がちゃんと読めていなかったようです。

558:デフォルトの名無しさん
08/02/20 20:17:04
マイナスをプラスに反転させたいのですがどのように書けばいいのでしょう?
例えば-5を5にしたいです。
どなたかおたすけを・・・

559:デフォルトの名無しさん
08/02/20 20:18:13
x = -x;

560:デフォルトの名無しさん
08/02/20 21:17:13
Javaマルチスレッドで明示的にLockを書ける方法ってあります?

lock();
func();
unlock();

みたいな

561:デフォルトの名無しさん
08/02/20 21:44:07
どうとでも書ける

562:デフォルトの名無しさん
08/02/20 21:45:15
とりあえず計数セマフォ
URLリンク(java.sun.com)

563:デフォルトの名無しさん
08/02/20 21:49:58
>>592
それだ。サンクス

564:デフォルトの名無しさん
08/02/20 22:17:07
>>324
Tが一つのクラスだけだったらスーパークラスは一つだけですよ。

スーパーインターフェースなら妥当でしょうか

565:デフォルトの名無しさん
08/02/20 22:42:05
>>564
superclassとdirect superclassの違いも知らないのか?

566:デフォルトの名無しさん
08/02/20 22:43:08
direct superclass と言いたいだけとちがうか。

567:556
08/02/20 23:10:18
もう一度質問してもいいでしょうか(質問文が悪かった??)
アプレットを作るにはxxx.javaとxxx.htmlという2つのファイルを作りますよね
xxx.javaをコンパイルしてxxx.htmlというファイルに対してAppletviewerの
コマンドを実行してやるとその際に表示されるアプレットは画像が切れずに
キレイに表示されるのですが、xxx.htmlというファイルをクリックして
直接表示しようとすると画像が切れてしまいます。
画像が切れないように表示するためにはどうすればいいのでしょうか?
よろしくお願いします。


568:デフォルトの名無しさん
08/02/20 23:13:13
ソース

569:デフォルトの名無しさん
08/02/20 23:13:40
xxx.htmlでアプレット用に指定している幅と高さが画像を表示するには小さかったってオチ?

570:デフォルトの名無しさん
08/02/21 00:19:41
if(1<=x<=18 & y==0){〜処理
↑見たいな感じで"<="を使いたいんですけどどうしたらいいですか?

571:デフォルトの名無しさん
08/02/21 00:32:13
1 <= x && x <= 18

572:デフォルトの名無しさん
08/02/21 00:32:32
日本語にすると
xは1〜18のいずれかで、かつ
yは0
ってこと?

if( (x >= 1 && x <= 18) && y==0 )

573:デフォルトの名無しさん
08/02/21 01:36:17
>>569
ああ画像が切れるってそういう意味なのか。

574:デフォルトの名無しさん
08/02/21 10:26:40
質問です。

HashMap<Integer,String>[] map = new HashMap<Integer,String>[3];
という配列を作ろうとしたときに、コンパイルしようとしたら

汎用配列を作成します。

というエラーが出てしまいます。調べてみてもさっぱり理解できません。
よろしければご教授お願いします。

575:デフォルトの名無しさん
08/02/21 10:39:29
>>574
ジェネリクスはコンパイル時のチェック機能。
コンパイルした後は HashMap という型情報しか存在しない。
よって、その型の配列が作成される。

576:デフォルトの名無しさん
08/02/21 11:48:49
つ ArrayList<HasMap<Integer, String>>

577:デフォルトの名無しさん
08/02/21 15:47:43
tomcat5のJDBCレルム機構に対して、サーブレット内からプログラマが任意のタイミングでユーザ認証を済ませる方法を探しています。
contextA/auth/AuthServlet
contextA/noauth/NoAuthServlet
web.xmlで/auth/*を認証ゾーンとして指定。
NoAuthServlet内から、プログラマーが自前でユーザIDとパスワードを使って/auth/*ゾーンの認証を済ませたいのですが
どうすればできるでしょうか?
認証を済ませる=HttpServletRequest#getUserPrincipal() != nullという意味です。


578:デフォルトの名無しさん
08/02/21 16:00:26
質問です。
初心者丸出しの質問ですみません。

同じパッケージ内のクラスを使うにはどうしたらいいのでしょうか?
よろしければご教授お願いします。


579:デフォルトの名無しさん
08/02/21 16:15:59
>>578
それらのパッケージ名とクラス名は何でしょう?
それと、何を何処までやって出来なかったのか。

580:デフォルトの名無しさん
08/02/21 16:37:00
>>578
ところでマルチポストって知ってる?

581:デフォルトの名無しさん
08/02/21 17:15:41
質問です。
正三角形の中点を中心に1回転させるにはどうすればいいですか?
マルチスレッドとアフィン変換を利用して回転させたいんですが、角度を細くするほど誤差?で変形してしまいます。今のとこ30゜ぐらいが限界です!
下手文ですみません

582:デフォルトの名無しさん
08/02/21 18:03:50
独学でjavaを勉強してるのですが、データベースとの連携の手段が色々あり過ぎてどれを使えばいいのか分かりません。
JDBC、EJB、Hibernate、これらはどういう関係にあるんでしょうか?
例えばEJBを実装すればJDBCやHibernateは要らないのでしょうか?

自分が調べた限りでは、
実際の開発ではEJBが普通だが、小規模な開発ではHibernateを使い、もっと単純なものならJDBCで済ます
って印象なんですがこんな感じで当たってますか?

583:デフォルトの名無しさん
08/02/21 18:07:28
当たってね

584:デフォルトの名無しさん
08/02/21 18:26:46
abstract class Test {
abstract void calc(int i);
void printNum(int i) {
System.out.println(i);
}
}
class ExTest extends Test {
void calc(int i) {
int j=i*i;
printNum(j);
class ExTest2 extends Test {
void calc(int i) {
int j=i+i;
printNum(j);
public class sample46x {
public static void main(String[] args) {
int i =5;
int j;
Test[] ex_test = new Test[2];
ex_test[0]=new ExTest();
ex_test[1]=new ExTest2();
for(j=0; j<2; j++);
ex_test[j].calc(i);

これなんですけどコンパイルはできるんですけど、実行するとこんなの出ます。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at sample46x.main(sample46x.java:28)
どこが原因なんでしょうか?

585:デフォルトの名無しさん
08/02/21 18:36:37
}は省略してあります

586:デフォルトの名無しさん
08/02/21 18:38:24
>>584
>for(j=0; j<2; j++);
これだな

587:デフォルトの名無しさん
08/02/21 18:51:20
ありがと!気づかなかった!集中せねば!!!
渇っ!

588:デフォルトの名無しさん
08/02/21 19:23:00
EJBから同じホスト内のbatをたたきたいんですが、
どういう方法があるでしょうか。



589:デフォルトの名無しさん
08/02/21 19:24:44
RMIの使い方について詳しく教えてください

590:デフォルトの名無しさん
08/02/21 19:30:03
>>588
java.lang.Runtime#exec

>>589
URLリンク(java.sun.com)

591:デフォルトの名無しさん
08/02/21 19:33:26
>>590
Runtime#execはEJBからは使えないはず

592:デフォルトの名無しさん
08/02/21 19:40:43
>591
なんで?使えるよ、ふつーに

593:デフォルトの名無しさん
08/02/21 20:52:38
>>582
DB関連のAPIが林立しているのは、APIの進化変遷の跡。
最初から使い分けを意図して作られた物じゃない。
初期のEJBは詰め込みすぎで設計がクソで生産性が低いので、
小さくない規模の開発でも、Hibernateなどの他のマッピングフレームワークは使ってたよ。

594:デフォルトの名無しさん
08/02/21 21:38:57
質問させてください。

FileInputStream fis = new FileInputStream(file);
FileChannel srcChannel = fis.getChannel();
// 一つのデータは 2 byte (16 bit)
ByteBuffer buffer = ByteBuffer.allocateDirect(length * 16);
buffer.order(ByteOrder.LITTLE_ENDIAN);
// 読み込み
srcChannel.read(buffer);
srcChannel.close();
fis.close();
buffer.clear();
int ch1, ch2;
for(int i = 0; i < 1000; i++){
ch1 = buffer.get() & 0xff;
ch2 = buffer.get() & 0xff;
data[i] = (ch1 | (ch2 << 8)) & 0xffff;
}
buffer.clear();

int[] data という配列に
バイナリファイル中の符号なし short を読み込みたいのですが、
getShort() をつかったら、符号ありで読まれてしまったので、上のようなコード
でやっています。
処理が遅い(無駄計算が多い)気がするのですが、もっと良い方法はありますでしょうか


595:デフォルトの名無しさん
08/02/21 22:10:42
"แอมเพอร์แซนด์"

上記のような文字列が部分的に含まれているファイルを
SQLに入れる作業をしているのですが、
これを読み込むとunrecognized tokenエラーが出ます

このような文字の扱いはどのようにすればよいでしょうか


596:デフォルトの名無しさん
08/02/21 22:12:11
>>594
data[i] = buffer.getShort() & 0xffff
でダメかね?


597:デフォルトの名無しさん
08/02/21 22:33:16
>>595
ファイル読み込むときのエンコーディング正しく指定してる?

598:デフォルトの名無しさん
08/02/21 22:33:39
JAVAとC#どっちがリバースエンジニアリングに強い?
どっちも変わらない?

599:デフォルトの名無しさん
08/02/21 22:46:14
そんな高度なことできるやつがそんな質問するとは思えないのだが

600:デフォルトの名無しさん
08/02/21 22:47:40
強いってのはやりやすいって意味か?
それともやられにくいって意味か?

基本的にJavaはネイティブにしない限りソースへ復元は簡単な方
C#はどんだけネイティブ系使っているか次第

601:デフォルトの名無しさん
08/02/21 22:53:41
逆コンパイルはどっちも超簡単でほぼ完璧だよ

602:582
08/02/21 23:00:01
>>593
ありがとうございます。
色んなベンダから別々に色んな技術が生まれてカオスな状態という感じでしょうか
デフォになってるものも無いようなので自分で色々試してみます。

603:594
08/02/21 23:02:25
>>596
ああ、なるほどー。と思って実装してみたら、逆に少し遅くなりました。(データは正しく読めてました)
以下のようなコードを書いてベンチマークしても、やっぱり遅くなってましたorz
public class ReadTest {
public static final int length = 3800 * 2600;
public static int[] data = new int[length];
public static ByteBuffer buffer;
public static void main(String[] args){
try{
buffer = ByteBuffer.allocateDirect(length * 16);
buffer.order(ByteOrder.LITTLE_ENDIAN);
for(int i = 0; i < 20; i++){ read1(); read2(); read2(); read1(); System.out.print(".");}
long t = System.currentTimeMillis();
for(int i = 0; i < 10; i++){ read1(); }
System.out.println("\r\n" + (System.currentTimeMillis() - t) + " ms");
t = System.currentTimeMillis();
for(int i = 0; i < 10; i++){ read2(); }
System.out.println((System.currentTimeMillis() - t) + " ms");
} catch (Exception e){}
}
public static void read1() throws Exception{
FileInputStream fis = new FileInputStream(new File("hoge"));
FileChannel srcChannel = fis.getChannel();
for(int i = 0; i < 4; i++) fis.read(); // ヘッダ
buffer.rewind();
srcChannel.read(buffer); srcChannel.close(); fis.close(); // 読み込み
buffer.clear();
for(int i = 0; i < length; i++){ data[i++] = buffer.getShort() & 0xffff;}
}
/* read2 は読み込み部分が古いほう(省略) */
うーん、不思議ですねえ。 getShort() は遅いんでしょうか。。。
でかい画像を大量に処理していて、読み込みが25%くらい閉めているので、短くしたい・・

604:594
08/02/21 23:04:31
最終行の data[i++] は data[i] のミスです

605:デフォルトの名無しさん
08/02/21 23:05:21
>>600
やられにくいって意味でとらえてください

>>601
そうですか、使いやすくて良い言語だけど自分が作ったソフトが逆コンパイル
されるのは困るな

企業で開発するときは何か対策しているのでしょうか?

606:デフォルトの名無しさん
08/02/21 23:17:50
なんで困るんだ?

607:デフォルトの名無しさん
08/02/21 23:28:14
>>597
ありがとうございます
UTF-8で読み込んでいます

System.out.println("แอมเพอร์แซนด์");
これでエラーになるのはなんででしょうか

608:デフォルトの名無しさん
08/02/21 23:29:10
แอมเพอร์แซนด に一致する情報は見つかりませんでした。

609:デフォルトの名無しさん
08/02/21 23:57:00
こんばんは。
CDを管理するプログラムを作っているのですが、mainクラスとCDクラスがあります。
管理する数は、5つでその分のCDインスタンスをつくり、価格と名前のを入力しコレクションで管理すると言うプログラムです。(重複可で名前でソートさせます)
このプログラムを作ってみたのですが、Collections.sort(list);としたのですが、下線のびっくりマークのエラーが出てしまいます。
内容は、『型の安全性:型Collectionの総称メソッドsort(List<T>の未検査の呼び出しsort(List)がありました』と表示されてしまいます。
このようなエラー表示にはどのような対処をしたら良いのでしょうか?
アドバイスお願いします。

610:デフォルトの名無しさん
08/02/21 23:59:26
>>609
-source 1.4
をコンパイルオプションに付ける


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4258日前に更新/275 KB
担当:undef