トップページ⇒tech
1001コメント273KB

★★Java質問・相談スレッド165★★

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/20(日) 19:30:39.35
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

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

前スレッド
★★Java質問・相談スレッド164★★
http://toro.2ch.net/test/read.cgi/tech/1378219684/
0357デフォルトの名無しさん2013/11/05(火) 01:35:35.37
スレ汚しすまんね。
void load(File f)throws IOException,NullPointerException
{...}
0358デフォルトの名無しさん2013/11/05(火) 01:36:21.44
もうだめだ地獄だ。357は間違っている。
0359デフォルトの名無しさん2013/11/05(火) 01:36:54.32
>>327と>>333が質問者のレスだから両方読んでから回答してね(>>337の回答でFAだけどね)
0360デフォルトの名無しさん2013/11/05(火) 01:37:29.35
tryの行で失敗するってことはないのん??
0361デフォルトの名無しさん2013/11/05(火) 01:38:00.13
構文であるtryが失敗ってどういうこと?
0362デフォルトの名無しさん2013/11/05(火) 01:39:05.45
�@のコードの

Reader reader = new FileReader("a.txt");
// ここに何か処理があったらreaderのclose()のフォローができない
try {

って話をしたいの?
0363デフォルトの名無しさん2013/11/05(火) 01:44:11.30
自分以外の誰か、あるいは自分がうっかりして、そこに失敗の危険性のあるコードを書き足したらヤバいな
0364デフォルトの名無しさん2013/11/05(火) 01:45:14.39
構文であるtryが失敗する心配をするならfinallyが失敗する可能性も検討しないと、finallyが呼び出されず異常終了したらcloseされないじゃん!って
0365デフォルトの名無しさん2013/11/05(火) 01:46:47.96
いや、try って多分例外が発生したときのためにスタックをどこまで巻き戻すかとかやってると思うんだけど
0366デフォルトの名無しさん2013/11/05(火) 01:51:06.65
構文であるtryが内部で何をやってようとJavaプログラマがそこを配慮する必要は全くないだろJK
0367デフォルトの名無しさん2013/11/05(火) 01:54:02.55
try自体の失敗にビビったら何のメソッドも呼び出せなくなるだろ、呼び出し先のtryでシステムエラー投げられたってどうしようもないぜ
0368デフォルトの名無しさん2013/11/05(火) 02:00:26.00
メモリのスタックサイズを気にするような環境でJavaを使うのか
0369デフォルトの名無しさん2013/11/05(火) 02:51:32.05
>>172
0370デフォルトの名無しさん2013/11/05(火) 03:42:42.31
test(cursor c1){
Cursor c2 = c1
c1.close
}

こんな感じのコードを書いたんですが、
c1をクローズするとc2まで閉じちゃうんです。代入ってコピーするんじゃなくて、メモリで持ってるインスタンスそのものにアクセスするエイリアスみたいなものなんでしょうか?
0371デフォルトの名無しさん2013/11/05(火) 03:47:11.09
ハードリンクみたいなもんだよ
0372デフォルトの名無しさん2013/11/05(火) 03:48:12.72
ハードリンク - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%BC%E3%83%89%E3%83%AA%E3%83%B3%E3%82%AF
0373デフォルトの名無しさん2013/11/05(火) 03:52:34.53
Object obj1 = new Object();
Object obj2 = obj1;
obj1 = null; //obj2はnullにならない

もしエイリアスなら、obj2はobj1と同じ物を指さないといけないからobj1をnullにしたならobj2もnullにならなければならない
0374デフォルトの名無しさん2013/11/05(火) 03:55:30.80
む、、、難しい。
0375デフォルトの名無しさん2013/11/05(火) 03:58:04.78
コピー姿態ならメソッドclone()が必要かも
0376デフォルトの名無しさん2013/11/05(火) 03:59:04.42
Human tom = new Human(); //新しい人間を1人作ってそいつにtomというニックネームをつけた
Human joe = tom; // tomとニックネームをつけた人間にjoeというニックネームもつけた
tom = null; //tomというニックネームを使うのをやめた

インスタンスの概念
0377デフォルトの名無しさん2013/11/05(火) 04:03:43.13
>>376
ジョーさんはその後もトムという通名を使ってるのですか?
0378デフォルトの名無しさん2013/11/05(火) 04:05:27.30
>>377
それは違うよ、本人がtomやjoeと名乗ってるわけじゃない、周りが勝手にtomやjoeと呼んでるだけなんだよ
0379デフォルトの名無しさん2013/11/05(火) 04:10:58.85
プロレスラー 武藤 = new プロレスラー()
プロレスラー ムタ = 武藤
ムタ = null ムタ止めた
武藤.dead 武藤(ムタ)は引退した

こ・・・こういうことか 理解した 
0380デフォルトの名無しさん2013/11/05(火) 04:16:45.78
Human tom = new Human("Jack"); //新しい人間(本名Jack)を1人作ってそいつにtomというニックネームで呼ぶことにする
Human joe = tom; // tomとニックネームをつけた人間(Jack)にjoeというニックネームでも呼ぶことにする
tom = null; //tomというニックネームで誰かを呼ぶことをやめる、tomというニックネームで呼ばれる人間はいなくなる (Jackはもうtomとは呼ばれない)
tom = new Human("Cindy"); //別の新しい人間(本名Cindy)を作ってそいつをtomと呼ぶことにする

Foo(tom); // Fooメソッドに tom と呼んでる人間(Cindy)を引数として渡す

void Foo(Human bob) { //引数で渡された人間を Fooのメソッド内では bobというニックネームで呼ぶことにする
}
0381デフォルトの名無しさん2013/11/05(火) 04:21:59.03
Human tom = new Human("Jack"); //新しい人間(本名Jack)を1人作ってそいつにtomというニックネームで呼ぶことにする
Human joe = tom; // tomとニックネームをつけた人間(Jack)をjoeというニックネームでも呼ぶことにする
tom = null; //tomというニックネームで誰かを呼ぶことをやめる、tomというニックネームで呼ばれる人間はいなくなる (Jackはもうtomとは呼ばれない)
tom = new Human("Cindy"); //別の新しい人間(本名Cindy)を作ってそいつをtomというニックネームで呼ぶことにする
Foo(tom); // Fooメソッドに tom と呼んでる人間(Cindy)を引数として渡す
tom.die(); // tomと呼ばれてる人間(Cindy)を死なす
joe = null; // joeというニックネームで誰かを呼ぶことをやめる、joeというニックネームで呼ばれる人間はいなくなる、また同時にJackをニックネームで呼ぶ者がいなくなったためJackは失踪する
joe.die(); // joeと呼ばれてる人間はいないので存在しない者を死なすことは出来ない

void Foo(Human bob) { //引数で渡された人間を Fooのメソッド内では bobというニックネームで呼ぶことにする
}
0382デフォルトの名無しさん2013/11/05(火) 04:28:49.67
荒らすな雑魚
0383デフォルトの名無しさん2013/11/05(火) 05:12:16.69
>>382
        ノ ⌒γ⌒)
      ((       (
     (          )
     )          ヽ
    ノノ           ))
   (    ノノ   ノノ    )
  (((   ノ乂ノノ从 人乂  ヽ
   )  )ノノ__」」__|   )
  (   )) (●) |(●)/(  ))
  ))   (   ノ | ヽ | )ノ    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( メ  ヽヽ   」  / ノ   <  え!ここ荒らしちゃいけないの!?
 ((乂  ノノ | llllllllllllll ノノ )     \________
   ((乂  ヽヽ ++++ノノノ)((
     ヽ乂  ヽ  ̄ ̄/ ノ
          ヽllllllノ
0384デフォルトの名無しさん2013/11/05(火) 05:19:39.58
どんどん書き込んでね
0385デフォルトの名無しさん2013/11/05(火) 05:42:37.68
アンドロイドはすれ違い
0386デフォルトの名無しさん2013/11/05(火) 06:10:49.45
変数とは認識。
0387デフォルトの名無しさん2013/11/05(火) 06:39:30.78
馬鹿には無理
0388デフォルトの名無しさん2013/11/05(火) 08:42:01.61
>>296
0389デフォルトの名無しさん2013/11/05(火) 23:37:37.99
JNIの技術使えばandroid携帯の色々な機能が使えたりする?
0390デフォルトの名無しさん2013/11/06(水) 01:50:55.99
色々な機能が使えるよ
0391デフォルトの名無しさん2013/11/06(水) 02:36:56.28
Jarファイル内にDLLを入れてJNIでアクセスすることできる?
0392デフォルトの名無しさん2013/11/06(水) 03:07:41.31
JNI で DLL, SO 等のネイティブライブラリを JAR に含めるには|てくめも@ecoop.net
http://www.ecoop.net/memo/archives/2007-02-17-3.html

Javaで標準以外のライブラリを使用したプログラムを他のPCで動か.. - 人力検索はてな
http://q.hatena.ne.jp/1288867770

Jar ファイルを持つネイティブ dll をバンドル
http://ja.softuses.com/218163

コンピュータ職の徒然日記 - Yahoo!ブログ
http://blogs.yahoo.co.jp/shikakuit/archive/2011/08/25

View Source Native code and classloaders
http://jiemamy.org/plugins/viewsource/viewpagesrc.action?pageId=2162771

Oracle CEPアプリケーションのアセンブルとデプロイ
http://docs.oracle.com/cd/E28389_01/dev.1111/b61654/deploy.htm
0393デフォルトの名無しさん2013/11/06(水) 06:09:41.09
ヒマ人だなお前w
0394デフォルトの名無しさん2013/11/06(水) 06:47:25.39
>>391
直接は出来ない。MANIFEST.MFをごにょごにょすれば出来るとかは基本的に迷信。
getResourceAsStream等でJAR内のDLLを一端テンポラリディレクトリ等に書き出して
System.loadで読み出す必要がある。
0395デフォルトの名無しさん2013/11/06(水) 08:14:15.89
>>392
そーゆーのはブログでやって
0396デフォルトの名無しさん2013/11/06(水) 08:47:18.80
XML使うときってどのライブラリ使うのが一般的というか簡単ですか?
0397デフォルトの名無しさん2013/11/06(水) 09:07:44.30
java
0398デフォルトの名無しさん2013/11/06(水) 09:10:24.16
>>196
重くても楽がいいなら標準DOM
でなきゃ標準SAXで
0399デフォルトの名無しさん2013/11/06(水) 09:16:47.25
rhino上のjQuery経由
0400デフォルトの名無しさん2013/11/06(水) 09:50:30.21
馬鹿には無理
0401デフォルトの名無しさん2013/11/06(水) 09:55:47.17
pull型最強
0402デフォルトの名無しさん2013/11/06(水) 10:03:07.83
Pullはいかにも手続き型って感じで嫌だ
0403デフォルトの名無しさん2013/11/06(水) 12:12:43.18
アホには無理
0404デフォルトの名無しさん2013/11/06(水) 12:27:38.42
java.util.Dateのメソッドは非推奨ばっかりなんですが
日付を扱う場合はCalendarクラス
時刻を扱う場合はDateFormatクラス
を使うのが定番でしょうか?

Java7のドキュメントのこのページ見ながら勉強してます
http://docs.oracle.com/javase/jp/7/api/java/util/Date.html
0405デフォルトの名無しさん2013/11/06(水) 12:32:30.20
ガンバって勉強して下さい
0406デフォルトの名無しさん2013/11/06(水) 12:41:03.38
>>404
いいえ。
0407デフォルトの名無しさん2013/11/06(水) 12:56:44.63
util.Dateを使えって事ですか?
0408デフォルトの名無しさん2013/11/06(水) 13:12:55.70
Date は、地域や暦によらない不変の日付時刻を表す
Calendar は、ある特定の地域と暦における年月日時分秒を表す
例えば、日本時間における西暦2013年11月6日12時27分38秒は、
アメリカ東海岸では西暦2013年11月5日22時27分38秒になる
Date は特定の地域や暦に結びついていないので、 Date 的にはどちらも等しい
同じ Date をまた別の地域や暦の Calendar にセットすれば、その地域や暦に応じた年月日時分秒になる
0409デフォルトの名無しさん2013/11/06(水) 15:11:41.13
未だに日付関連APIすらまともに使えないって…
初心者未満のレベルだってことを自覚した方がいいぞ
0410デフォルトの名無しさん2013/11/06(水) 15:51:44.98
質問スレで上から目線()
0411デフォルトの名無しさん2013/11/06(水) 17:04:27.24
Runnableのような単一のメソッドのみ持ったインターフェースを、コールバック用の
関数っぽく扱うために(メンバ変数などを持たせずに)、runメソッドのみを実装することに
なると思うんですが、そのような関数のためのインスタンスでも、いちいちヒープ領域に
インスタンスを作ったり開放したりするコストなどがかかるのでしょうか?

同じようなモノをJava8で追加されるラムダ式で実現すると、static finalで作った関数と
同程度の最適化が起こると聞いたので気になります
0412デフォルトの名無しさん2013/11/06(水) 17:09:42.88
ゆっくり休んだほうがいいぞ
0413デフォルトの名無しさん2013/11/06(水) 17:12:14.31
だなw
0414デフォルトの名無しさん2013/11/06(水) 17:20:30.01
>>408
詳しい解説ありがとうございます
Calendarでやってみたんですが日本の日時になってくれません

TimeZone tz = TimeZone.getTimeZone("Asia/Tokyo");
Calendar calendar = Calendar.getInstance(tz);
System.out.println(calendar.getTime());
System.out.println(calendar.getTimeZone());

いくつかのオンラインでためしてみたのですが時間がずれてしまいます
http://www.browxy.com/
http://www.compileonline.com/compile_java_online.php
0415デフォルトの名無しさん2013/11/06(水) 17:32:17.98
>>414
getTime の戻り値は Date
Date は地域に結びついていないと言った
Calendar の年月日時分秒は get で取る
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH) + 1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.SECOND));
0416デフォルトの名無しさん2013/11/06(水) 17:48:17.65
馬鹿には無理
0417デフォルトの名無しさん2013/11/07(木) 03:02:13.62
JavaDBを使ったアプリを作って配布する際にJavaDBのファイルを含めないとアプリをダウンロードしたユーザはアプリを使えないよね?
JavaDBのファイルってアプリに含めて配布してもいいのかな?どのファイルをアプリに含めればいいんだろ
0418デフォルトの名無しさん2013/11/07(木) 06:38:48.39
java初心者で申し訳ないですが質問です。

public class Sample2 {
public static void main(String[] args) {
int count=5;


while (count !=5&&count>0){
System.out.println("while :count=" +count);
count--;
}


do{
System.out.println("do-while : count="+count);
count--;
}while (count!=5&&count>0);
}

}

で結果が

do-while : count=5
do-while : count=4
do-while : count=3
do-while : count=2
do-while : count=1

になるのですが count!=5 のところの ! の意味がよくわかっていない為よくわかりません。
階乗の意味か逆の意味のどちらかと思い自分なりに考えてみたもののさっぱりでした。
count!=5 の意味に重点においた解説をどなたかしてはもらえませんか?
0419デフォルトの名無しさん2013/11/07(木) 06:43:22.44
甘えてばっかりだなゆとりは
0420デフォルトの名無しさん2013/11/07(木) 07:05:04.47
きみが5歳ならおしえてあげる。
0421デフォルトの名無しさん2013/11/07(木) 07:08:29.05
>>418
count != 5は、countが5ではないって意味。
while (count != 5 && count > 0)
はcountが5ではなく、0より大きければという条件。
countは5なので、条件は不成立。最初のwhile文は実行されない。

do while文では最初にdoのところが処理されて
count--でcountが4になる。
countが5ではなく、0より大きければという条件が成立する。
0422デフォルトの名無しさん2013/11/07(木) 07:11:00.33
オレオレ語を使われてもわかりません。
0423デフォルトの名無しさん2013/11/07(木) 07:23:51.37
>>421
解説ありがとうございます!
おかげで理解することができ、スッキリしました!
0424デフォルトの名無しさん2013/11/07(木) 07:28:31.44
テキスト検索ボックスに入力されるたびにリストのフィルター処理しているんですが、一文字目のフィルター処理中に2文字目が入力された場合、処理を中断して2文字目の処理を優先する方法はありますか?
0425デフォルトの名無しさん2013/11/07(木) 07:29:13.14
>>421
なるほど、大変良くわかりました。
どうもありがとうございました!
0426デフォルトの名無しさん2013/11/07(木) 07:41:39.94
javadbは、jdk7/db/LICENSE のファイル(linux)によると Apache License Version 2.0 とあるので、dbフォルダごと全部そのフォルダの構造やファイルを一切編集しないでコピーすれば、再配布できるはず。
0427デフォルトの名無しさん2013/11/07(木) 08:03:56.16
一番年下のたらちゃんに敬語を強制させているさざえ家の闇に触れた気がした。
0428デフォルトの名無しさん2013/11/07(木) 08:28:14.09
>>422
0429デフォルトの名無しさん2013/11/07(木) 11:45:20.36
集合の比較ができるクラスはありますか?

int配列1 1,2,3
int配列2 1,3,5
とあって、
この場合、1,3を取得をしたいのです。
0430デフォルトの名無しさん2013/11/07(木) 12:06:57.00
Set、検索するきもないのか
0431デフォルトの名無しさん2013/11/07(木) 12:36:05.92
教えてクレクレ君っていうのはくだらない理由で大学教授を怨むパターンが多い。
0432デフォルトの名無しさん2013/11/07(木) 12:43:12.70
>>172
0433デフォルトの名無しさん2013/11/07(木) 13:27:52.81
>>430
ありがとうございます。
こういうの探してました!
ちょっと試してみます。
0434デフォルトの名無しさん2013/11/07(木) 13:28:14.66
JWS (Java Web Start) 捨てて、
自分でJWSが管理していた部分を実装してるんだけど、
ウェブ上のファイルの最終更新日時の取得ってどうやるんだ?

毎回ダウンロードさせるわけにもいかないし、
更新するファイルだけになんらかの属性つければ話は済むんだが、
なんか方法あるなら教えてください。
0435デフォルトの名無しさん2013/11/07(木) 13:32:25.37
そういうのこそ、自分で管理しないのがコツ
04364342013/11/07(木) 13:36:57.43
自己解決
URL url = new URL("http://...";);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
Date date = new Date(conn.getLastModified());

>>435
証明書の警告がなければ使い続けてたよ。
0437デフォルトの名無しさん2013/11/07(木) 14:50:51.89
>自分でJWSが管理していた部分を実装

この実装をダウンロードさせてインストールさせることには抵抗が無いと?
0438デフォルトの名無しさん2013/11/07(木) 15:11:27.17
>>437

>この実装をダウンロードさせてインストールさせることには抵抗が無いと?

”させる”ってことは俺について言ってるんだよな?
答えは「ない」だ。
大体JWS使ってる時だってオレオレ証明書だったし。


もしユーザー側の抵抗について言ってるんだとしても
やっぱり「ない」けどな。
大体 ユーザーはどうやって実装してるかなんて気にしてないし。
むしろJWSのセキュリティ警告出る方が心配あおるだけだし。
0439デフォルトの名無しさん2013/11/07(木) 15:29:38.59
ライブラリやアプリの開発者は、ユーザが用意した任意のシステムやオーエスについてのセキュリティまでをもサポートする必要はない
0440デフォルトの名無しさん2013/11/07(木) 15:38:58.34
>>172
04414172013/11/07(木) 15:43:35.10
>>426
�d、全部含める必要があるのか・・
0442デフォルトの名無しさん2013/11/07(木) 16:09:17.72
ジャバはオワコンでこれからはシー・シャープですよ?
つまりこれからはサーフェースとエックス・ボックスとウィンドーズ・ホンの時代ってことです!!
マイクロソフトが豊富な資金力で壮大なマーケティングをやってるの知らないんですか!?
0443デフォルトの名無しさん2013/11/07(木) 16:12:29.76
アスペ..netですね、わかります
0444デフォルトの名無しさん2013/11/07(木) 16:14:28.31
構文とライブラリの覚え直しですね
0445デフォルトの名無しさん2013/11/07(木) 16:23:16.03
グーグルがモトローラーを買収して、マイクロソフトがノキアを買収して、オラクルも携帯端末ハード企業を買収して、nexusやmssurface(amr)みたいなjavameのハードウェアのリファレンス・モデルを出してほしい。
0446デフォルトの名無しさん2013/11/07(木) 16:24:36.04
SQLiteみたいにデータベースっぽくファイルへの読み書きができるライブラリとかないの?
0447デフォルトの名無しさん2013/11/07(木) 16:29:44.16
>>446
それがsqliteでは。
他のアプリからも読みるフォーマットでということかな。
perlの頃にcsvファイルフォーマットでsqlとかあったから、それの頭にjつけて探せばあるんじゃね。(適当)
0448デフォルトの名無しさん2013/11/07(木) 16:33:42.62
SQLJet?::?Pure Java SQLite
http://sqljet.com/
0449デフォルトの名無しさん2013/11/07(木) 16:42:41.15
javadbを使ってるんですが、例えばselectで出てきた2行目だけを削除したいときのsqlはどう書けばいいんですか?
0450デフォルトの名無しさん2013/11/07(木) 16:55:32.22
【PureJava】 Derby 1 【OpenSource】
http://toro.2ch.net/test/read.cgi/db/1128799341/
0451デフォルトの名無しさん2013/11/07(木) 17:03:17.89
>>449
sqlに2行目などという概念は無い
0452デフォルトの名無しさん2013/11/07(木) 17:07:16.83
Using Java DB in Desktop Applications
http://www.oracle.com/technetwork/articles/javase/javadb-141163.html

これってderby.jar単体を自分のアプリのjarに含めて配布してOKってこと?
>>426が言うみたいに全部のファイルを含める必要はないってことでOK?
0453デフォルトの名無しさん2013/11/07(木) 17:12:07.31
1, taro
2, jiro
2, jiro
3, san

となってるときwhereを使うと全ての2, jiroの行が消えちゃうんですよ。
例えばこのとき2行目だけを消せるようなsqlはどう書くんでしょうか?
0454デフォルトの名無しさん2013/11/07(木) 17:13:55.06
>>452
ライセンスをちゃんと理解できればそうもできるけど、分からないなら全部配布した方がいい。
0455デフォルトの名無しさん2013/11/07(木) 17:14:53.62
>>453
distinct
てかスレチ
0456デフォルトの名無しさん2013/11/07(木) 17:23:01.78
>>452
>derby.jar単体を自分のアプリのjarに含めて

そんなことそのページに書いてないよ
0457デフォルトの名無しさん2013/11/07(木) 17:23:23.01
>>453
主キーが無いのが悪い
■ このスレッドは過去ログ倉庫に格納されています