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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語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
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
★★Java質問・相談スレッド162★★
http://toro.2ch.net/test/read.cgi/tech/1370777230/
2デフォルトの名無しさん:2013/07/26(金) 09:10:26.44
>>1 乙

>String に == は使うな。equals() を使え。
真に受ける人がいるからテンプレから削除するか
補足が必要

定数のcommand文字列と同一オブジェクトを比較する場合
==で比較するほうが可読性が良い場合がある
なんでもかんでもequals()つかってはいけない

同一クラス内において文字列リテラルは同一インスタンスである

String a = "adb";
String b = "adb";

a==bはtrueになるので初心者は罠にはまることがある


余談
1.7でスイッチ(String)が使えるようになったが
String key = null
swhich(key)はぬるぽになるのでcese null:とかできない
3デフォルトの名無しさん:2013/07/26(金) 10:18:57.40
聞かれたことにだけ回答しろ。わかったかこのクソヤロー
4デフォルトの名無しさん:2013/07/26(金) 12:15:51.77 ID:fksBQ7U6!
javaで文字などの長さを求めたいときにhoge.lenghtを使うと思うのですが、
どうやったらそのメソッドlengthを自ら定義出きるのでしょうか?

Haskellであれば
length' :: String -> Int
length' string = case (string) of
[] -> 0
(_:xs) -> 1 + length' xs
みたいにして自分で作るのですが。
5デフォルトの名無しさん:2013/07/26(金) 12:24:53.62
>そのメソッドlengthを自ら定義

日本語でお書きください
6デフォルトの名無しさん:2013/07/26(金) 12:36:34.05
hoge.length() じゃいかんのか?
7デフォルトの名無しさん:2013/07/26(金) 12:46:57.16
$len = String.length();

int a = len;
こうしたいってこと?
8デフォルトの名無しさん:2013/07/26(金) 13:19:39.27 ID:fksBQ7U6!
書き方がまずかったかな。
>>6
のlength()を自分で作った関数(メソッド)で使いたい?
>>7
$がよくわからないのですが、ちょっと違うようなきがします。


例えば、length'に"Hello, World!" と入れたら12が帰ってくるみたいに,
メソッドが何かしらの入力値を取り、その入力値の長さを返すみたいな。

length()ってどうやって書かれているのでしょうか?
9デフォルトの名無しさん:2013/07/26(金) 14:36:03.12
ざっくり説明すると
単純にchar[].lenghtを返しているわけではなく
byteに収まらない文字もあるわけでそのために文字数を
countした値を返しているようです

コード自体はこれだけです

public int length() {
return count;
}
10デフォルトの名無しさん:2013/07/26(金) 14:37:20.02
ちなみにStringはファイナルなクラスなのでおーばライドはできますん
11デフォルトの名無しさん:2013/07/26(金) 14:38:30.52
おぶじぇくと指向からおしえるべきでは
12デフォルトの名無しさん:2013/07/26(金) 14:45:48.81
それなら

static int length(String s) {
return s.length();
}
これでどうだ!!・・・
13デフォルトの名無しさん:2013/07/26(金) 15:38:02.26 ID:fksBQ7U6!
うん。自分は何か根本的に間違ってたみたいです。
>>9~12
ありがとうございます。

けど、これreturn s.length()はな〜。
14デフォルトの名無しさん:2013/07/26(金) 19:54:53.48
Date and Time APIはSQLやXMLデータ型に透過性がありそうでいいな
JPAでTemporalなしで使えるようにならんかな
15デフォルトの名無しさん:2013/07/26(金) 22:22:29.23
前スレ998だが、999は俺じゃない。でも面白かった
16デフォルトの名無しさん:2013/07/27(土) 12:04:25.61
標準APIのこのあたりのソースみておけって部分あれば教えて下さいな
入出力あたりはみたのでそれ以外で
17デフォルトの名無しさん:2013/07/27(土) 12:15:35.33
なぜAPIのソースをみようとするのかわからない
18デフォルトの名無しさん:2013/07/27(土) 12:25:46.09
同意。ああいうのはどうしても知りたい特定の部分があるときに読むもんで、
目的がないならあんな細切れなソース読んでも意味ない。
オープンソースのアプリのソースを読んだほうがいい。
19デフォルトの名無しさん:2013/07/27(土) 12:50:52.68
>ああいうのはどうしても知りたい特定の部分があるときによむもんで

今までそうしかしてこなかったので…
何よりデザインパターンの有名な本にクラスライブラリには
デザインパターンが沢山活かされていることが書かれていたので。
swtはそこそこ読みました
オープンソースでもよろしいので教えて下さい
20デフォルトの名無しさん:2013/07/27(土) 23:42:17.44
標準クラスだけど多態性のすべてが入っている気がしたので

java.awt.image.Raster
public DataBuffer getDataBuffer().getData()

関連クラス
DataBufferUShort
DataBufferByte
21デフォルトの名無しさん:2013/07/28(日) 08:20:36.92
>>20
中身見たことなかったので見てみます
BufferedImage等のデータ配列に直接アクセスして高速化したい場合によく使われてるやつですよね

標準APIって全体的にAdapterパターンがうまいな〜と思います
22デフォルトの名無しさん:2013/07/28(日) 08:26:54.15
swingで質問なんですけど、背景として画像を設定しつつその上に他のコンポーネント貼る方法ありませんか?
23デフォルトの名無しさん:2013/07/28(日) 09:28:45.80
>>22
javax.swing.OverlayLayout
24デフォルトの名無しさん:2013/07/28(日) 09:59:15.81
1.7から透明色が動くようになってたりする


カラーモデルによって配列の型が変わるから一概には言えないけど
1920x1080を配列に置き換える場合

int getRgb(x, y) 500ms
Bufferのデータから再配置 35ms
25デフォルトの名無しさん:2013/07/28(日) 15:55:41.31
Javaの画像処理が速いということがバレてしまうので
これ以上ラスタ使うBufferedImageの話は禁止で。
26デフォルトの名無しさん:2013/07/28(日) 16:11:26.67
解決しました。
ありがとうございました。
27デフォルトの名無しさん:2013/07/29(月) 12:45:56.22
interfaceとabstractの違いが良く分かりません
サンプルプログラムなどで明快に説明してあるサイトを教えてください
28デフォルトの名無しさん:2013/07/29(月) 13:29:00.97
>>27
protectedメソッドを持てるのがabstract class
持てないのがインターフェース

これ以上明快な説明は存在しない
29デフォルトの名無しさん:2013/07/29(月) 13:32:13.70
ちょっと何言ってるかわかんないです
30デフォルトの名無しさん:2013/07/29(月) 13:33:11.94
>>28
確かにそうですね。
しかしなぜそういった仕組みが必要なのかを明快に示してほしいです
そういうのはプログラムの実例を用いてこのような理由から機能美としてそうなっているという風に
説明してほしいです
31デフォルトの名無しさん:2013/07/29(月) 13:35:13.83
>>29
え!
32デフォルトの名無しさん:2013/07/29(月) 13:36:00.89
>>29
インターフェース
…publicメソッドのみ持てる

abstract class
…制限なくあらゆるメンバ・メソッドを持てる
33デフォルトの名無しさん:2013/07/29(月) 13:40:25.98
privateメソッドを持てるのがabstract class
持てないのがインターフェース

これ以上明快な説明は存在しない
34デフォルトの名無しさん:2013/07/29(月) 13:46:51.51
>>27
インターフェースを定義したものがinterface。
それ以外の抽象クラスがabstract。
35デフォルトの名無しさん:2013/07/29(月) 14:01:48.75
>>30
Javaにインターフェースや抽象メソッドが実装された理由はJCPの該当の議論を見るしかない
36デフォルトの名無しさん:2013/07/29(月) 14:26:00.80
複数継承できるのが interface
1つしか継承できないのが class
37デフォルトの名無しさん:2013/07/29(月) 14:33:47.40
インターフェイス
・全てのメソッドはpublic abstract。つまりメソッドの実装は持てない

具象クラス
・全てのメソッドはabstractではない。
 インスタンスを作ることが出来る。

抽象クラス
・abstractではないメソッドに加えてabstractなメソッドも持てる。
 継承する具象クラスにその実装を強制できる。

インターフェイスと抽象クラスの使い方について明確に説明しているサイトは
知らないけれども明確に説明して本としてEffective Javaがある。
「Effective Java 項目18」でググると解説したページが幾つか出てくるかも。

この本にもあるように、インターフェイスか抽象クラスかどちらか、というわけ
ではない。まずインターフェイスを定義して、それを実装する手間を減らすため
に骨格となる実装を抽象クラスとして定義することがある。
38デフォルトの名無しさん:2013/07/29(月) 16:11:57.68
>>37
> つまりメソッドの実装は持てない

それJava 7までの古い知識
39デフォルトの名無しさん:2013/07/29(月) 16:42:33.16
デフォルトメソッドもてるようになるのJava8からだから。
40デフォルトの名無しさん:2013/07/29(月) 17:12:53.33
tes
41デフォルトの名無しさん:2013/07/29(月) 17:39:25.01
>>39
最新版の知識で解説しろよ
42デフォルトの名無しさん:2013/07/29(月) 17:47:35.45
Java8はまだ出てないから最新はJava7のはず
43デフォルトの名無しさん:2013/07/29(月) 17:48:49.39
>>42
これから古くなって使えなくなる知識を教えるなってことだよ
44デフォルトの名無しさん:2013/07/29(月) 18:00:53.00
>>43
今使えない知識を教えてどうする
あほか
45デフォルトの名無しさん:2013/07/29(月) 18:17:37.81
これから古くなって使えなくなる知識って、いつ古くなるかも分からないのにね
Java8が出るのって早くても来年3月以降だろ?
46デフォルトの名無しさん:2013/07/29(月) 18:21:43.67
java8だって将来は古くなって使えなくなる技術になるんだから
java8を教えるのはあまりにも酷いよ
java9を教えてさしあげなさい
47デフォルトの名無しさん:2013/07/29(月) 18:25:09.27
揚げ足取りとか人として最低の行為だと思うよ
48デフォルトの名無しさん:2013/07/29(月) 19:11:13.16
interfaceはステートを排除してるから規約さえ守れば誰がどう実装してもいいのが利点だな
依存するオブジェクトがお前どこから生成されてくんねんって状態でもinterfaceベースならテストできる
49デフォルトの名無しさん:2013/07/29(月) 19:19:34.39
>>46
互換性の問題があるからインターフェースが実装を持てるようになる仕様が廃止される可能性は極めて低い
つまり今後はインターフェースが実装を持つ時代が長く続くので、そっちに合わせて解説するのは人間として当たり前
50デフォルトの名無しさん:2013/07/29(月) 19:23:45.47
インターフェースが実装を持つって
Visual Basic 6.0がやってた技術か

やっとVB6に時代が追いついたか
51デフォルトの名無しさん:2013/07/29(月) 19:26:17.27
java7があまりにも普及しなかったため
java7は無かったことに
52デフォルトの名無しさん:2013/07/29(月) 19:32:37.45
ただ廃れていくだけのjava
セキュリティ上の問題が多く敬遠されがちなjava
java8なんてjava7以前のシェアを塗り替えられるほど普及するのか
53デフォルトの名無しさん:2013/07/29(月) 19:37:12.04
新しいバージョンが古いバージョンと互換性を損なう場合があったとき
古いバージョンを頑なに使い続ける老害が必ず発生する
54デフォルトの名無しさん:2013/07/29(月) 19:40:28.09
>>52
Javaと他言語のアプリケーション、どっちの方が脆弱性の届け出が多いか知ってるかい?
55デフォルトの名無しさん:2013/07/29(月) 19:52:38.11
java
56デフォルトの名無しさん:2013/07/29(月) 19:58:04.20
C言語に決まってんだろアホ
57デフォルトの名無しさん:2013/07/29(月) 19:59:22.60
>>53
そんなお前はコピペプログラマー
58デフォルトの名無しさん:2013/07/29(月) 20:13:50.20
Java自体の脆弱性はアプリの脆弱性としてはカウントされないからね
Javaに脆弱性が発見されるたびに影響を受けるアプリの数だけインクリメントしてたら膨大な数になるよ
59デフォルトの名無しさん:2013/07/29(月) 22:50:47.67
そりゃC言語でsandboxの脆弱性は報告されないだろうな。
60デフォルトの名無しさん:2013/07/30(火) 11:50:40.69
無駄な層が挟まって
そいつが無駄な機能を山ほど抱えて
無駄なリスクを発生させる

それこそが病根
61デフォルトの名無しさん:2013/07/30(火) 12:51:16.38
まだverアップを否定できる程の能力があれば納得できるけど、
そういう層に限って各verに互換性を持たせる設計をしてこなかっただけだったり
ましてやそういう設計法があることすら知らなかったりするんだよね

更にそういう人こそ、OSの更新等を常に裏で自動更新にして最新版に保っていたりw
62デフォルトの名無しさん:2013/07/30(火) 12:52:51.87
3行目はリファクタリングという意味で
63デフォルトの名無しさん:2013/07/30(火) 19:28:43.15
クライアントのsource&targetはjava6、サーバはjava7にする予定
クライアントは組み込み用途だからしょうがないね
64デフォルトの名無しさん:2013/07/30(火) 19:55:36.96
好きにしてください
65デフォルトの名無しさん:2013/07/30(火) 20:10:14.47
マルチキャッチやStringスイッチは使っていいものなのか迷う
66デフォルトの名無しさん:2013/07/30(火) 20:14:00.14
古いバージョンのJavaを使う意味が分からん
67デフォルトの名無しさん:2013/07/30(火) 20:33:28.01
例えば7はVeiwにいかなる妥協策でも修正不可能バグがあるからね
6にはlinuxでキーフォーカスが死亡するバグがあるが
7で必死に直そうとした形跡はあるがなおってない
68デフォルトの名無しさん:2013/07/30(火) 20:44:42.65
if(value != null)
スイッチ(value) {
case 何とか
}

それだったらenumにしよう

フォールスルーはファインドバグが怒るのでとりあえず回避してしまう
69デフォルトの名無しさん:2013/07/30(火) 21:40:57.59
ポリモーフィズムとは
interfaceやabstractクラスを使って他のクラスにextendsやimplementsをする。
1つの元手で複数継承できることで多様化という意味合いがある。
引数の数や種類が違う、同じ名前のメソッドやコンストラクタも
ポリモーフィズムの一種である。

現在自学自習でjavaを勉強しているのですがポリモフィズムの解釈は
こんな感じで合っているのでしょうか?
どなたか採点よろしくお願いします。
70デフォルトの名無しさん:2013/07/30(火) 21:44:23.55
100点
71デフォルトの名無しさん:2013/07/30(火) 21:46:13.91
-50点
72デフォルトの名無しさん:2013/07/30(火) 21:49:00.90
オーバーロードって多態性の内に入るのか?と思ったが賛否両論だが入るっぽいな
まあ所詮は言葉でアップキャストに言及してるわけじゃないしな
73デフォルトの名無しさん:2013/07/30(火) 21:51:08.39
はいらねーよタコ
74デフォルトの名無しさん:2013/07/30(火) 21:54:37.67
>>69
個々の技術については大体合ってはいるけど本質的な部分に触れられてない
もし試験だったら30点の回答だな
75デフォルトの名無しさん:2013/07/30(火) 21:55:10.04
オーバーロードは入らんだろ
76デフォルトの名無しさん:2013/07/30(火) 21:57:59.60
>>73
その根拠は?思い込みレベルなら俺もそう思ってたから根拠があるなら言ってくれ
77デフォルトの名無しさん:2013/07/30(火) 22:11:09.43
ボケとツッコミが素敵だ
おまえら関西人?
78デフォルトの名無しさん:2013/07/30(火) 22:12:31.51
>>77
逝ってよし
79デフォルトの名無しさん:2013/07/30(火) 22:16:18.69
自称中級者なんてこんなもんか
80デフォルトの名無しさん:2013/07/30(火) 22:16:25.16
>>76
初心者すぎるw
呼び出す側から見たときに、オーバーライドされたメソッドのどこが多態なの?
そもそもインタフェースが違うじゃん
81デフォルトの名無しさん:2013/07/30(火) 22:20:20.36
ものほんの馬鹿だ
意味論を分かってない
82デフォルトの名無しさん:2013/07/30(火) 22:24:57.58
>>81
人を馬鹿にする前に自分の意見述べろよ
83デフォルトの名無しさん:2013/07/30(火) 22:30:55.82
多態性とはなんぞやの話で継承限定でものを考えてるから馬鹿と言った
同名のメソッドを複数持てることは多態性ではない言える根拠は何か?
俺は多態性ではないと言える根拠がないから聞いている
84デフォルトの名無しさん:2013/07/30(火) 22:40:13.52
キチガイ現る
85デフォルトの名無しさん:2013/07/30(火) 22:47:37.18
自称中級者の逃げ宣言か、つまらん結末だ
86デフォルトの名無しさん:2013/07/30(火) 23:04:46.24
プログラマなら日本語だけではなく
具体的なソースコードを照らし合わせて語りあうんだ


System.exit(0)
87デフォルトの名無しさん:2013/07/30(火) 23:19:59.29
>>86
System.out.println("了解!!");
88デフォルトの名無しさん:2013/07/30(火) 23:25:59.79
69です
ポリモーフィズム=多様化 とイメージしており
一つの宣言(同じ言葉)で 数多くの道具が使えるというイメージがありました。
ですのでインタフェースを使った多重継承、オーバーライドなどがこれにあたると
思っていました。

一つ気になりましたのが>>74さんの本質的な部分とはなんなんでしょうか?
分かる方いたら答えてください。
89デフォルトの名無しさん:2013/07/30(火) 23:32:19.99
言ってみただけ
90デフォルトの名無しさん:2013/07/30(火) 23:32:51.66
>>88
俺もわからん
91デフォルトの名無しさん:2013/07/30(火) 23:36:13.58
多態がどんなときに役にたつかといえば
例えば描画処理マネージャに対して描画したいコンポーネント群をぶち込むとき
コンポーネント群のもつ共通の描画メソッドpaintをオーバーライドし多様な形態(多態)にしとけば描画マネージャはぶちこまれたpaintを同様に実行すればいいだけで応用がきく
またこれにより条件分岐が減りプログラムがシンプルになる

一方オーバーロードとは同じ名前のメソッドを引数の違いによって分け記述をシンプルにするだけであり名前をf1,f2,f3と分けても実質的な違いはない

全然違う
92デフォルトの名無しさん:2013/07/30(火) 23:44:32.83
>>91
お前の中では多態性=アップキャストってなってるだけだな
何の説明にもなってない
93デフォルトの名無しさん:2013/07/30(火) 23:47:36.68
>>91
これはひどいwwwwwwww
94デフォルトの名無しさん:2013/07/30(火) 23:49:32.27
いや役にたたない学者の理屈をけずったら多態の存在意義はこれしかない
95デフォルトの名無しさん:2013/07/30(火) 23:54:23.91
>>88
ポリモーフィズムという概念はJavaより前に生まれたもの
だからJavaの用語(extendsやimplements)を使って解説してる時点で
本来のポリモーフィズムではなくJavaのポリモーフィズムの説明にしかなってないのよ
96デフォルトの名無しさん:2013/07/30(火) 23:57:48.52
employee.fire() とメソッドを呼ぶとき、「employeeをクビにする」と漠然と指示して
その中でどういうデータベース操作が行われるかなど細かいことは気にしないのがカプセル化だ。
fire()メソッドを持ってればemployeeの実体は別に何でもいいわけだが、Javaは静的型言語なので
コンパイル時に型がはっきりしてないとエラーになる。
だからインターフェースを使って「ここにはfire()メソッドをサポートしたオブジェクトを寄越せ」
と明示することでコンパイラをごまかす。
97デフォルトの名無しさん:2013/07/30(火) 23:58:30.96
>>94って何者なんだろう
相当役に立つものを作ったん凄い人なんだろうなあ
98デフォルトの名無しさん:2013/07/31(水) 00:27:51.46
>>88
継承はポリモーフィズムを実現する手段であって、ポリモーフィズムそのものではない。
呼び出しに対して多様な振る舞いで応答することができる性質がポリモーフィズム。
99デフォルトの名無しさん:2013/07/31(水) 00:33:59.96
>>98
これは正しい
100デフォルトの名無しさん:2013/07/31(水) 00:39:07.21
>>95
こういう原理主義みたいなこと言い出す人って必ずいるけど何なんだろう
老害って呼べばいいのかな
101デフォルトの名無しさん:2013/07/31(水) 00:47:50.26
土方とアカデミックの違いだな
土方は定義を語っちゃあかんよ
102デフォルトの名無しさん:2013/07/31(水) 00:49:17.26
>>95
さすがにこういうやつは
ねーわな
10371:2013/07/31(水) 07:04:55.34
102
いや俺も74見て同じことを思った。
OO信者はまず概念から入るので、
69は「概念の説明がない」と指摘される典型的な例。
104デフォルトの名無しさん:2013/07/31(水) 12:40:50.97
Androidが世界制覇してるのにそれでもjavaはオワコンだというのですか?
105デフォルトの名無しさん:2013/07/31(水) 13:13:21.77
>>104
消えろ
106デフォルトの名無しさん:2013/07/31(水) 13:15:40.84
何となく話の中核が見えてきた
>>69はポリモフィズムとは?の回答にjavaの実相や概念に絞って、ポリモフィズムのことを指して答えた
そのため100点の回答とはならないのは俺も賛同


オーバーロードは多態性なのかと聞かれたら多態性だと答える(javaの話ではない)

不特定のファイルを与えて実行したとき、ファイル形式がなんであれ。未知のもの、非対応でなければ
動画なら動画を再生、音声ファイルなら音声を、画像ファイルなら画像を表示といった動作になる
ファイルを開くという一連の動作からこれだけの多様性がry
107デフォルトの名無しさん:2013/07/31(水) 13:39:42.30
>>105
信者のうめき声が聞こえてくるようだわwwwww
さて仕事するか
108デフォルトの名無しさん:2013/07/31(水) 14:04:26.07
>>107
釣り針に釣られてるやつが何言ってる
109デフォルトの名無しさん:2013/07/31(水) 14:19:52.88
androidのまがい物javaはお子さまドカタに愛され
正当javaは業務アプリおじさんドカタに愛されています
110デフォルトの名無しさん:2013/07/31(水) 16:10:58.40
高級言語は疲れる。コンピュータとは何か?を知ってても役に立たずJavaとは何か?のみで決まる
111デフォルトの名無しさん:2013/07/31(水) 17:58:58.40
高級言語は疲れる?どういう意味で言ってるのだろう。
いきなりローカルに開発していくときほど疲れると思うんだけどなー
112デフォルトの名無しさん:2013/07/31(水) 17:59:39.70
>>111
いきなりローカルに開発していくときほど疲れる?どういう意味で言ってるのだろう。
113デフォルトの名無しさん:2013/07/31(水) 18:57:06.29
日本語すら不自由なjavaドカタw
114デフォルトの名無しさん:2013/07/31(水) 19:49:54.26
オーディオミキサから音を取得したいのだけど
http://docs.oracle.com/javase/tutorial/sound/capturing.html
上記のサンプルってマイク限定なのですか?

Mixer名列挙するとPORTのスピーカーが見えるのですが。そこから拝借とかできないものでしょうか?
115デフォルトの名無しさん:2013/07/31(水) 21:30:55.99
>>111
おそらく、C言語やってもポインタで挫折するタイプなのだろう
116デフォルトの名無しさん:2013/07/31(水) 21:46:05.63
>>111
さすがにこれは釣りだろ
117デフォルトの名無しさん:2013/07/31(水) 22:58:19.14
質問があります。

・Listで、あるオブジェクトが管理されている。
・画面があると仮定し、その画面には3つのオブジェクトしか表示できない。
・戻るボタンと次へボタンがあり、次へボタンを押すと次の三つをその画面に表示したい。

こういったとき、どのようなListやQueueを使うのがいいのですか?またどのように実装すればよいでしょうか

List<Object> objects = new ArrayList<Object>();
objects.add(new Object());
.....

for(int i=0; i<3; i++) {
objects.get(i)
}

理想はこのように常に0〜2番目を取り出すだけで、objectsリスト内をぐるっと一周できるようなソート?法を知りたいです。
[0, 1, 2, 3, 4, 5, 6, 7]
[3, 4, 5, 6, 7, 0, 1, 2]
[6, 7, 0, 1, 2, 3, 4, 5]
....
見たいな感じです(数字は最初にaddしたときのindex)
118デフォルトの名無しさん:2013/07/31(水) 23:12:09.38
ソートする必要性を感じないけど
http://docs.oracle.com/javase/jp/6/api/index.html?java/lang/String.html
これ使えばおk

for(int i=0; i<3; i++) {
objects.get(i)
} こっち変化させるほうがお勧めだけどね
119デフォルトの名無しさん:2013/07/31(水) 23:18:11.83
120デフォルトの名無しさん:2013/07/31(水) 23:21:31.92
自己解決しました
121デフォルトの名無しさん:2013/07/31(水) 23:26:13.63
>>117
ArrayListで管理してlocalCursor = cursor % list.size() でやりくりでいいんでない?
cursorがどれだけ大きくなっても行けるとおもわれる
localCursorに負数が来た場合は list.size() - localCursor で正しい添え字に直せばいい
122117:2013/07/31(水) 23:37:23.99
>>118
型に指定したObjectクラスのフィールド変数等で比較するつもりはなくてもコンパレータでできるのですかね。
コンパレータって隣り合う2つのオブジェクトの、とある変数同士で並び替える以外にうまい使い方があるのですか?
(この場合のような単なるlistのindexだけを考慮すればいい時でも)

>>121
すみませんちょっと変数の意味がわからないです
localCursor = cursor % list.size()
が急にでてきて・・・
localCursorはdouble型?
123デフォルトの名無しさん:2013/07/31(水) 23:41:55.71
添え字だっつってんじゃん
自己解決したんなら無視していいよ
124デフォルトの名無しさん:2013/07/31(水) 23:59:34.20
調べる気なし
125デフォルトの名無しさん:2013/08/01(木) 00:05:41.75
>>123
cursorは何を表していますか?
急に出てきて意味がわかりません。。。
126デフォルトの名無しさん:2013/08/01(木) 01:01:35.68
JavaFXってどれくらい普及してますか?JavaFXを前提とした開発に未来はありますか?
127デフォルトの名無しさん:2013/08/01(木) 01:03:33.64
オラクル買収後のJava 7と8、JavaFXはどうなるのか (1/2) - @IT
ttp://www.atmarkit.co.jp/fjava/special/jjugccc2011spring/01.html

期待に溢れていた過去
128デフォルトの名無しさん:2013/08/01(木) 01:04:20.03
>>126
ゼロ
ない
129デフォルトの名無しさん:2013/08/01(木) 01:05:13.09
写真の日本人はどいつもハゲ
130デフォルトの名無しさん:2013/08/01(木) 01:07:49.87
クライアントJavaのGUIにHTML5使えるようにするプランもあったんだろ?
誰がどう考えてもそっちが正解だった
どっちにしろ普及はしなかっただろうけどね
131デフォルトの名無しさん:2013/08/01(木) 01:10:22.99
JavaFXにWEBブラウザ入ってるんじゃなかったっけ?
あれコールバック仕込めないのか
132デフォルトの名無しさん:2013/08/01(木) 01:10:26.83
Trust me - I know what I'm doing

Manawatu Standard? - 2013年7月23日

JavaFX is part of Java, which almost every computer runs. It's technical stuff.
But fortunately Giles has ... Giles writes a successful blog rounding up weekly developments within JavaFX.
He has legions of Twitter followers from ...
133デフォルトの名無しさん:2013/08/01(木) 01:12:32.95
FXって外為かよ
134デフォルトの名無しさん:2013/08/01(木) 01:14:28.85
ジャワ国の外国為替か
135デフォルトの名無しさん:2013/08/01(木) 01:16:27.92
Hello World in JavaFX
http://medianetwork.oracle.com/video/player/1193176137001

これは普及しないわ
136デフォルトの名無しさん:2013/08/01(木) 01:20:17.01
Getting Started with JavaFX: Hello World, JavaFX Style | JavaFX 2 Tutorials and Documentation
http://docs.oracle.com/javafx/2/get_started/hello_world.htm

動画のハローワールドと一致しない
137デフォルトの名無しさん:2013/08/01(木) 01:20:40.06
クライアントJavaって本質的に存在意義が薄いんだよ
Javaのマルチプラットフォーム性を活かそうとすれば、やれることが制限されてWebと大差なくなる
動作環境(周辺機器やOS)との連携を重視すれば、Javaを選ぶのは面倒なだけ
138デフォルトの名無しさん:2013/08/01(木) 01:36:28.97
webアプリ開発専用言語とスマホアプリ開発専用言語へとそれぞれ進化しました
139デフォルトの名無しさん:2013/08/01(木) 02:16:54.60
ジャワ島・・・Java言語はプログラミング言語海の孤島、という意味である

ジャワ原人・・・Java言語をメイン言語とするプログラマのことである
140デフォルトの名無しさん:2013/08/01(木) 02:20:02.84
>>139
新しいコピペ?
141デフォルトの名無しさん:2013/08/01(木) 03:25:37.86
ホモエレクトゥス さび付いたJAVAにすがる時代遅れの痴呆
ホモサピエンス  Android島に移住した知性的な進歩人
142デフォルトの名無しさん:2013/08/01(木) 08:12:05.66
androidの案件も負けず劣らず猿でもできる仕事ばっかりだろ
143デフォルトの名無しさん:2013/08/01(木) 09:20:45.51
>>137
・クライアントアプリ
・マルチプラットフォーム
・スクリプト言語以外

この条件ならJavaしか選択肢はないだろ。
144デフォルトの名無しさん:2013/08/01(木) 10:16:14.66
マルチプラットフォームなクライアントなぞ目論むのがおかしい
どうしてもやりたいならWeb
145デフォルトの名無しさん:2013/08/01(木) 10:19:22.48
Webにしたら、セキュリティーソフトウェアに邪魔される
146デフォルトの名無しさん:2013/08/01(木) 10:38:36.15
>>144
Webはサーバー必須だからそもそも用途が全く違うだろ
147デフォルトの名無しさん:2013/08/01(木) 12:54:37.63
なんでもできるようにして結局何にもできなくなるのは世の常
148デフォルトの名無しさん:2013/08/01(木) 13:33:15.41
なんでもないようなことがあぁぁ
149デフォルトの名無しさん:2013/08/01(木) 15:20:52.78
ActionScript3+Flex(昔Adobe今Apache)が不完全燃焼のまま終了しつつあるのが辛い。
これ本当に生産性が高かった。

ActionScriptとか言うとよく馬鹿にされるけれども実のところ3はDart等と同様に
Java的な文法のオプショナル型付け言語で、手続き的なロジックはJava風に静的
型付けでカッチリと書きつつ、UI設計の宣言的記述であるMXML内には同じ言語で
コンパクトに記述したインラインコードを埋め込むことが出来た。
Flexも素直な設計で部品が充実したフレームワークだったし。

この点JavaFXは出てきた時から宣言的UI記述にはJavaFX Scriptという別の言語を
使う時点で面倒だなと思ったし、後にJavaFX Script自体が無い事になった。

同様な問題はJavaとは別にJSP等ではELも使うJavaのWebアプリ開発関連にも言える。
なのでGrailsお薦め。
150デフォルトの名無しさん:2013/08/01(木) 16:09:27.84
CUIもGUIも作れるJAVA、JAVAならJAVAアプレットでウェブも対応!サーバーサイドならサーブレットもあるし!JAVA最強伝説
ガラケーのアプリやアンドロスマホのアプリもJAVA!ほんと最強すぎるJAVA!至高のJAVA!俺たちがJAVAだ!
151デフォルトの名無しさん:2013/08/01(木) 17:37:26.29
相談でっす。
Graphics+swingで解決できない問題が。

ゲームを作ってて、
メイン画面にGraphicsで描画(30FPS)しているとします。

で、そのメイン画面上に
背景を透過したJTextPaneやらJTextFieldを乗せたいんだけど
メイン画面の描画の度に、swingのコンポーネントが汚くなる。
これを解決する方法って何かないかなぁ?
ちなみにAWTを使うのはナシで。

苦し紛れに描画の度にリペイントとかしてみたものの
描画タイミングがずれるせいでチラチラチラチラうざい事に。
152デフォルトの名無しさん:2013/08/01(木) 17:56:01.19
1.7の話だと思うけど透明以外の時、どのように見えるのかな?
透明特有だったら対処法はないという切り分けにはなるよ
153デフォルトの名無しさん:2013/08/01(木) 18:24:44.23
>>152
早速ありがとうございます。
1.7の話です。

透明だろうが不透明だろうが、見え方は一緒ですねぇ。

うまく説明できないのですが・・
JPanelにJtextAreaが乗っている構成で、
GraphicsはJPanelにダブルバッファで書き込みをしています。

現象としては
JtextAreaの再描画(リペイント)をしない場合は
メイン画面再描画(draw)でJtextAreaが消える。

JtextAreaの再描画(リペイント)をする場合は
JtextAreaがチラチラチラチラする。

JtextAreaの絵が塗りつぶされているんだとは思うのですが・・。
154デフォルトの名無しさん:2013/08/01(木) 19:53:34.16
1.7の透明色特有ではなさそうなので、知ってる人はもう少し書いたら
レスくれそうですね
リペイントってどんなサイクルだったかわすれましたが
invalidateこんなの呼んで再描画するんじゃなかったかな・・


>>114は解決しました
というかPCにステミキ入ってなかったORZ
音だせるやつのinfo情報
getName "ƒXƒeƒŒƒI ƒ~ƒLƒT[ (Realtek Hig"
getDescription"Direct Audio Device: DirectSound Capture"
toString interface TargetDataLine supporting 8 audio formats, and buffers of at least 32 bytesgetFormat PCM_SIGNED 8000.0 Hz, 16 bit, stereo, 4 bytes/frame, big-endian
結局PORTから音はとりだせなかったけど、ミキサーからはとれますた
155デフォルトの名無しさん:2013/08/01(木) 19:57:04.51
読めないデバイスだと思ってたら文字化けしてたのか・・
貼ってから気が付くレベルの俺
156デフォルトの名無しさん:2013/08/01(木) 23:42:09.70 ID:5J+mkZgJ!
なぜforループがDeadcodeになるのでしょうか?
import java.util.Scanner;

public class Test {

public static void main(String[] args){
Scanner in = new Scanner(System.in);

System.out.print("Max :");
String input = in.next();
int x = Integer.parseInt(input);

for (int i = 1; i <= x; i++){
if (1%2 == 0){
System.out.println(i);
} else {
continue;
}
}
}
}
157デフォルトの名無しさん:2013/08/01(木) 23:43:54.42
if (1%2 == 0){

なにこれ
158デフォルトの名無しさん:2013/08/01(木) 23:46:58.82
nextInt()は使えないのか?
159デフォルトの名無しさん:2013/08/02(金) 00:09:57.85 ID:pU3LTo83!
>>157
二の倍数かどうかの判定をしたかったのですが。
>>158
countinueのかわりにnextInt()ということでしょうか?
160デフォルトの名無しさん:2013/08/02(金) 00:20:46.55
ID出てるし釣りか
161デフォルトの名無しさん:2013/08/02(金) 00:23:30.28
>Scanner
このクラスの存在、今日初めて知った
すごく便利そうなクラスだね
正規表現でのパースするとあるけど実装はネイティブコードとかでされてるのかな
それなら自分でJavaのコード書いてパースするより捗りそう
162デフォルトの名無しさん:2013/08/02(金) 00:33:48.89
ジャバ8ではjre/binにもjjsがあるのですが、jreで配布は、ライノーはやらないけど、ナズホーンは配布することになったんですか?
163デフォルトの名無しさん:2013/08/02(金) 01:02:47.85
はい
164デフォルトの名無しさん:2013/08/02(金) 01:15:43.06
次はジャバFXもあるし、HTML5もあるし、リリース8の本命はラムダとかストリームではなく、実はナズホーンだったりするので、ランタイムに同梱は必然ですよね^^
165デフォルトの名無しさん:2013/08/02(金) 01:30:02.00
まあNashornはブレークポイントが止まるようになるらしいからコールバックの実装はJavaScriptでってのはいいかもな
166デフォルトの名無しさん:2013/08/02(金) 14:07:14.02
ごめん初歩的な質問なんだけど
eclipseってJavaをインストールしていないと
起動自体出来ない?
167デフォルトの名無しさん:2013/08/02(金) 14:16:50.98
>>166

eclipseにも色々あって、
java(厳密にはJRE)を内包しているものは、PCにjavaが入っていなくても大丈夫。

内包していない奴は、PCのjavaで動くので
インストールが必要。
168デフォルトの名無しさん:2013/08/02(金) 19:22:29.15
JavaFX8が楽しみだな〜。
169デフォルトの名無しさん:2013/08/02(金) 19:48:54.42
http://mergedoc.sourceforge.jp/
JRE入りのインディゴがお勧め

異論は認める
170デフォルトの名無しさん:2013/08/02(金) 19:59:54.20
個人的にはKeplerで良いと思う。
Junoで無駄に鍛えられたので感覚が麻痺しているという説もあるけど。

それとPleiadesとかAll-in-oneが許されるのは小学生まで。
とっかかりはともかく早めの卒業を推奨。
171デフォルトの名無しさん:2013/08/02(金) 20:09:49.26
高級言語なのに手続きが物凄い量
172デフォルトの名無しさん:2013/08/02(金) 23:41:26.98
全然quickstartじゃないんだよな
環境構築を覚えるまでが一番大変
覚えた後はさすがに楽なんだけど
173デフォルトの名無しさん:2013/08/03(土) 00:41:11.83
>>171
例外処理と粒度の小さすぎるAPIが原因
174デフォルトの名無しさん:2013/08/03(土) 01:00:17.10
最近は新しいAPIがチェック例外を敬遠しだしたな
まあ外部リソース依存の例外以外は個人的にやり過ぎだと思ってたが
175デフォルトの名無しさん:2013/08/03(土) 01:46:09.32
script言語信者が元気ですね。
176デフォルトの名無しさん:2013/08/03(土) 01:49:19.06
意識高い系(笑)のJavaドカのみんなが大好きなScalaもチェック例外は捨てたんですよ
177デフォルトの名無しさん:2013/08/03(土) 02:12:59.18
チェック例外は手続き型に関数型を取り入れた最近流行りのスタイルでは全く使い物にならないんだよな
ラムダが難航してた大きな一因だし、結局は検査例外の存在を無視した仕様に決まってしまった
178デフォルトの名無しさん:2013/08/03(土) 03:10:01.50
javaドカタはどうせcatchして無視するだけだから全部RuntimeExceptionにしとけばよかった
179デフォルトの名無しさん:2013/08/03(土) 03:19:45.33
Javaやってるといかに日本人がサービス精神薄いというか、オープンソースにあまり向いていない?かが実感できる。
海外のフォーラム等のボランティア精神がまったく違うんだよね〜。
日本人は陰湿なコード(自分は端から端まで把握してはいるがそれをコードで表現していない)が大好きな人が多い。
妙な悦に浸っている。良い設計の本にはその辺りが書かれている気がする。
180デフォルトの名無しさん:2013/08/03(土) 06:10:45.68
2種類以上のjavadocを統合って出来ますか?
あるパッケージのjavadocファイル群と別のパッケージのjavadocのファイル群が別々にあって
それと統合したいんです
181180:2013/08/03(土) 06:11:19.93
どちらもソースコードは無いのでソースコードから生成し直すってのは出来ないです
182デフォルトの名無しさん:2013/08/03(土) 06:37:27.08
androidの話になっちゃうけど
例外をスローしないでスタックトレース出して終わりという
お粗末なandroid標準APIがあるよ

>>180
1.htmlを自分で編集する。互いにソースリンクがないなら超簡単
2.jadでシグニチャ取り出して自分でドキュメントコメント書いて・・・・
183デフォルトの名無しさん:2013/08/03(土) 10:45:01.96
>>180
コアのAPIのサイトをリンク先にしたことあった気がしたけど、自前のサイトでもできるかな。Javadocのオプションで。
184デフォルトの名無しさん:2013/08/03(土) 10:49:13.99
おはようございます。
7月から自学自習でjavaをしており
「解きながら学ぶjava入門編」という参考書を終え、ぼちぼち理解ができてきました。
次のステップアップのためのお勧めの参考書はなにかありますか?
どなたかお答えお願いします。
185デフォルトの名無しさん:2013/08/03(土) 10:53:43.96
>>184
パーフェクトJava
186デフォルトの名無しさん:2013/08/03(土) 10:56:59.99
勉強はもういいからモノ作れよ
GUIやるのは無駄だからやるならコンソールでDBアプリとかな
187デフォルトの名無しさん:2013/08/03(土) 14:16:29.79
解くという考え方が既に間違っている
イメージを持って組み立てるものだ
188デフォルトの名無しさん:2013/08/03(土) 15:54:33.89
Javaのチェック例外、俺はいいと思うけどな。
例外処理を考えてるときが一番勉強になってる気がする。
APIや他のオープンソースの設計見にいきたくなるし。
189デフォルトの名無しさん:2013/08/04(日) 00:27:14.07
検査例外のアイデア自体が良いか悪いかはともかく、ラムダとの相性が絶望的に悪いのは事実
Java8で積極的にラムダを多用すればどうしてもRuntimeExceptionやthrows Exceptionだらけになるので
検査例外はほとんど意味がなくなるよ
そうならないように長いこと議論して対策考えてたんだけど結局特に対策はなし
190デフォルトの名無しさん:2013/08/04(日) 03:54:58.40
質問があります。
ほとんど設定しなくてもいいのでJOptionPaneを使っているのですが、
このダイアログが表示されたときのコンポーネント(ボタン等)を個別に取得してサイズ等をを変更する方法が知りたいです。
機能はまったくいじるつもりは無く、内装を少し変えたいです。
191デフォルトの名無しさん:2013/08/04(日) 06:16:49.81
次の質問どうぞ
192デフォルトの名無しさん:2013/08/05(月) 17:04:03.75
class CLS {
public static void main(String[] args)
{
func1(1);
}
void func1(final int arg)
{
func2(arg);
}
voi func2(int arg)
{
arg = 9999;
}
}

上記のarg = 9999;のように、final引数→通常引数とわたされた変数は、通常引数の場所で変更可能ですか?
193デフォルトの名無しさん:2013/08/05(月) 18:36:51.99
試せばわかるだろ死ね
194デフォルトの名無しさん:2013/08/05(月) 18:37:45.95
>>192
渡されるのは値っす。
func2の変数argの値は変えることができる。
func2の変数argの値を変えてもfunc1の変数argの値は変わらない。
195デフォルトの名無しさん:2013/08/05(月) 22:52:27.22
>>192
この例だと参照渡しでなくコピーなので変更可になるかな?引数がintでなくクラスの場合にはfanc2の宣言のところで、final変数を通常変数で渡してる、ってエラーがでそう
196デフォルトの名無しさん:2013/08/05(月) 23:00:00.33
for(int i = 0 ; i < 10 ; i++){
system.out.println("i")
if(条件式){
i = 0;
}
}

このようにとある条件の時のみ変数iを戻したいのですけど
この書き方はよくない(一定で上がり続けるiを勝手に変更するのは御法度)
と指摘されました。
なにかほかに言い書き方はありますか?
197デフォルトの名無しさん:2013/08/05(月) 23:00:42.56
はいはい、参照の値渡し参照の値渡し。
198デフォルトの名無しさん:2013/08/05(月) 23:06:29.66
>>196
無限ループの原因になりがちというこそなら、forをbreakしてその外で戻せば(return?)問題ないんじゃない。
199デフォルトの名無しさん:2013/08/05(月) 23:10:48.84
>>196
その条件をクリアするだけなら下みたいにラベル付きループとかも使えるけど
意図が分かりにくくて比較的バグの温床になりやすいコードってのはあんまし変わらんよ。

loop: while(true) {
  for(int i = 0 ; i < 10 ; i++){
    system.out.println("i")
    if(条件式){
      continue loop;
    }
  }
  break loop;
}

その部分をメソッドに抜き出して正常完了か異常終了したかを戻り値で返す、
異常終了なら再度そのメソッド呼び出すみたいにした方がいいんじゃね?
200デフォルトの名無しさん:2013/08/05(月) 23:28:34.48
ビーンズの特定のプロパティ(複数指定可)のみ比較するライブラリってありませんか?
201デフォルトの名無しさん:2013/08/05(月) 23:40:30.58
>>195
func1のfinalはfunc1の変数の書き換えを制限するもの。
func2の変数はfunc1の変数とは別のものなんでfunc2の変数を
書き換えてもfunc1の変数は変わらないっすよ。なのでたとえ参照型で
あってもエラーはでないっすよ。
202デフォルトの名無しさん:2013/08/05(月) 23:40:42.79
>>196

int i = 0;
while (i < 10) {
  if (条件式) {
    // 処理
    i = 0;
  } else {
    // 処理
    i++;
  }
}

これなら誰が見ても意図は明らか
203デフォルトの名無しさん:2013/08/05(月) 23:58:21.48
数字だけで構成されたString型のcodeという変数(例えば"02134")
をInteger型の配列に一文字ずつ格納したいんですが([0,2,1,3,4])
以下のようなコードを書いたのですけれど、もっとスマートな方法ありませんか?

Integer[] Q = new Integer[code.length()];
for(int i = 0;i<code.length();i++){
Q[i] = Integer.parseInt(String.valueOf(code.charAt(i)));
}

よろしくお願いします
204デフォルトの名無しさん:2013/08/06(火) 00:19:21.01
>>201
まじっすか!すまぬ&ご指摘ありがとう!
205デフォルトの名無しさん:2013/08/06(火) 00:30:00.91
>>203
文字コードが連続しているのを利用して

char[] charArray = code.toCharArray();
Integer[] Q = new Integer[charArray.length];
for (int i=0; i<charArray.length; i++) {
Q[i] = (int)charArray[i] - '0';
}
206デフォルトの名無しさん:2013/08/06(火) 00:57:59.37
>>205
codeが2GBあると2GBのメモリーとコピー時間の無駄遣いだからtoCharArrayやめれ。
207デフォルトの名無しさん:2013/08/06(火) 01:10:30.58
>>203
Characterクラスのstaticメソッドにcharを数にする適当なものがあったはず。
208205:2013/08/06(火) 01:16:24.49
Character.digit(code.charAt(i), 10);

これの方がいいな
209靖国参拝、皇族、国旗国歌、神社神道を異常に嫌うカルト教団:2013/08/06(火) 03:11:33.71
★マインドコントロールの手法★

・沢山の人が偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法


↑マスコミや、カルトのネット工作員がやっていること

TVなどが、偏った思想や考え方に染まっているフリや常識が通じないフリをする人間をよく出演させるのは、
カルトよりキチガイに見える人たちを作ることで批判の矛先をカルトから逸らすことが目的。

リアルでもネットでも、偽装左翼は自分たちの主張に理がないことをわかっているのでまともに議論をしようとしないのが特徴。
210デフォルトの名無しさん:2013/08/06(火) 04:36:05.18
2GBもあるわけないだろ馬鹿か
211デフォルトの名無しさん:2013/08/06(火) 07:13:44.81
たとえ2Bだろうと丸々無駄コピーなんだから一緒。
212デフォルトの名無しさん:2013/08/06(火) 14:09:13.13
java使っといて無駄もくそもないわー
213デフォルトの名無しさん:2013/08/06(火) 14:14:11.64
>>212
もっとスマートな煽りでお願いします
214デフォルトの名無しさん:2013/08/06(火) 14:36:22.31
まじめな話ジャバ使っといて効率とか速さっていう奴は馬鹿でしょ
215デフォルトの名無しさん:2013/08/06(火) 14:43:28.41
低速な環境こそ、チマチマした効率の追求に意味がある。
デスクトップPC用のGUIアプリで、
Cを使っといてインラインアセンブラを使うとかいう方がどうかしている。
216デフォルトの名無しさん:2013/08/06(火) 15:48:26.76
インラインアセンブラ使ってない環境で効率とか速さとか言う奴は馬鹿でしょ
217デフォルトの名無しさん:2013/08/06(火) 23:51:24.80
Javaでもうまく作れば普通に書いたCよりは速いこともあるよ
どうしてもFORTRANみたいな糞コードになるけどw
218片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/06(火) 23:57:10.15
GCJすごいな。実行ファイル作れるんだ
219デフォルトの名無しさん:2013/08/07(水) 12:55:16.18
GCJってもう終わってるんじゃね?
220デフォルトの名無しさん:2013/08/07(水) 19:44:14.58
>>219
どこが?
221デフォルトの名無しさん:2013/08/07(水) 19:54:45.81
これを見てそう思っただけだよ
ttp://gcc.gnu.org/java/
222デフォルトの名無しさん:2013/08/07(水) 21:51:33.96
javaのGUIプログラムを勉強中です
frameとpanelの2種類あると思いますがpanelを使う意味ってあるのですか?
webページを見ていたらpanelはオブジェクトのおくところと書かれてますが、
べつにframeにもlabelやら貼れますよね?
勉強期間はまだ短くてよくわかってませんが、どなたかpanelのあるとないとの
違いを教えてくれませんか?
223デフォルトの名無しさん:2013/08/07(水) 21:51:52.00
>>217
Javaっぽい記述ではなくなるけど強引に速くなりやすいように書けるのかな。
興味あります。
224デフォルトの名無しさん:2013/08/07(水) 22:00:22.21
なるわけないだろ。たまたまその時速かったとかだろ
225デフォルトの名無しさん:2013/08/07(水) 22:19:39.29
実行時にコンパイルし直したりするからサーバサイドならC++より早いが触れ込み
まあサーバサイドのボトルネックは9割方がデータベース(≒Disc I/O)なんだけど
226デフォルトの名無しさん:2013/08/07(水) 22:23:13.11
>>222
panelは無地の板
複雑なレイアウトを行ったり関連する部品をまとめたりするために使う
227デフォルトの名無しさん:2013/08/07(水) 22:31:42.48
InputStreamのデータをOutputStreamに高速に転送する方法が知りたいです。
現在はこのように単純に転送しています。

int length;
while((length=input.read(buf))!=-1){
output.write(buf,0,length);
}

しかしこの方法だとreadとwriteが同時に行えないため、
readとwriteを同時に行って欲しい状況だとパフォーマンスが半減してしまいます。
マルチスレッドでも構いません。
228デフォルトの名無しさん:2013/08/07(水) 22:32:38.84
チューニングのためにjni使ってるプログラムに素のjavaが勝つなんてことは
下手くそが書いたプログラムとかでないかぎりあり得ない
229デフォルトの名無しさん:2013/08/07(水) 22:47:39.42
>>227
無理。というか read と write を同時には行えないよ普通。
read と write を交互にやるのをユーティリティメソッド内に閉じ込めるとかはできるけど。

高速転送に関して言えばファイル限定で
java.nio.channels.FileChannel の transferTo とか transfetFrom とかがある。
これは java の配列を介さずに転送するため javaの配列を介するより高速化する、
とされているもので内部では read と write を交互に行ってる。
あと必ず高速化できるとは限らない事に注意。
230デフォルトの名無しさん:2013/08/07(水) 22:48:31.06
>>228
下手くそはごまんといる。たぶんオマエもその一人。
231227:2013/08/07(水) 23:00:55.68
>>229
ファイルではないのでFileChannelが使えなくて困ってます

> read と write を同時には行えないよ普通。
マルチスレッドで、readで一定数読み込んだものを次々とバッファに貯めていき、
並行してwriteはバッファから取り出して書き込むという流れではどうでしょうか?
232227:2013/08/07(水) 23:10:21.13
情報を具体的に開示します。

HDDが二台あり、片方のドライブからもう片方のドライブにコピーするとします。
どちらも読み込みと書き込みが50MB/sで行える場合、
理論上は50MB/sで読み込みをしながら、
それと同時に50MB/sで書き込みを行えるはずです。

しかし>>227のコードでは読み込んでいる間は書き込みが停止するので、速度は明らかに低下します。
単純なファイルのコピーならFileChannelが使えますが、
今回はFTPなどのプロトコルを介するためStreamしか使えないという条件です。

どうしましょう。
233デフォルトの名無しさん:2013/08/07(水) 23:17:30.61
>マルチスレッドでも構いません
最初から答えが出ているようなものだが
234227:2013/08/07(水) 23:24:28.21
>>233
マルチスレッドの場合は読み込んだデータを一時的に保持しておくバッファを
どのように実装するかが問題になります。
最初はByteArrayOutputStreamを使おうと考えましたが、
ByteArrayOutputStreamのtoByteArrayは内部配列のコピーを行うため非効率とのことです。

そうなると一体どのようにバッファを保持するべきなのかわからず、質問させていただきました。
235デフォルトの名無しさん:2013/08/07(水) 23:31:08.19
きゅーうえうえじゃなかった、Queueを使えばいいじゃない
Queue<byte[]>とかQueue<ByteBuffer>とかでスレッドで同期させる
236デフォルトの名無しさん:2013/08/07(水) 23:35:45.89
そういやパイプストリームとかいうそのためのソリューションがあったな
使ったこと無いから詳しくないが
237デフォルトの名無しさん:2013/08/07(水) 23:36:00.14
>>217
間違っている。javaっぽくポリモーフィズム使いまくりでだとC/C++よりも倍近く早い。
算術演算や配列処理などの組み合わせでゴリゴリ糞コード書いている限りC/C++よりも倍近く遅い。
java1.7では1.6よりも1.5倍ほど速度改善しており、
ループの回数が多くなるとどんどん速度アップするので動的に最適化していると思われる。
238227:2013/08/08(木) 00:15:14.81
どれも一筋縄では行かなそうですね。
諦めてC++で実装したところ理論値に近いパフォーマンスが出たのでこれで回答は締め切らせて頂きます。

Java…(笑)
239227:2013/08/08(木) 01:14:28.27
>>235さんの方法で実装したらC++と全く同じ理論値そのままのパフォーマンスが出ました。
240デフォルトの名無しさん:2013/08/08(木) 04:27:53.16
IOが障害になってるならいくらドカタ専用言語javaでも遅いはずないだろ
241デフォルトの名無しさん:2013/08/08(木) 04:37:16.13
読み込んでいる内容を読み込んだ脇から書き出していくのか
全く想像もつかない処理だは
242デフォルトの名無しさん:2013/08/08(木) 04:39:20.99
入力したキーがリアルタイムで送信されるチャットシステムとかかな
243デフォルトの名無しさん:2013/08/08(木) 10:42:54.62
てst
244デフォルトの名無しさん:2013/08/08(木) 10:51:03.05
ここまでデータ圧縮の話なし。
245デフォルトの名無しさん:2013/08/08(木) 19:40:54.73
1 → 1B
12 → 12B
123 → 123B
1234 → 1.23KB
12345 → 12.3KB
123456 → 123KB
1234567 → 1.23MB
12345678 → 12.3MB

みたいな感じで整数を3ケタくらいの大きさ単位を含む数字に変換するクラスとかメソッドってある?
246デフォルトの名無しさん:2013/08/08(木) 21:56:51.72
intの8ビットをそれぞれフラグとして使いたいのですが、ネットで調べてもどうしても理解できません。
int flgInts = 0; に
01010101 というフラグを設定して、
boolean[] flgBooleans = new boolean[8]; にそれぞれフラグを代入するにはどうすればいいでしょうか。
247デフォルトの名無しさん:2013/08/08(木) 22:01:18.61
flgBooleans[0] = flgInts & 0x1 > 0
flgBooleans[1] = flgInts & 0x2 > 0
flgBooleans[2] = flgInts & 0x4 > 0
flgBooleans[3] = flgInts & 0x8 > 0
flgBooleans[4] = flgInts & 0x10> 0
flgBooleans[5] = flgInts & 0x20 > 0
flgBooleans[6] = flgInts & 0x40 > 0
flgBooleans[7] = flgInts & 0x80 > 0
248デフォルトの名無しさん:2013/08/08(木) 22:04:14.49
>>245
そんなもん5分で書ける
それ丸めかたとか1024単位or1000単位とかアプリの要件によって様々だから
標準で用意されてても意味ない
249デフォルトの名無しさん:2013/08/08(木) 22:06:19.10
5分で書けるとか天才か
250デフォルトの名無しさん:2013/08/08(木) 22:06:57.76
一心不乱にタイプでもするのだろうか
251デフォルトの名無しさん:2013/08/08(木) 22:08:10.63
>>247
下位4ビットまでは、0x01、0x02、0x04、0x08と乗算なのに
4ビット→5ビットで0x08→0x10と乗算でないのは、なぜなのでしょうか?
252デフォルトの名無しさん:2013/08/08(木) 22:09:37.70
0x8 * 2 → 0x10
253デフォルトの名無しさん:2013/08/08(木) 22:12:03.71
0x1 = 1
0x2 = 2
0x4 = 4
0x8 = 8
0x10 = 16
0x20 = 32
0x40 = 64
0x80 = 128
0x100 = 256
254デフォルトの名無しさん:2013/08/08(木) 22:15:12.01
>>252
なるほど!
ならflgIntsに01010101を設定するのは、

int flgInts = 0;
flgInts += 0x01;
flgInts += 0x04;
flgInts += 0x010;
flgInts += 0x040;

ってことでしょうか。
255デフォルトの名無しさん:2013/08/08(木) 22:17:10.40
>>254
int flgInts = 0;
flgInts += 0x01;
flgInts += 0x04;
flgInts += 0x010;
flgInts += 0x040;
×この方法だとflgIntsに同じフラグを立てられない

int flgInts = 0;
flgInts |= 0x01;
flgInts |= 0x04;
flgInts |= 0x010;
flgInts |= 0x040;
○ビット操作であることを意識する
256デフォルトの名無しさん:2013/08/08(木) 22:21:19.83
>>255
int flgInts = 0;
flgInts |= 0x01;
flgInts |= 0x04;
flgInts |= 0x010;
flgInts |= 0x040;
○ビット操作であることを意識する
というのは理解できました。

×この方法だとflgIntsに同じフラグを立てられない
というのはどういった意味でしょうか?
257デフォルトの名無しさん:2013/08/08(木) 22:29:55.07
>>256
すでに1だった場合
繰り上がりで値が変わる
258デフォルトの名無しさん:2013/08/08(木) 22:33:25.11
>>257
理解しました。ありがとうございました!
259デフォルトの名無しさん:2013/08/08(木) 22:47:10.35
ガチなのか釣りなのか分からんな
260デフォルトの名無しさん:2013/08/08(木) 22:48:13.83
ビットでフラグ管理しようとする人間がする質問じゃないわな
261デフォルトの名無しさん:2013/08/08(木) 23:41:13.95
ビット操作ならBitSetを使えばいいよ
262デフォルトの名無しさん:2013/08/08(木) 23:42:54.06
>ビットでフラグ管理

これって旧時代の超低スペックのメモリ1MB未満時代のテクニックじゃないの?数GBのメモリの現代でいらんことだろ
263デフォルトの名無しさん:2013/08/08(木) 23:47:40.60
1+2+4==7
264デフォルトの名無しさん:2013/08/09(金) 00:02:31.49
>>262
メモリの節約はパフォーマンスの向上につながる
バイナリでファイルを読み書きしたり送受信したりする場合、IOを減らす意味で大きな効果があるよ
超ガチな計算ならメモリアクセスがボトルネックになったりするのでそれを減らせれば速くなる場合も
265デフォルトの名無しさん:2013/08/09(金) 00:03:58.55
ネットワーク通信周りだとビット管理せなきゃならんでしょ
266デフォルトの名無しさん:2013/08/09(金) 00:05:27.85
EnumSet使えよ。
267デフォルトの名無しさん:2013/08/09(金) 00:18:06.45
>>264
Javaでやっても意味ないだろ…
268デフォルトの名無しさん:2013/08/09(金) 00:21:40.28
>>267
スクリプト言語ならメモリアクセスのコストは命令の実行コストとくらべて無視できるけど
Javaはそこまで遅くないぞ
スクリプトでもIOを減らすのは効果あるし
269デフォルトの名無しさん:2013/08/09(金) 00:28:35.27
メモリ節約は情報圧縮の技術がふんだんに使われるから圧縮された情報を伸張するのに処理コストが
270デフォルトの名無しさん:2013/08/09(金) 00:38:33.87
Web土方にマイクロベンチマークは不要
JOIN禁止とか特殊なSQL最適化をやった方がリターンが大きい
271デフォルトの名無しさん:2013/08/09(金) 00:40:21.36
>>248
5分のコードください
GPLでお願いします
272デフォルトの名無しさん:2013/08/09(金) 00:41:05.17
ネットからコピペに5分かかるってことだろ
273デフォルトの名無しさん:2013/08/09(金) 00:43:28.61
一心不乱に打ち込めば1万行のコードくらい5分で書ける
274デフォルトの名無しさん:2013/08/09(金) 00:45:34.25
そういう行数って空白行やコメント行や鉤括弧だけの行とかもカウントされるん?
275デフォルトの名無しさん:2013/08/09(金) 00:46:19.10
まず単位を調べるのに5分掛かる
1024モードの小数点数部をどう丸めるか考えるのに20分掛かる
276デフォルトの名無しさん:2013/08/09(金) 00:48:30.74
1|2|4==7
277デフォルトの名無しさん:2013/08/09(金) 00:53:51.51
はいはい、複数のフラグの検査が一度に行えるって言いたいんでしょ
278デフォルトの名無しさん:2013/08/09(金) 00:55:43.39
flgInts == 7



flgInts & 7 == 7

では意味が違います
279デフォルトの名無しさん:2013/08/09(金) 01:01:10.01
その変数の命名の仕方はアウト
280デフォルトの名無しさん:2013/08/09(金) 01:03:08.62
バカにはムリw
281デフォルトの名無しさん:2013/08/09(金) 01:32:27.58
どのビットが何のためのフラグか分かりにくいから
こういう管理はよろしくない
何のフラグか分かりやすいよう一つ一つbooleanで定義してやるべき
282デフォルトの名無しさん:2013/08/09(金) 01:49:47.85
android APIでは使われてるよな。1つの引数で複数のフラグ渡せて便利だからかな。
283デフォルトの名無しさん:2013/08/09(金) 02:52:20.07
すみません質問があります。
GWTよりデプロイした複数のwarフォルダを配置させる方法がわかりません。
http://****/ここ
に複数置きたいです。
RPCを使っていない場合は問題ないのですが、RPCを使うとき、○○○Serviceが見つからないというエラーがでます。
○○○ServiceというのはClientパッケージに置く、RemotoServiceインターフェースを継承したクラスです。
もっというと、そのクラスのこのアノテーションに指定したvalueだと思います。
@RemoteServiceRelativePath("○○○");

非同期通信を使う場合、web.xmlに
....
<url-pattern>/モジュールファイルのrename-toで指定した値/○○○</url-pattern>

のように指定しなければいけません。この辺りが原因かと予想しているのですが解決策がみつかりません。

@GWTでRPCを利用しweb.xmlファイル、@RemoteServiceRelatiovePathを一般的な方法で使う場合、デプロイしたwarフォルダ名は変えて良いのか?
Aそもそもデプロイ後にweb.htmlを編集してurl-patternを変えることが有効なのか?(RPCを使う場合)
この辺りがわかりません。助言願います。
284デフォルトの名無しさん:2013/08/09(金) 05:08:29.35
状況が良く読めないのだけど、(1)(2)はとりあえず運用上面倒臭いこと事欠かないので
他の解決策を模索した方が良いように思える。

「複数のwarフォルダ」というのがよく見えないのだけれども、
・複数のGWTプロジェクトがあって
・故に複数のwarファイルがあって
・それらを一つのサーブレットコンテナ、例えばTomcatにデプロイして
・一方のプロジェクト内clientから他方のプロジェクト内で定義されたサービス
 を呼ぶ

とかいう話かな。・・Serviceが見つからないというのはデプロイ後にサービスを
クライアントから呼んだときに出るエラー?
それとも開発時に出るコンパイルエラー?
@RemoteServiceRelativePathアノテーションの値を・・Serviceとは別の値にして
RPCの呼び出しに失敗しているのかそれともJavaScript生成も含めたコンパイルの
問題なのかはっきりさせた方が良いと思う。
285デフォルトの名無しさん:2013/08/09(金) 05:31:37.68
セキュリティスレは立てないんですか。
286デフォルトの名無しさん:2013/08/09(金) 06:37:09.18
intの32個あるbitをフラグにする話 もう終わってるかもしれないけど

下位4ビットを立てる場合
int flag = 0;
flag = flag | 1;
flag = flag | 1 << 1;
flag = flag | 1 << 2;
flag = flag | 1 << 3;

立ってるか確認
flag & 1
flag & 1 << 1
flag & 1 << 2
flag & 1 << 3

7から2進数リテラルが使えるので
static final int MASK1 = 0b0000000000000000000000000000000000001;
static final int MASK2 = 0b0000000000000000000000000000000000010;
flag = flag | MASK1;
MASK1 & flag こんな書き方もできるようになってたりする
287デフォルトの名無しさん:2013/08/09(金) 06:49:46.80
いや、他のライブラリや言語とやり取りするのに必要とかよほど尖った処理をするので
無い限り、使えるところは普通にEnumSet使おうよ・・・
288デフォルトの名無しさん:2013/08/09(金) 07:04:48.98
>>284
プロジェクト名ディレクトリ/war/welcom.html,WEB-INF等
みたいな配置が一般的なのですかね?それだと確かにwarディレクトリ名が干渉しあわないですね・・・。

実は一番やりたいのは、デプロイした一つのwarフォルダの中に二つ目のwarフォルダを収めたいです(おそらく異様?だと思うのですが出来ればあわせて一つのサービスのようにしたい)。
それをしようとすると、どうもRPCを使う場合で二つ目のパスがうまくいかないです。

/war(一つ目)/二つ目プロジェクト名/war(二つ目)/WEB-INF/web.xml

見たいにしたいということです。ですが、お決まりどおりに二つ目のweb.xmlを設定すると、
<url-pattern>/rename-toした値/○○○Service</url-pattern>

となり、「/」からはじまるため、期待する
/war(一つ目)/二つ目プロジェクト名/○○○Service
ではなく
/○○○Service
になっているのでは?と考えました。それにあわせて色々設定しているんですが中々うまくいきません
やはり、GWTで作った一つのサービス毎に並列に同じ階層に並べた方がいいのですかね?
webappとしてのマッピングはサーバーを書くときにまとめてしようと考えており、これら二つのサービスは二つで一つのものにしたくてこのような考えに至りました。
289デフォルトの名無しさん:2013/08/09(金) 07:26:07.26
>>245 数値ではなく数字でおkなら
java.text.デシマルフォーマットみたいなクラスがあるけどどうだろう
290デフォルトの名無しさん:2013/08/09(金) 07:45:47.76
>>245
org.apache.commons.io.FileUtils.byteCountToDisplaySize
291デフォルトの名無しさん:2013/08/09(金) 08:12:14.92
自己解決しました
292デフォルトの名無しさん:2013/08/09(金) 18:47:54.91
java.util.Vectorのインスタンスを内包するクラスで
最初の要素を取得するメソッドで最初の要素が無い場合nullを返したいとき
サイズ見て返す処理と、例外拾って返す処理のどっちのほうがいいの?

//サイズ見て返す
public Foo firstFoo() {
 if (vector.size() > 0) {
  return vector.firstElement();
 } else {
  return null;
 }
}
//例外拾って返す
public Foo firstFoo() {
 try {
  return vector.firstElement();
 } catch (NoSuchElementException e) {
  return null;
 }
}
293デフォルトの名無しさん:2013/08/09(金) 18:52:53.79
>>292
最初の要素がない、というケースがどれほどあるかにもよるけど、
基本的には前者のがいい。
後者なら例外そのまま投げちまうのもアリ。
294デフォルトの名無しさん:2013/08/09(金) 19:03:49.22
>>292
例外は、名前の通り、例外的な状況で使おう
「最初の要素が無い場合」 というのが、あまり発生しない例外的な状況なら、例外でもいい
普通に頻繁に発生する状況なら、サイズを調べる方がいい
295292:2013/08/09(金) 19:13:37.10
>>293-294
d
じゃあ前者にするよ
296デフォルトの名無しさん:2013/08/09(金) 20:16:53.68
引数がnullであって欲しくない場合に出す例外は
NullPointerException?IllegalArgumentException?どっちがいいの?
297デフォルトの名無しさん:2013/08/09(金) 20:17:46.57
System.err.println("null");
298デフォルトの名無しさん:2013/08/09(金) 20:22:14.87
>>296
IllegalArgumentExceptionがいい。
IllegalArgumentExceptionなら引数が不適切だってわかるけど、
NullPointerExceptionだと何が不適切なのかわがんねっす。
299デフォルトの名無しさん:2013/08/09(金) 20:30:53.89
>>296
throw new NullPointerException("仮引数名") でよくね?
300デフォルトの名無しさん:2013/08/09(金) 20:38:33.82
例えば
java.io.FileのコンストラクタFile(URI uri)を見てみようか
これはuriがnullだったらNullPointerException、uriが前提条件を満たさない場合はIllegalArgumentExceptionを返す
すなわち、ぬるぽが正しい
301デフォルトの名無しさん:2013/08/09(金) 20:42:26.89
全くもって正しいとは思わないが従うより仕方がない
明示的にnullチェックしないのはJavaの悪しき慣習だよ
302デフォルトの名無しさん:2013/08/09(金) 20:43:37.65
>>296
causeにnullpointerexcetion入れとくと…めんどくさいか。
303デフォルトの名無しさん:2013/08/09(金) 20:43:58.57
java.util.CalendarのメソッドcompareTo(Calendar anotherCalendar)も
anotherCalendarがnullならNullPointerException、anotherCalendarが無効値ならIllegalArgumentExceptionと
コンストラクタでもメソッドでもぬるぽが正しいとこれで分かるはずだ
304デフォルトの名無しさん:2013/08/09(金) 20:46:04.21
むしろ引数がnullでIllegalArgumentExceptionを吐き出すクラスがあったら教えてほしいくらいだ
305デフォルトの名無しさん:2013/08/09(金) 20:52:02.47
nullと他の異常値を区別する合理的な理由はなく、
引数以外のぬるぽと紛らわしいだけだよね
nullチェックをサボれる場合があるという利点なのかわからん利点があるくらいか
306デフォルトの名無しさん:2013/08/09(金) 20:56:56.14
>>305
そうなんよね。
IllegalArgumentExceptionだと引数がまずいって限定されるのだけど、
NullPointerExceptionだとこんだけある。
null オブジェクトのインスタンスメソッドの呼び出し
null オブジェクトのフィールドに対するアクセスまたは変更
null の長さを配列であるかのように取得
null のスロットを配列であるかのようにアクセスまたは修正
null を Throwable 値であるかのようにスロー

ぬるぽ使ったら負けだと思う。
307デフォルトの名無しさん:2013/08/09(金) 21:00:34.08
.NETだとArgumentExceptionを継承したArgumentNullExceptionを投げるルールになってて
ぬるぽ例外とは別だったりする
Javaの設計当初はこんなに土方がぬるぽ飛ばしまくる言語になるとは想像もしてなくて
ちょっと記述を楽しようとしちゃったんだろうな
308デフォルトの名無しさん:2013/08/09(金) 21:06:44.71
じゃあIllegalArgumentExceptionから派生させてArgumentNullExceptionを作ってやればいいってことかい?
309デフォルトの名無しさん:2013/08/09(金) 21:12:19.35
プロパティでまたは null パラメーター NullPointerException ですか?
http://ja.softuses.com/170
310デフォルトの名無しさん:2013/08/09(金) 21:15:58.25
NullArgumentException
311デフォルトの名無しさん:2013/08/09(金) 21:16:39.57
NullArgumentException (Commons Lang 2.6 API)
http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/NullArgumentException.html

引数nullはこれを使いなさい
312デフォルトの名無しさん:2013/08/09(金) 21:16:40.99
>>299
俺はこれだな。↓みたいなボイラープレートコードが大量にある。
@NotNullでBean Validationなしで同じ事してほしいわw

if (param == null) {
throw new NullPointerExpection("param");
}
313デフォルトの名無しさん:2013/08/09(金) 21:30:43.56
ぬるぽはキャッチする馬鹿がいるしなあ
314デフォルトの名無しさん:2013/08/09(金) 21:52:40.79
NullArgumentException (Oracle Fusion Middleware Java API Reference for Oracle Extension SDK)
http://docs.oracle.com/cd/E16162_01/apirefs.1112/e17493/oracle/javatools/util/NullArgumentException.html

ワロタ
>>311のapacheさんはIllegalArgumentExceptionの派生でNullArgumentExceptionを作ってるけど
このoracleさんのはNullPointerExceptionの派生でNullArgumentExceptionを作ってるわ
315デフォルトの名無しさん:2013/08/09(金) 21:57:05.42
NullArgumentExceptionでググると統一されてないのな
NPEで作るのかIAEで作るのかはっきりさせてほしい
316デフォルトの名無しさん:2013/08/09(金) 22:08:18.61
情報量が多いって意味では throw new IAE("param: " + param) がいいのかな
317デフォルトの名無しさん:2013/08/09(金) 22:14:16.11
そもそもnullが存在するのが悪い
finalじゃないフィールドの宣言時に初期値としてヌルオブジェクトを入れてnullを返すメソッドはヌルオブジェクトを返すようにラップしてしまおう
318デフォルトの名無しさん:2013/08/09(金) 22:26:50.39
>>317
クラスの外から引数にnullが渡されるのは防げないだろ
わざわざチェックして例外を投げるのは呼び出し元を信用できないからだ
自分やお約束の通じる相手からしか呼ばれないなら極端な話チェックなんかしなくてもいい
319デフォルトの名無しさん:2013/08/09(金) 22:27:56.68
Javaって無駄な処理が多いよね
>>292のなんかも結局VectorクラスのfirstElement()メソッド内でもサイズのチェックするわけだし、二重のチェックしてることになる
elementAt(index)を使ってもindexが有効範囲内にあるかチェックするわけだし
無駄な処理大杉
320デフォルトの名無しさん:2013/08/09(金) 22:28:50.60
Javaの標準ライブラリの慣習がNPEなんだからNPEかNPEの派生クラス作って返すべき
321デフォルトの名無しさん:2013/08/09(金) 22:32:56.81
void hoge(HogeClass a) throws NullPointerException {
if (a == null) throw new NullPointerException("param a"); //←これ必要か?
a.method(); //aがnullならここでNullPointerExceptionが発行されるんじゃないの?
}
322デフォルトの名無しさん:2013/08/09(金) 22:37:56.73
凡プログラマ量産言語と化してる。しかも柔軟性皆無。オブジェクト化の意味あんのか
323デフォルトの名無しさん:2013/08/09(金) 22:38:04.31
フェイルファストの利点は副作用が起きる前に事を止めることにある
324デフォルトの名無しさん:2013/08/09(金) 22:40:26.71
>>321
それだと何が原因でぬるぽが発生したのかわからん。

仮引数名書いてないなら無駄だけど、仮引数名書いておくなら全然無駄じゃないぞ。
325デフォルトの名無しさん:2013/08/09(金) 22:53:40.66
>>317
nullを発明したアントニーホーアさんも謝罪してたねw
私がnull参照を作ってしまったばかりにすまぬ(´・ω・`)と。
326デフォルトの名無しさん:2013/08/09(金) 23:20:31.05
>>318
俺が作るものを他人が使うわけがないから全く問題ない
327デフォルトの名無しさん:2013/08/09(金) 23:24:17.47
配列があふれても平気な顔している言語は初学者に妙な癖を与えてしまうと思う
初学者ならまだしも、配列の足し算が大好きな(?)妙なコードをたまに見る
328デフォルトの名無しさん:2013/08/09(金) 23:24:55.94
自分しか使わないものなら
細かいエラーチェックなんてしなくていいしな
329デフォルトの名無しさん:2013/08/09(金) 23:34:02.43
自分しか使わんもんでもどっかでミスしてnullを渡すかもしれんだろ!
330デフォルトの名無しさん:2013/08/09(金) 23:48:21.53
まぬけ
331デフォルトの名無しさん:2013/08/10(土) 00:03:22.60
引数のチェックで複数のメソッドで共通するチェック項目があるんだけど
チェックで引数で違反があった場合に例外を投げたい

boolean checkArgs(Foo arg1, Bar arg2) { 〜 }
void hoge(Foo arg1, Bar arg2) throws IllegalArgumentException {
if (!checkArgs(arg1, arg2)) throw new IllegalArgumentExceptino();
}
void hoge2(Foo arg1, Bar arg2, Hoge arg3) throws IllegalArgumentException {
if (!checkArgs(arg1, arg2)) throw new IllegalArgumentExceptino();
}
とするのがいいのか
void checkArgs(Foo arg1, Bar arg2) throws IllegalArgumentException { 〜 }
void hoge(Foo arg1, Bar arg2) throws IllegalArgumentException {
checkArgs(arg1, arg2);
}
void hoge2(Foo arg1, Bar arg2, Hoge arg3) throws IllegalArgumentException {
checkArgs(arg1, arg2);
}
とするのがいいのか
それともチェックする内容同じでもcheckArgs()みたいの作らないでhogeとhoge2それぞれでチェックしたほうがいいのか
332デフォルトの名無しさん:2013/08/10(土) 00:37:33.90
1番目。
引数をチェックするのが checkArgs の役割だから、checkArgs が「おっと、これは想定外!」って例外を投げるのは意味的におかしい。

ただし checkArgs だと引数をチェックして何がどうだったら true なのか false なのかが明確でないから、メソッド名は工夫した方がいいかも。
333デフォルトの名無しさん:2013/08/10(土) 00:53:42.08
検査例外
334デフォルトの名無しさん:2013/08/10(土) 01:23:47.03
FooとかBarとかhogeという名前は良くてcheckArgsという名前だけツッコム
335デフォルトの名無しさん:2013/08/10(土) 01:31:23.89
>>334
今は引数が何なのかは議論してないからな。
揚げ足取りにしてはレベルが低いぞ。
336デフォルトの名無しさん:2013/08/10(土) 01:39:32.61
ちょっとした質問するときも
こじゃれたメソッド名を考えろと
337デフォルトの名無しさん:2013/08/10(土) 01:44:48.88
回答が欲しいなら質問者は回答者がパっと見で分かりやすい名前をつけるべき
338デフォルトの名無しさん:2013/08/10(土) 01:45:43.62
checkArgsという名前は何をしたいのかサッパリ分からない悪い名前、本来なら回答もなくスルーされるべき質問。回答もらえただけで感謝すべきレベル。
339デフォルトの名無しさん:2013/08/10(土) 01:49:37.15
なら黙っててくださいね^^
340デフォルトの名無しさん:2013/08/10(土) 01:52:10.77
はよ次の質問
341デフォルトの名無しさん:2013/08/10(土) 03:10:00.17
自演くさい
342デフォルトの名無しさん:2013/08/10(土) 06:19:56.35
DB的なものからDataを取り出すとき

List<Data> getDataList(String key, int value)

keyがnullだったら検査例外イリーガルアーギメントでぶっ飛ぶという内容の話題をしてるの?

valueの範囲が0以上とか明確に決まっているなら、範囲外でイリーガルならわかるけど
keyはnullチェックしないで、そのまま処理継続したけっかヌルポというスタイルでいいと思う
結果size0のList<Data>を帰しても問題ない

が、size0のList<Data>ではなくnullを帰すのは断固反対する
343デフォルトの名無しさん:2013/08/10(土) 07:45:24.91
何が検査例外だって?
344デフォルトの名無しさん:2013/08/10(土) 08:06:19.41
swingで質問なんですけど、panelにlabelとbuttonを重ねたいんですけどいい方法ありませんか
345デフォルトの名無しさん:2013/08/10(土) 09:09:14.23
ありません
346デフォルトの名無しさん:2013/08/10(土) 10:58:48.42
>>344
z-index使えるべ
他にも手法はいくらでもあるしggってみて
透過もできる
347デフォルトの名無しさん:2013/08/10(土) 11:25:30.86
本当にnullチェックが必要なら仕方ないが、その必要が無いのにチェックしているのはリファクタリングの対象として定石
また、必要な場合はnullオブジェクトが適応できる可能性あり
348デフォルトの名無しさん:2013/08/10(土) 11:27:12.22
チェックしないと静的解析でNGになる
349デフォルトの名無しさん:2013/08/10(土) 11:31:55.37
>>348
1行目の通り。
だけど静的解析でNGになる場合でのそれは初期値代入でスマートになることのほうが明らかに多い
350デフォルトの名無しさん:2013/08/10(土) 12:55:29.22
>>332
checkArgsとhogeは引数に対して同じ条件を要求するメソッドと考えれば
例外が連鎖してるだけでなんら不思議はないはず
351デフォルトの名無しさん:2013/08/10(土) 13:01:34.35
普通はcheckとdoとcheckAndDoを作るだろうな
352デフォルトの名無しさん:2013/08/10(土) 13:02:28.80
>>346
ありがとうございます。
取り敢えずoverlaylayoutで試して見たんですけどうまく重なりませんでした。他の方法も試してみます。
353デフォルトの名無しさん:2013/08/10(土) 13:50:00.45
>>346
ありがとうございます。
取り敢えずoverlaylayoutで試して見たんですけどうまく重なりませんでした。他の方法も試してみます
354デフォルトの名無しさん:2013/08/10(土) 13:51:11.40
暑さのせいで朦朧としているのか同じレスが2連続して見える
355デフォルトの名無しさん:2013/08/10(土) 16:07:06.60
>>346
ありがとうございます。
取り敢えずoverlaylayoutで試して見たんですけどうまく重なりませんでした。他の方法も試してみます
356デフォルトの名無しさん:2013/08/10(土) 20:02:39.74
馬鹿回答者はちゃんとテストして動くの確認してから回答書くように
357デフォルトの名無しさん:2013/08/10(土) 20:49:04.63
>>354
それはやばいな。俺はクーラーつけてないせいか、3連続みえる
358デフォルトの名無しさん:2013/08/10(土) 20:57:23.47
老眼だろ。
俺が老眼だから間違いないw
359デフォルトの名無しさん:2013/08/10(土) 21:02:10.10
爺さんがjava7についてこれるわけねえだろ!java1でも使ってろ!
360デフォルトの名無しさん:2013/08/10(土) 21:03:18.64
俺は老眼じゃないから
>>352 >>353 が同じレスじゃないことがはっきり見えるぜ
361デフォルトの名無しさん:2013/08/10(土) 21:10:50.71
読点
362デフォルトの名無しさん:2013/08/10(土) 21:13:02.94
Java7って本当は7じゃなく1.7なんでしょう?2.0はいつ出るん?
363デフォルトの名無しさん:2013/08/10(土) 21:27:37.00
Java10は1.10か
364デフォルトの名無しさん:2013/08/11(日) 01:13:12.26
Windows 100
これはさすがにダサい
365デフォルトの名無しさん:2013/08/11(日) 01:20:01.48
Javaはまだマイナーバージョンアップしかしていない未来ある言語。メジャーバージョンアップしたときJavaの時代が始まる
366デフォルトの名無しさん:2013/08/11(日) 01:42:43.22
既存のクラス(String)にメソッドを追加したいのですが、
javascriptでいうprototypeのようなものはjavaにはありませんか?
367デフォルトの名無しさん:2013/08/11(日) 01:43:49.54
オリジナルJREを作る
368デフォルトの名無しさん:2013/08/11(日) 01:53:44.70
スタブクラスって言うんだっけ
ブートストラップクラスパスとかいうので指定してコンパイルするとかなんとか
369デフォルトの名無しさん:2013/08/11(日) 01:53:56.71
eclipseでエクスポートしたrunnableなjarファイルとは誰にとってrunnableなのですか?
確かに自分でダブルクリックすると実行してくれます。
違うOSのパソコンで試してみても確かに実行できました。

@これはJavaがパソコンに入っていたからという認識でよろしいでしょうか?
Aまた、自分が開発時にしようしたjdkやjreのバージョンと、実行者の環境のJavaのバージョンが一致していない場合、どのように振舞うのでしょうか?
B標準API以外のライブラリを使った場合、そのライブラリも含めて書き出せば使用者がライブラリをクラスパスに指定する必要はないと考えてよろしいですか?
370デフォルトの名無しさん:2013/08/11(日) 01:55:37.02
jarファイルをアプリとして実行させるには環境へのJVM(JRE)のインストールが必要
371デフォルトの名無しさん:2013/08/11(日) 01:58:45.22
LinuxやUNIXにも拡張子の関連付けってあるの?
372デフォルトの名無しさん:2013/08/11(日) 02:00:35.84
そもそもアプリのアイコンをダブルクリックして起動するという発想自体があまり…
Javaを扱うのはサーバー管理者だからね
373デフォルトの名無しさん:2013/08/11(日) 02:02:28.67
ユニックス系はシェルでの設定次第とかじゃないの
やり方によってはパーミッションで実行可能フラグ立てたりとかかな
ユニックス系のシェルって拡張子じゃなくてファイルのヘッダとか見てファイルタイプ識別してるぽい印象
374366:2013/08/11(日) 02:04:00.16
どうやら、まともにやる方法はないようなので、
諦めて適当なメソッドに引数として、渡すことにしました。
ありがとうございました。
375デフォルトの名無しさん:2013/08/11(日) 02:06:14.80
最近の若い奴はすぐ諦めてしまう
376デフォルトの名無しさん:2013/08/11(日) 02:08:28.23
>>369
我らjavaドカタにそんな難しい質問しないでください
377デフォルトの名無しさん:2013/08/11(日) 02:10:12.10
互換性の無いバージョンならエラーメッセージとか出るんじゃね
378デフォルトの名無しさん:2013/08/11(日) 02:11:07.77
下位互換性が無いと困るから上位互換なら確実としてJava7じゃなくJava1でコンパイルしてやるべきだな!
379デフォルトの名無しさん:2013/08/11(日) 02:12:10.85
デスクトップアプリとして配るんならアプリ自体にJREを同梱しとけ
バージョン気にしなくていいしシステムにJREをインストールさせるのは想像以上に嫌がられる
eclipseみたいに起動用アイコンを用意することもできるし
380デフォルトの名無しさん:2013/08/11(日) 02:12:40.14
javaドカタはwebアプリとスマホしかつくれません
381片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/11(日) 02:13:44.64
>>369
@はい。
Aマニュアルを参照。
Bはい。
382デフォルトの名無しさん:2013/08/11(日) 02:14:00.35
>>380
ほんと、なんで初心者向けのJava本ってSwing教えるんだろうな
あれこそが誤解の元
383デフォルトの名無しさん:2013/08/11(日) 02:14:04.68
>>369
@知らんがそんな関連付けしやがるのはOS組み込みかJavaのインストーラ以外考えられんよね
A古い環境で新しいバイナリは動かん。
BMANIFEST.MFに書いておけばね。Netbeansでビルドして中のjarのMANIFEST.MF見ると勉強になる。
Cマルチプラットフォーム意識するなら丸数字使うな
384デフォルトの名無しさん:2013/08/11(日) 02:17:12.07
MS-IME2010なら変換の際に環境依存文字と出るのだがな
385デフォルトの名無しさん:2013/08/11(日) 02:20:10.89
WindowsのJREインストーラが勝手にjarを関連付けるのって
セキュリティ的に問題あるよね
普通の人はexeは警戒するけどjarなんて知らないだろう
386デフォルトの名無しさん:2013/08/11(日) 02:50:26.79
言葉尻をとらえる前にちゃんと質問に答えてやれよ。

>>369
(1) Java、正確には「Java Runtime Environment(JRE)」「Java実行環境」がパソコンに入っているから
(2) 詳しくは知らん。だが基本的にJavaは互換性を非常に重視するため、バージョンが違っても問題が起きるケースは少ない
(3) クラスパスを指定していない場合は「カレントディレクトリ」がクラスパスとして指定される
  ゆえにクラスパスを「明示的に」指定する必要はないが、その場合は自動的にカレントディレクトリに設定されることになる
387デフォルトの名無しさん:2013/08/11(日) 02:51:14.00
>>385
例えばPerlが.plを関連付けるのと何が違うんじゃ?
388デフォルトの名無しさん:2013/08/11(日) 03:02:38.32
インストーラがシステムに対しての拡張子との関連付けやってくれる場合は拡張子ついてるファイルダブクリで起動したりするけど
手動でも拡張子の関連付けの設定できるんよ、インストーラがついてない手動インストールとかだと自分でやったりするし
389デフォルトの名無しさん:2013/08/11(日) 03:04:31.89
パソコン初心者相談室か
390デフォルトの名無しさん:2013/08/11(日) 03:04:33.61
オプション指定無しのJavaって64MBくらいでメモリ不足で落ちなかったっけ?
今のJavaは知らんけど
391デフォルトの名無しさん:2013/08/11(日) 03:06:34.73
Vectorとかに古いJRE同梱アプリとかあるかな
392デフォルトの名無しさん:2013/08/11(日) 03:08:24.35
JRE同梱はアホの極み
何のためのJavaなんだよ
マルチプラットフォームである意味が全くないだろ
393デフォルトの名無しさん:2013/08/11(日) 03:10:55.53
DLLランタイム同梱のアプリとかいっぱい出回っていたけど
JRE同梱は流石に無いのか・・・

と思ったけど
ちょいと前に存在してたauのPC用アプリのLismo PortとかいうやつのインストーラがJRE同梱だった希ガス
394デフォルトの名無しさん:2013/08/11(日) 03:12:44.15
EclipseとかV2Cとか同梱バージョン付いてるのは珍しくない
395デフォルトの名無しさん:2013/08/11(日) 03:15:07.00
JRE同梱じゃなくてJREインストーラ同梱の間違いだったわ
396デフォルトの名無しさん:2013/08/11(日) 03:20:34.09
>>394-395
インストーラなんて同梱すんなよ。あほちゃう?
各OS向けに別のインストーラ入れなきゃならんわけで
Javaである意味がない。dll同梱してんのと変わらんやん
397デフォルトの名無しさん:2013/08/11(日) 03:24:54.63
Oracle Databaseにしろ商用CADにしろ同梱版なんて腐るほどある
398デフォルトの名無しさん:2013/08/11(日) 03:29:49.89
>>397
Oracle DatabaseにJRE同梱版なんてないけど。何しれっと嘘吹いてるの?
http://www.oracle.com/technetwork/jp/database/enterprise-edition/downloads/index.html
399デフォルトの名無しさん:2013/08/11(日) 03:30:45.83
>>398
お前Oracleのツールが何で動いてるかしらんのか
400デフォルトの名無しさん:2013/08/11(日) 03:32:40.39
>>398
> Oracle Universal Installerにより、Java Runtime Environment(JRE)のOracleバージョンが自動的にインストールされます。
http://docs.oracle.com/cd/E16338_01/install.112/b58878/intro.htm#i1005848
401デフォルトの名無しさん:2013/08/11(日) 09:51:52.45
Windows「じゃあ実行するよ」
402デフォルトの名無しさん:2013/08/11(日) 09:58:40.01
アプレットやWebStartさえ廃止すれば必要以上にセキュリティホールで叩かれることもないのに、
なんでボラクルは今時あんな誰も使ってないゴミに拘るんだろうな
Javaのアイデンティティみたいなもんなのか
403デフォルトの名無しさん:2013/08/11(日) 10:18:31.12
>>374
Stringクラスを継承したMyStringクラスとか作って
それに使いたいメソッド定義すればいいだけ
404デフォルトの名無しさん:2013/08/11(日) 10:28:50.46
Stringはfinalクラスだっての
値オブジェクトだからな
405デフォルトの名無しさん:2013/08/11(日) 15:45:50.69
追加したい機能がわからないから回答できないとおもうの

finalだから継承はできないけど、文字列を独自のアルゴリズムでどうこうしたいなら
そういうStringUtilなクラスを作るべし
406366:2013/08/11(日) 15:49:17.06
簡単に言うとjavaの正規表現があまりに使いにくいため、
javascriptでいうmatchメソッドを追加したいのです。
407デフォルトの名無しさん:2013/08/11(日) 15:52:48.78
アノテーションとstaticインポートの組み合わせてmixinできてもいいのにな
第一引数に拡張したい型を取るstaticメソッドとかでさ、他の言語でもあるだろ
408デフォルトの名無しさん:2013/08/11(日) 15:58:12.23
すみません質問があります。
今までプログラミングを一度もやったことがないのですが
ネット関係に興味があり何か自分でプログラミングして作ってみたいと思ってます
スマホのアプリもjavascriptが必要であるとのことで最終的にはスマホのアプリも作れればいいなと思ってます
まず初めにjavascriptの入門書を1冊買ってやってみようかと思ってるのですが
入門書を買わなくてもネット上にjavascriptの使い方はあるのですかね?
それともやはり本を1冊かってやってみたほうが身に付くのでしょうか?
409デフォルトの名無しさん:2013/08/11(日) 15:59:51.72
>>408
プログラム言語程度ネットで事足りることは多いけど
昨今は裏でかなりトリッキーなことしてることが多いから本買った方がいいよ
入門はネット、中級書を書店・Amazonで
410デフォルトの名無しさん:2013/08/11(日) 16:02:40.44
>>409
ありがとうございます
入門書を1冊かってやってみることにします
411デフォルトの名無しさん:2013/08/11(日) 16:32:53.84
>>374
Stringクラスを継承したMyStringクラスとか作って
それに使いたいメソッド定義すればいいだけ
412デフォルトの名無しさん:2013/08/11(日) 16:36:02.15
413デフォルトの名無しさん:2013/08/11(日) 16:42:40.24
>>406
具体的には、今どう書いているのを match メソッドを作ってどう書き直したいの?
String クラスはサブクラス化できないから >>405 の人が書いているように StringUtils クラスを作ることになると思うけど、Apache Commons とかで代用できそうなのがあるかもしれない。
414366:2013/08/11(日) 16:58:29.51
>>413
Apache Commonsてなんすか?
415デフォルトの名無しさん:2013/08/11(日) 17:00:58.62
>>413
abcDabcEabcF
という文字列に
abc.
で検索した結果を、
["abcD", "abcE", "abcF"]
という形の配列で得たいのです。
これを
配列="abcDabcEabcF".自作メソッド("abc.");
のように簡単に実行したいです。
416366:2013/08/11(日) 17:01:55.99
>>414
こいつは366じゃないので無視してください。
私もよくわかっていないので自力で調べます。
417デフォルトの名無しさん:2013/08/11(日) 17:09:17.64
>>415
public class StringUtil {
  public static String[] match(String target, String regex){
    ArrayList<String> list = new ArrayList<String>();
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(target);
    while (m.find()){
      list.add(m.group(0));
    }
    return list.toArray(new String[0]);
  }
}
418366:2013/08/11(日) 17:14:11.79
>>417
わざわざコードまでありがとうございます!
理解してから色々拡張してみます。
419デフォルトの名無しさん:2013/08/11(日) 19:12:37.17
>>315はC#をやれば幸せになれるよ
420デフォルトの名無しさん:2013/08/11(日) 19:13:11.92
>>415だったわ
421デフォルトの名無しさん:2013/08/11(日) 19:22:02.38
>>415はというかすべての人は
422デフォルトの名無しさん:2013/08/11(日) 19:23:32.69
swingのクラスを使い、
JFrameのとある一部分の背景色を変更するにはどうしたらいいんでしょうか
JPanelとかを使ったりして背景色を変更しようとしても
全面同じ色で塗りつぶされた様になってしまいます。
どなたかアドバイスをよろしくお願いします。
423デフォルトの名無しさん:2013/08/11(日) 19:38:25.42
GUIはC#でやってください

JFrame f = new JFrame("タイトル");
f.setBounds(0,0,100,100);
f.setLayout(null);
JPanel p = new JPanel();
p.setBounds(0,0,10,10);
p.setBuckGroundColor(Color.色);
f.getコンテンツペイン().add(p);
f.setVisible(true);

スペルとか超怪しいけど気にしない
これでだめだった?
424デフォルトの名無しさん:2013/08/11(日) 19:54:18.99
>>423
何言ってんだこいつ
GUI使ったらMono使えなくなるじゃん
425デフォルトの名無しさん:2013/08/11(日) 20:03:30.54
肝心なことかきわすれてた
f.setLayout(null); というのは
デフォルトのレイアウトが左詰めのフローレイアウトだから
その上にパネルを一枚乗せるとパネルが画面全部を埋めてしまっていると思うので
それを回避するためのものです

この場合レイアウトは無いということになるのでsetBounds(x,y,width,height)で位置と大きさを指定します
426366:2013/08/11(日) 20:05:00.09
>>419
そうなんですよ。
どうしてもjava使わないといけないので、
使っているだけで元々畑違いもいいところで...
427デフォルトの名無しさん:2013/08/11(日) 20:16:17.43
>>422
setBackgroundだと拡張し辛いからJComponentでpaintComponentをoverrideするか、
awtのCanvasのpaint使うか、CanvasからBufferStrategy取得してBufferedImageで扱うかしたほうがいいと思う
JPanelでやってみた例
http://ideone.com/u5Ce9i
画用紙と図形をまとめておけば余り汚さないかもね〜
428デフォルトの名無しさん:2013/08/11(日) 20:26:48.78
super.paintComponent(g)しておいたほうがよかったね
スマソ
429デフォルトの名無しさん:2013/08/11(日) 21:16:34.18
自己解決じました
430デフォルトの名無しさん:2013/08/11(日) 21:32:58.97
え、monoってGUIダメだったの?!
431デフォルトの名無しさん:2013/08/11(日) 21:42:41.88
非互換だらけだから大幅な手直しが必要
GUIに関してはJavaとは比べるべくもない
432デフォルトの名無しさん:2013/08/11(日) 21:59:32.95
javaより酷いってことはゴミ未満ってこと?
433デフォルトの名無しさん:2013/08/11(日) 22:53:57.17
monoはJavaとは思想が違ってて、
マルチプラットフォームなGUIなんてクソだからGUIはネイティブなAPIを使って個別に作れという考え方
434デフォルトの名無しさん:2013/08/11(日) 22:58:49.34
.NET系のクロスプラットフォームはそもそもバイナリ互換を重視していない
Unityみたいなのですら#if上等だからな
435デフォルトの名無しさん:2013/08/11(日) 23:04:43.26
Formはwindowsってネームスペースにあったから心配してたけど驚きの事実だったわ
436デフォルトの名無しさん:2013/08/11(日) 23:08:53.36
俺はそっちの割り切った思想のほうが好きなんだけどな
結局Swing製のGUIとか使いにくいし、
いずれにせよwrite once,run anywhereなんてことにはどうせならん
437デフォルトの名無しさん:2013/08/12(月) 02:55:44.33
マルチプラットフォームをサポートすると細かいデザインが出来ずに残念なことになるのは
javaさんが証明したしな
438デフォルトの名無しさん:2013/08/12(月) 04:27:06.44
javaでデスクトップマスコットを作っているのですがバルーンの部分がうまくいきません。何か案があれば教えて下さい。
439デフォルトの名無しさん:2013/08/12(月) 05:47:28.07
7なら丸いウインドウも、半透明なpngも出せるからあとは画像用意すりゃいい
440デフォルトの名無しさん:2013/08/13(火) 13:20:25.46
ぬるぽ出すとガッされるんですか?
441デフォルトの名無しさん:2013/08/13(火) 13:22:09.46
されないがぬるぽは気がゆるんだ時に出るから引き締めろってことだな
442デフォルトの名無しさん:2013/08/13(火) 15:16:31.49
以上javaドカタジョークでした
443デフォルトの名無しさん:2013/08/13(火) 18:15:29.75
sunの仕様に準拠して作られているという点では、tomcat/glass fishは同じだと思うんですが
この2つは何が違うんですか?

glass fish = EJB準拠?だけど、tomcatはサーブレッド/jspしか動かせないんですよね
機能的にはglass fish > tomcatってことですか
444デフォルトの名無しさん:2013/08/13(火) 20:54:46.27
tomcatに物足りなさを感じたらjettyかGWTかjbossあたりを学ばないとつまらないよ。
サーブレット、jspなんてフレームワーク「内の」一部品にすぎないでしょ。
445デフォルトの名無しさん:2013/08/13(火) 20:57:02.45
>>444
なぜjetty
446デフォルトの名無しさん:2013/08/13(火) 20:58:34.57
「学ぶ」だってw
447デフォルトの名無しさん:2013/08/13(火) 21:00:36.75
簡単に違いを言うならフルプロファイルとWebプロファイルの違いか
Webプロファイルはフルプロファイルのサブセットだから
消費メモリと起動時間はTomcatのが優れると思われる。
私はJBossよりGlassfishのが好き。Web版管理コンソールが使いやすい。
448443:2013/08/13(火) 21:07:29.47
tomcat + 軽量コンテナで組み合わせて使うってことはわかったんですが、
EJB + 軽量コンテナの組み合わせってあるんですか?
例えば、Glassfish + strutsの組み合わせとか

軽量コンテナ = EJBの代替品って考え方が根本的に違っているのかな
449デフォルトの名無しさん:2013/08/13(火) 21:30:47.42
軽量コンテナって言われてた頃の利点はもう他の製品にはないと思う
軽量コンテナと言われてたものはCDIとしてEEにも備わってるし、
トランザクション境界を戦略的に使い分けられるEJBは最近は便利に感じる
450デフォルトの名無しさん:2013/08/13(火) 22:19:54.80
初歩的な質問でごめんなさい
JAVA SE/JAVA EEでRUNTIMEは別々にあるんですか
451デフォルトの名無しさん:2013/08/13(火) 22:30:54.90
EEはSEのアプリケーションサーバーとしての拡張仕様
JSRという団体が作ったAPIをEEというサーバー規格に纏めてる
SEのAPIもJSRが作ってるから公式の拡張仕様ということ。

Glassfishは現在のEEの参照実装といってEE規格に沿うと
こんな感じのサーバになりますっていうサンプルサーバー扱い
出来が良すぎてこいつを本番で使う企業も多い
452デフォルトの名無しさん:2013/08/13(火) 22:33:15.76
つまるところEEのランタイムはサーバーそのもの。
453デフォルトの名無しさん:2013/08/13(火) 22:38:00.03
馬鹿だから質問が理解できなのか
454450:2013/08/13(火) 22:38:02.52
わかりました
ありがとうございます
455443:2013/08/13(火) 23:07:53.39
>>449
最後に1つだけ教えて

java eeとspringで出来る事って被ってるよね
springやhibernateを使わずに、java eeだけってありだと思う?
456デフォルトの名無しさん:2013/08/13(火) 23:25:24.14
あり。
457デフォルトの名無しさん:2013/08/13(火) 23:26:12.78
>>455
最近のEEだと有りだね。標準規格に合わせないSpringのが小回りは利くと思うが
EEもそういう先進的なアイデアを十分に取り込んで使いやすくなってる。
外部から色んなライブラリを集めてこなくてもいいから環境を整えるのも早い。
458443:2013/08/13(火) 23:34:48.42
>>456-457
何度も回答ありがとう
かなり助かりました
459デフォルトの名無しさん:2013/08/14(水) 02:51:39.91
サーブレットとjsp、あとは静的コンテンツとかならtomcatで十分だけど、
サーバー起動までの部分をxml使わずに自分で用意したかったりソケットでhtmlと通信したい場合、jettyのほうが低レベルから扱える気がする
460デフォルトの名無しさん:2013/08/15(木) 21:21:39.32
こういうnullを含む配列をソートするにはどうすればいいですか?
Arrays.sortだとNullPointerExceptionが投げられます。
どうすればいいですか?

Integer[] a = new Integer[10];
for (int i = 0; i < a.length; i++) {
 a[i] = Integer.valueOf(i);
}
a[0] = null;
Arrays.sort(a);
461デフォルトの名無しさん:2013/08/15(木) 21:24:17.47
Comparatorだかを実装してnullに常に-1か1を与えればできない?
462デフォルトの名無しさん:2013/08/15(木) 21:36:33.23
>>461
なるほどやってみます、ありがとうございます。
463デフォルトの名無しさん:2013/08/15(木) 22:03:09.85
>>461
できました。これです。ありがとうございました。
Comparator<Integer> c = new Comparator<Integer>() {
 @Override
 public int compare(Integer o1, Integer o2) {
  if (o1 == null && o2 == null) {
   return 0;
  } else if (o1 == null) {
   return 1;
  } else if (o2 == null) {
   return -1;
  } else {
   return o1.compareTo(o2);
  }
 }
};
Arrays.sort(a, c);
464デフォルトの名無しさん:2013/08/17(土) 07:25:03.51
てst
465sage:2013/08/17(土) 07:29:05.15
すみませんfinalについて質問があります。

while(true) {

final Point p = new Point(3, 4);

}

こういう場合、二回目以降はnewされていないと考えてよいのでしょうか?
fieldと遠くなるのがちょっと嫌で、繰り返しで何度もnewされない方法になるのではないかと考えております。
466デフォルトの名無しさん:2013/08/17(土) 08:45:42.60
>>465
何度もnewされて実際とっても遅くなるよ
Javaにはユーザー定義の値型がないので、そういうベクトルの計算なんかは工夫が必要
JITが賢いから小さいクラスを多用した処理はうまく最適化されるという触れ込みだが、
実際やってみると全く全然当てにならない
467デフォルトの名無しさん:2013/08/17(土) 09:25:27.47
javaを学習し始めて一か月の初心者です。
guiプログラムを一先ず終え、web系を始めようと思っているんでけれど、
webアプリケーション、サーブレット、JSP
これらの単語は同じものとして解釈してもいいのですか?
調べているうちにこのような言葉がたくさん出てきて少し分からなくなってきました。
468デフォルトの名無しさん:2013/08/17(土) 09:49:26.23
>>466
>何度もnewされて実際とっても遅くなるよ
ホントですか。ということは、フィールド使えということですね。
この例だとそれですぐ済みますが、list等使わないと苦しい場合はでてきそうです。ありがとうございました。
469デフォルトの名無しさん:2013/08/17(土) 10:40:51.94
>>467
webアプリケーション:web上のひとつのアプリ全体 (言語を問わない - Javaでなくてもwebアプリと呼ぶ)
サーブレット:HttpServletを継承した普通のJavaのクラス (サーバ上で動く)
JSP:HTMLの中にJavaのプログラム (サーバ上で動く) を書ける
470デフォルトの名無しさん:2013/08/17(土) 10:48:39.88
>>468
x, yそれぞれ別の配列に持てばおk
どこのfortranだよって感じになるけど土方言語だから仕方ない
471デフォルトの名無しさん:2013/08/17(土) 10:55:09.13
動的再コンパイルが掛かるまで大した最適化は行われないと思うし
クライアントアプリでパフォーマンスに拘るなら配列使うのがいいな
最初から60fpsを諦めちまえば気にすることもないのだろうが
472デフォルトの名無しさん:2013/08/17(土) 11:05:34.77
>>471
>動的再コンパイルが掛かるまで大した最適化は行われないと思うし
それを当てにして>>466みたいな感じで重い計算を書いたらクソ遅かったわ
エスケープ解析は無いものと思った方がいい
473デフォルトの名無しさん:2013/08/17(土) 12:24:54.16
>>467
サーブレットとjspは一角にすぎないよ
それらだけじゃAJAXの技術身につかないし
474デフォルトの名無しさん:2013/08/17(土) 15:33:06.14
>>467
Webアプリケーションはソフトの分類

サーブレット・JSPはその具体的な実装の手法
勉強目的ならJSPじゃなくてサーブレットを選ぶことになるかな
どちらも「コンテナ」と呼ばれるミドルウェアに組み込んで
Webサーバに載せる形で動かす
475デフォルトの名無しさん:2013/08/17(土) 20:54:18.82
jspでmvcをやりたいのですが、EJBだけでできますか
springとか使わないと無理でしょうか

asp.netだと画面を自動生成出来ますが、jspではhtmlを手書きするしかないんでしょうか
476デフォルトの名無しさん:2013/08/17(土) 23:21:08.10
ttp://www.jpcert.or.jp/java-rules/dcl02-j.html
ここの違反コードについてなんですが、
拡張for内で次の要素へスキップするときはcontinueを使え
という解釈で大丈夫ですか?別に拡張for文内でif文で処理を分岐することは違反じゃないのですよね?
477デフォルトの名無しさん:2013/08/17(土) 23:39:38.23
違反コードがちょっと意味不明な例文に見えるが解釈はそれでいいよ
拡張for文はIteratorなりインデックスアクセスなりの操作に置き換わるが
ソースコード上でそれらの操作オブジェクトには触れないってのがポイントなのかな
俺はそのサイトの解決より自前でリスト作って置いてコレクションにラップすんなよってツッコミたいがw
478デフォルトの名無しさん:2013/08/18(日) 02:17:33.36
>>477
ありがとうございます。
続けて質問なのですが、リスナーを自作しようと考えており、

public interface StateChangeListener extends EventListener {
void stateChanged(StateEvent e);
}

public class StateEvent extends EventObject {
public StateEvent(Object source) {
super(source);
}
}

のように標準APIに従うように用意しました。
ですが具体的な実装の部分(fireの部分?)があまり理解できていません。

public class Obj {
private int x;
public Obj(int x) {
this.x = x;
}
}

例えばこのObjクラスにaddStateChangeListenerメソッド等を持たせて、
xの値が変わると毎回stateChangedメソッドが呼ばれるようにするにはObjクラスをどのようにすればいいのでしょうか?
479デフォルトの名無しさん:2013/08/18(日) 03:16:00.95
リスナーを自前で実装したことはないけど一般論で言うなら…

public void setX(int x) {
    this.x = x;
    fireStateChangeEvent();
}

public void fireStateChangeEvent() {
    StateEvent event = new StateEvent(this);
    for (StateChangeListener listener : listeners) {
        listener(event);
    }
}

でええんやないの?コレクションは私ならLinkedHashSetを選びそう。
setterが複数ある場合でもリスナ名からすれば都度呼び出すのだろうね
480デフォルトの名無しさん:2013/08/18(日) 03:17:21.16
おっと・・・
×public void fireStateChangeEvent()
○private void fireStateChangeEvent()
481デフォルトの名無しさん:2013/08/18(日) 03:54:17.82
>>479
ありがとうございます。参考にします。
標準apiのComponent辺りのクラスを参考にしたいのですが、AWTEventクラスが絡んできて理解できませんでした。
482デフォルトの名無しさん:2013/08/18(日) 09:50:27.48
ボタンを押すとカウントが増えるGUIデータが失敗します。

カウントはラベルに表示されるはずです。
eclipce使用で、エラー表示はありません。
カウントが増えない以外は成功してます。

下記のコンストラクタなクラスを別クラスのメインから、
GUI7 frame = new GUI7();
で実行してます。

同じクラスでメインを実行しても失敗します。
483482:2013/08/18(日) 09:51:31.66
public class GUI7 extends JFrame implements ActionListener {

JButton b1; JButton b2; JLabel l1; int count = 0;

GUI7(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
setVisible(true);

getContentPane().setLayout(new BorderLayout());

JButton b1 = new JButton("zouka");
JButton b2 = new JButton("zero");
JLabel l1 = new JLabel(count + "clicks");

add(b1,BorderLayout.NORTH);
add(b2,BorderLayout.SOUTH);
add(l1,BorderLayout.CENTER);

b1.addActionListener(this);
b2.addActionListener(this);}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == b1) {count++;}
else if (e.getSource() == b2) {count = 0;}
l1.setText(count + "clicks");}
484デフォルトの名無しさん:2013/08/18(日) 10:03:50.79
>>483
JButton b1 = new JButton("zouka");
JButton b2 = new JButton("zero");
JLabel l1 = new JLabel(count + "clicks");

これだとローカル変数を宣言してそれにインスタンスをセットすることになるっすよ。
actionPerformedで期待されるのはインスタンス変数にインスタンスがセットされてること
なので、こんな感じで。

b1 = new JButton("zouka");
b2 = new JButton("zero");
l1 = new JLabel(count + "clicks");
485482:2013/08/18(日) 11:15:54.67
ありがとうございます。現在外出中で携帯から書いてますが、帰宅後に試してみます。
486デフォルトの名無しさん:2013/08/18(日) 12:16:07.64
亀だが、>>27
抽象化されたクラスと、こういうインターフェイス(publicメソッド)を持っているよっていう定義

前者はその子クラスは全て振る舞いを制限されていて、そのインスタンスは基本的に同じような挙動をするもの
後者は、期待した挙動をするメソッドを持ちあわせているが、異なるインスタンスに関連性があるかは不明

前者を便利メソッドを追加する目的で使う奴は後を絶たないけどな(それが悪いという意味ではないが)
487デフォルトの名無しさん:2013/08/18(日) 12:31:47.30
>>476
違反コード: for (String s : strings) {…}
適合コード: for (final String s : strings) {…}

違反コードでは

for (String s : strings) {
  s = "ハゲ";
}

がコンパイルエラーにならないので、適合コードのようにfinalをつけ、明示的に代入が出来ない事を示すコードにしろ、って内容だよ
違反コードも適合コードも複雑に書かれてるけど、そのページの主題についてはそこまで深く考える必要はないと思う

---
再代入にメリットのあるケースのほうが少ないんだから、
変更可能な変数だけ明示できる仕組みだったらもっと楽だったのにな
488デフォルトの名無しさん:2013/08/18(日) 19:00:45.50
別のオブジェクトを所有する不変オブジェクトを作りたいです。
別のオブジェクトをフィールドとして持つ際は new 別のオブジェクト(引数)
で防御的コピーをするようにと書いてあるサイトが多いですが、これについて質問があります。

防御的コピーを行うために呼び出したコンストラクタの内部において
this参照を引数として渡すような関数を呼び出しているような場合、
防御的コピーで生成されたオブジェクトへの参照が外部のクラスに漏れてしまいます。

このように別のオブジェクトのコンストラクタの落ち度で不変性が維持できないケースについては、
不変オブジェクトの設計者としては無視してもよいのでしょうか?
それとも別のオブジェクトのコンストラクタの実装を調べて、参照が漏れていないか確認することも
不変オブジェクト設計者の責任に含まれるのでしょうか?
489デフォルトの名無しさん:2013/08/18(日) 19:22:09.11
責任の所在は力関係による
そもそも参照の露出がハッキリしてるのなら不変オブジェクトは
実装できないのだからこんなところで燻らせるよりそいつに相談しろよ
490デフォルトの名無しさん:2013/08/18(日) 22:10:52.49
クライアント30台程度で、tomcat + apacheを連携させるメリットあるの?
この程度のリクエストなら連携させないほうが、色々とメリットがある気がするのですが
491デフォルトの名無しさん:2013/08/19(月) 02:34:21.97
>>490
本番レベルでApacheを運用してきた実績があってTomcat単体で実績がないなら
Tomcat単体のオプションを学習するメリットは薄いと言えない?
492デフォルトの名無しさん:2013/08/19(月) 08:33:13.41
apacheを連携させるのって静的コンテンツをapacheが
処理できる程度のこと?
493デフォルトの名無しさん:2013/08/19(月) 08:37:29.26
不変オブジェクトって何?ggったら
ttp://education.yachinco.net/tips/java/04/1.html
のサイトがでてきて、


>String型のオブジェクトは不変オブジェクトです。いったんオブジェクトを生成したら、その内部状態を変更することは出来ません。

とあるが

String text = "aiu";
text += "eo";

とできるわけだけど、これがどうして不変オブジェクトなの?
494デフォルトの名無しさん:2013/08/19(月) 08:41:51.75
>>493
"aiu"の状態を変更して"aiueo"にしたわけでなくて、
"aiu"とは全く別に新しく"aiueo" を作ってその参照を text に代入してるだけだから。
元々の "aiu" の状態は変更されていない。
495デフォルトの名無しさん:2013/08/19(月) 09:43:07.70
閉じた多能について質問なのですが、

public interface Bar {

}

を用意しておいて、Fooを閉じた多能にすれば

Foo<Bar> foo = new Foo<Bar>();

このときの型には
BarかBarをimplementsしたクラスかBarをextendsしたインターフェースかそれをextendsしたクラスに制限(コンパイルエラー)できる
という解釈で良いですかね?
Genericなクラスにしたいけど型の自由はある程度制限したい場合等に使えるということですよね。
標準APIで使われている箇所を知っていたら教えてください。
496デフォルトの名無しさん:2013/08/19(月) 09:44:23.21
public class Foo<T extends Bar> {

}

肝心のFooが抜けていました
497デフォルトの名無しさん:2013/08/19(月) 10:37:00.69
× 多能
○ 多態

public abstract class Enum<E extends Enum<E>>
498デフォルトの名無しさん:2013/08/19(月) 13:20:43.72
StringはCharSequenceの実装でCharSequenceは読み取り専用としている
499デフォルトの名無しさん:2013/08/19(月) 13:37:07.35
Stringが不変オブジェクトなのは知らなきゃまずいだろ
ループ文で str += "うんたら" なんてやられたら大変なことになるぞ
500デフォルトの名無しさん:2013/08/19(月) 13:56:16.78
>>499

String text = "";
String line = "";
while((line = br.readLine()) != null) {
text += line;
}

こういうのもダメなの?
501デフォルトの名無しさん:2013/08/19(月) 14:09:20.94
>>499
それ古い知識。今はコンパイラの最適化が行われるから>>500のようなコードの方が速い
http://calms.hatenablog.com/entry/2013/05/11/194827
502デフォルトの名無しさん:2013/08/19(月) 14:12:51.59
よかった。
まぁStringBufferでappendが普通だとは思うけど
503デフォルトの名無しさん:2013/08/19(月) 14:43:12.27
>>501
早い遅いじゃなくって、スタックセグメントにやたらと中間生成物の文字列追加しちゃうのが問題なんじゃないの?
504デフォルトの名無しさん:2013/08/19(月) 14:57:07.42
なんで遅くないのにそれが問題なの。苦しいよ。
505デフォルトの名無しさん:2013/08/19(月) 15:05:37.67
中間生成物が大量に発生するからGCが頻繁に走るってことだろ
あとそもそもOracle以外のJava実装ではきちんと+演算子が最適化されているとは限らないので
そういう環境では使えないテクニック
506デフォルトの名無しさん:2013/08/19(月) 15:16:06.16
>>501
リンク先のコードと>>500のコードって違うよね。
>>500のコードはループのたびにtextの長さがびにょーんと伸びてくから
StringBuilderを使うよりかなり遅いはずだよ。
507デフォルトの名無しさん:2013/08/19(月) 15:26:57.00
Ropeは文字列を扱うもので不変オブジェクトだけれども、
Stringよりちょっぱやに処理を完了する。インスタンスを生成する回数より
インスタンスを生成するときのサイズが重要なんだと思います。
508デフォルトの名無しさん:2013/08/19(月) 15:43:13.52
public static void main(String[] args) {
String a = "moji";
String b = "moji";
String c = a + b;
System.out.println(a == b);
System.out.println(c == a + b);
String d = "";
for (int i = 0; i < 100000; i++) {
d += a;
}
}

これ実行すればStringBuilder.appendの重要性が認識できる
509デフォルトの名無しさん:2013/08/19(月) 16:32:44.29
学校の課題で「org.w3c.dom.Elementインターフェースを実装した独自クラスを作りなさい」と言われました
MyElementクラスを作りました
http://ideone.com/GqQF12
エラーが出ました
わけがわかりません。助けてください
510デフォルトの名無しさん:2013/08/19(月) 17:03:52.19
Main$MyElement cannot be cast to com.sun.org.apache.xerces.internal.dom.ChildNode
これの通りMyElementは com.sun.org.apache.xerces.internal.dom.ChildNodeにキャストできないといわれている


パッケージを見比べてみよう
com.sun.org.apache.xerces.internal.dom.ChildNode

org.w3c.dom.Document
org.w3c.dom.Node
511509:2013/08/19(月) 17:14:20.44
>>510
同じNodeなのにどうしてMyElementだけエラーが発生するのでしょうか?
e1とe2はちゃんと追加できてるみたいです
512デフォルトの名無しさん:2013/08/19(月) 17:16:45.79
21行目にこれを追加したら見えてきます
System.out.println(document.getClass());
513509:2013/08/19(月) 17:35:36.78
このDocumentImplってのがバグを発生させている元凶ということですか
どうすればDocumentImplを修正できますか?
514デフォルトの名無しさん:2013/08/19(月) 17:50:54.30
ルート要素をMyElementに置き換えろとしか言えないかなぁ
Node root = new Main().new MyElement(document.createElement("a"));
515デフォルトの名無しさん:2013/08/19(月) 17:52:14.74
>>493

String text = "aiu";
text += "eo";


現実
String text = "aiu";
text = new String("aiu" + "eo");
516509:2013/08/19(月) 17:52:24.68
聞いてばっかりだと悪いので少し自分で調べてみました
appendChildする過程でChildNodeへのダウンキャストが起きていて、
ChildNodeを継承していないMyElementではダウンキャストに失敗するというわけですか

でもおかしくないっすか?

Node appendChild(Node newChild)
http://docs.oracle.com/javase/jp/7/api/org/w3c/dom/Node.html#appendChild(org.w3c.dom.Node)

appendChildのドキュメント読んでもどこにもChildNodeなんて単語は登場しないんですが
appendChildは実質的にChildNodeの引数しか受け付けないってことですよね?
517509:2013/08/19(月) 18:03:24.11
Node appendChild(Node newChild)

↑こう書いてあったら「Nodeを引数として渡せばうまく動く」と誰だって思いますよね?
実際には受け付ける型が違い、しかも実際に受け付ける型の名前はドキュメントに書かれていないなんて
そんなこと許されるんですか?
518デフォルトの名無しさん:2013/08/19(月) 18:24:47.14
ソースの中ではrootのDocumentImpl.Node appendChild(Node newChild)が呼ばれるわけで
DocumentImplとは違うNode(MyElement)が混ざること自体ちょっと問題があるのかなと
私としての回答は514としか言えないが。

A社が作ったNodeの実装 com.a.NodeImplと
B社が作ったNodeの実装 com.b.NodeImplに互換性があるわけがなす
519509:2013/08/19(月) 18:44:51.02
たとえばCollections.sort(List<T> list)の内部で、
listをArrayListにダウンキャストしているから、
実際にはArrayList以外は引数に渡せませんとなっていたら、皆さんどう思いますか?
誰がどう考えてもおかしいですよね

>>518
rootをそのように書き換えてもだめでした
http://ideone.com/bJrXak
MyElementのappendChildは単なるラッパーなので、これ自体は仕方ないとは思います
520509:2013/08/19(月) 18:52:31.18
初学者なものでインターフェースについて誤解していたかもしれません

> A社が作ったNodeの実装 com.a.NodeImplと
> B社が作ったNodeの実装 com.b.NodeImplに互換性があるわけがなす

同じインターフェースを実装したクラス同士であれば、
相互に入れ替え可能であるというのがインターフェースの意義であると認識していました
たとえば
List list = ArrayList();
これを
List list = LinkedList();
に入れ替えても、コードを変更することなくListとして使用可能というのが
インターフェースの意義だと認識していました
521デフォルトの名無しさん:2013/08/19(月) 19:04:10.73
あなたの認識は正しいが、非常に残念なことに理想と現実は違うということだ・・・
522デフォルトの名無しさん:2013/08/19(月) 19:06:31.99
さすがオブジェクト指向言語ですね
523デフォルトの名無しさん:2013/08/19(月) 19:07:39.52
今回のパターンは
コンセントというインタフェース abstract抜き差があって
100V2極
200V3極
こんな感じになっているので抜き差しはできる
抽象的だけどこんな感じ
524デフォルトの名無しさん:2013/08/19(月) 19:08:18.08
public Node appendChild(Node newChild) throws DOMException {
if (!(newChild instanceof MyNode)) throw DOMException(DOMException.NOT_SUPPORT_ERR, "てめーのNodeなんて知らんわ!");
}
525デフォルトの名無しさん:2013/08/19(月) 19:11:24.33
独自のクラスなんて作らずに標準ライブラリのオブジェクトをそのまま使え!
ってことなんだろうね。再利用が可能なオブジェクト指向()
526デフォルトの名無しさん:2013/08/19(月) 19:31:44.20
まあ、実際の動きとかは今回目をつむって
どうやって課題をクリアするか考えてみよう

1.インポートできないのでソースをパッケージごとコピー
2.1を継承
3.ファクトリを自分で作る
4.インタフェースに矛盾があり作る気が起きませんと突っぱねる
5.引き数無しのMyElementコンストラクタを作る

課題として出るくらいなんだし。当然模範解答があるはずなので4はさすがにない
527デフォルトの名無しさん:2013/08/19(月) 19:37:01.11
課題をクリアするだけならすでに十分じゃね
作ったクラスを親ノードにappendしろとは言ってないんだし問題なかろう
528デフォルトの名無しさん:2013/08/19(月) 19:52:18.12
>>初学者
とのことなので、新たな実装を求められるレベルの課題なのかもしれない。
SOAPElementのように、新たなパーサやスキーマから作成することを求められているなら

俺はギブアップだ
529デフォルトの名無しさん:2013/08/19(月) 20:39:16.27
diconとconvとBeanで何がつくれるの
530デフォルトの名無しさん:2013/08/19(月) 21:37:58.48
>>509みたいなケースってIteratorインターフェースでも起きたりするの?
自作クラスでインターフェース使いまくってるからキャストで弾かれないか心配
531デフォルトの名無しさん:2013/08/19(月) 21:41:18.21
>>509の模範解答が出てきたら調べてみなくもない
532デフォルトの名無しさん:2013/08/19(月) 21:49:30.83
模範解答なんてなくね?
言わばライブラリの仕様なわけで、別のライブラリを使用する以外の解決法はない
533デフォルトの名無しさん:2013/08/19(月) 23:52:40.77
Javaでも{ }の中はスコープって呼び方で良いの?
534デフォルトの名無しさん:2013/08/20(火) 00:08:51.88
>>533
Javaでも他の言語でも普通はブロックと呼ぶ
スコープは変数の性質であって意味が違う
535デフォルトの名無しさん:2013/08/20(火) 00:12:23.73
>>533
は?

「Javaでも」って、そもそもブロックのことをスコープって呼ぶ言語のことを教えてよ。
536デフォルトの名無しさん:2013/08/20(火) 00:29:28.36
int count = 0;
for(int i = 0; i < 10; i++)
count++;
i+=count;

あえて{}書かずにfor書いたよ
i+=count;はスコープ外
言語関係なくスコープという呼び方で通じる

解説終わり
537デフォルトの名無しさん:2013/08/20(火) 00:41:30.53
なんかわかりづらいな
int count = 0;
for(int i = 0; i < 10; i++){
count++;
i+=count;
}
これだとi+=count;のiがスコープ内になるという違いで納得してもらえるだろうか?
538デフォルトの名無しさん:2013/08/20(火) 02:24:38.77
は?
countのインクリメントはブロック内の処理であって、
それを「for文のスコープでcountをインクリメントします」とは表現せんだろ
539デフォルトの名無しさん:2013/08/20(火) 03:03:01.90
>>538
ソースどころか日本語も読めないのな
540デフォルトの名無しさん:2013/08/20(火) 03:07:37.27
スコープってのは、プログラムのリスト中の特定の領域を表す用語じゃないんだよ。その場合はブロック。

スコープは変数の属性として用いられる用語。
「i【の】スコープはこのブロック内に限定される」
とかいう風にね。

「iがスコープ内」なんて表現は主客転倒。
541デフォルトの名無しさん:2013/08/20(火) 03:28:50.63
もう少しまともな解説ぐぐってこいよ。それにもう蛇足すぎる

ひまなら>>509の真意と模範解答はよ
509で2時間くらい時間無駄にしたけど。なんだかんだ知識欲はみたされたから許す
542デフォルトの名無しさん:2013/08/20(火) 06:52:23.72
ドキュメントに説明がない以上、たまたま動く解答ができたとしても実装依存だろ
解なし
543デフォルトの名無しさん:2013/08/20(火) 07:02:05.35
XMLパーサってAbstractFactoryパターンだろうし知らないNodeが処理できんでも仕方ないかな
独自ノードと他所の実装ノードをくるむアダプタノードとでツリーを作って
出力時にダウンキャストされないことを祈るしかないな
544509:2013/08/20(火) 09:25:15.10
模範解答できました! 他人の回答のコピペですが

http://mail-archives.apache.org/mod_mbox/xerces-j-users/200906.mbox/%3COF2F74C2BF.3EC63F92-ON852575C8.001B4F75-852575C8.001D5BF4@ca.ibm.com%3E
以下要約

1. DOMの仕様において、Node#appendChild()する際は同じDocumentから生成されたNode同士でなければならない
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-952280727

2. 1のチェックは、ownerDocumentを比較することで行われる
http://www.w3.org/TR/DOM-Level-3-Core/core.html#node-ownerDoc

3. つまりNode#getOwnerDocument()メソッドの返り値のDocumentを偽装すれば1のチェックをすり抜けることができる

4. しかしそれは間違ったやり方だ
 少なくともXercesのDocument実装は「そのNode」を生成したわけではないし、
 また「そのNode」を所有しているわけでもない
 ゆえにownerDocumentの値がおかしいということになる
545デフォルトの名無しさん:2013/08/20(火) 15:25:47.67
つまりはファクトリから書く必要のある課題だったわけか。なんて高レベル
546デフォルトの名無しさん:2013/08/20(火) 17:10:13.44
>>536
{ }で囲われたブロックがスコープを持つ。これはつまりブロックスコープ。

例えばJavaScriptは{ }だけで囲われたブロックがスコープを持たず、
関数function(){ }の範囲がスコープを持つ。
これを関数スコープと呼んだりする。
547デフォルトの名無しさん:2013/08/20(火) 18:55:55.87
>>544
あぁそっちの仕様の問題か
結局このスレでは正解者ゼロか
情報学部の高レベルな課題だったみたいだな
548デフォルトの名無しさん:2013/08/20(火) 21:30:27.83
難しい質問は控えてください><
549デフォルトの名無しさん:2013/08/21(水) 19:44:09.86
DOMはもうトラウマだわ
D どーせ O おれなんて M もてないし
550デフォルトの名無しさん:2013/08/22(木) 00:51:26.52
HttpSessionを作成した直後にSessionScopedビーンを生成・初期化する方法ってありませんか?
BeanManagerを使ってもActiveではないと叱られてしまいます。
551デフォルトの名無しさん:2013/08/22(木) 07:47:35.57
f.close()がエラーになります。原因が分かりません。

public class try2 {

public static void main(String[] args){

FileWriter f = null;

try{
f = new FileWriter("data.txt");
f.write("hello");
}

catch(IOException e){
System.out.println("エラーです");
}

finally{
f.close();
}
}
}
552デフォルトの名無しさん:2013/08/22(木) 08:12:35.47
>>551
・ファイルが存在しない
・ファイルがロックされており書き込みができない

などの理由によりIOExceptionが発生している。

System.out.println("エラーです");

e.printStackTrace();

こうに直して詳細なエラー情報を見ろ
553551:2013/08/22(木) 08:48:36.65
>>552
支持通りにしたら、こんなエラー情報が出ました

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
処理されない例外の型 IOException
at try2.main(try2.java:21)


eclipceの指示に従ってメインメソッドに throws IOExceptionを足したら
f.close(); に付いてたエラー表示も消えました。
554デフォルトの名無しさん:2013/08/22(木) 08:54:12.94
f.close();はチェック例外を発生させるから、finallyでf.close()を呼び出す場合はそれ自体をtry-catchで囲ってやらなきゃならない
非常に見栄えが悪いコードになるからJava7からtry-catch-resource文が用意された
555551:2013/08/22(木) 09:03:42.69
アドバイスありがとうございました
556デフォルトの名無しさん:2013/08/22(木) 16:24:23.31
独学でjava勉強したいんですけど、過去ログとかレスとかで話題に上がった
参考書やおすすめの書籍はありますか?
557デフォルトの名無しさん:2013/08/22(木) 17:04:31.27
基本構文から始めるなら。すぐ本買わないでネットで十分

ある程度かけるようになって
自分が創作、携わりたいものが解かってから本を買えばよいかと
558デフォルトの名無しさん:2013/08/22(木) 17:08:32.49
わかりました。どうもありがとう
559デフォルトの名無しさん:2013/08/22(木) 17:11:33.54
>>557
ネットに転がってるサンプルなんてほとんどがJava 6の構文を使ってて今は非推奨な書き方ばかりだろ
とんでもない地雷行為を勧めるなよ
560デフォルトの名無しさん:2013/08/22(木) 17:15:22.94
実際俺はそれで十分だったな
Javaはどうせどの本から入っても言語仕様読むようになるし
561デフォルトの名無しさん:2013/08/22(木) 17:20:08.99
すいません>>558です。
つまるところ書籍とインターネットを併用しながら学ぶのが一番ということでしょうか?
あと加えて質問なのですがテキストエディタで保存したjavaファイルは
コマンドプロンプトで読み込む場合、どこに保存するのが最適なのでしょうか?
なかなか認識されなくて困っています
562デフォルトの名無しさん:2013/08/22(木) 17:26:02.10
>>561
c:\gomi
563デフォルトの名無しさん:2013/08/22(木) 17:36:46.49
>>561
本にしろネットにしろ「古い書き方」で書いてあるページの情報は鵜呑みにしちゃダメ
以下はそれを見分けるための一例

例えばJava7からは以下のコード例はコンパイラの警告を受けてしまう(総称型で指定する必要がある)
http://www.javaroad.jp/java_collection2.htm
http://www.tohoho-web.com/java/collection.htm

以下のコードも今は好ましくない(try-with-resources文を使うべき)
http://www.javadrive.jp/start/stream/index1.html

例えばjava.io.Fileを使っているコードを見かけたら要注意。
Java 7以降は以下のようにjava.nio.file.Pathを使うべき
http://www.ne.jp/asahi/hishidama/home/tech/java/files.html
564デフォルトの名無しさん:2013/08/22(木) 17:38:07.60
6どころか5からフォローできないと地雷になる
出来れば4以下の仕様の違い程度は知っておいたほうが良い

パーミッションの関係でユーザディレクトリ配下で任意場所に置くのを推奨する
ユーザ名\javaSampletとかドキュメント\javaSampletで問題ない
565デフォルトの名無しさん:2013/08/22(木) 17:45:51.39
すいませんなんとかなりました。
path設定って再起動しないと反映されないんですね・・・
566デフォルトの名無しさん:2013/08/22(木) 17:47:10.14
あと参考書買うことにします。別スレで見たけどプログラマは参考書に
お金を惜しんではいけないと書いてありましたし
567デフォルトの名無しさん:2013/08/22(木) 17:48:10.01
>>563
その手の間違いは本でも同じだ
古いと駄目ってだけ
568デフォルトの名無しさん:2013/08/22(木) 17:49:50.62
>>565
コマンドプロンプトの再起動で反映されるよ

とはいえ君が手動でjavac使うことには反対するよ
EclipseなどIDEを使えばコンパイルエラーや警告の多くに気づき、その修正方法も提示されるのに対して
テキストファイルに手入力だと明らかなコンパイルエラーにも気づかず、その修正方法も提示されないから
初心者に無意味なエラー探しの負担を強いることになる

javac使うのはコンパイルオプションを細かに制御したい中級者以降から
初心者はボタンのワンクリックでコンパイルから実行までできるEclipseつかえ
569デフォルトの名無しさん:2013/08/22(木) 17:51:01.63
>>566
参考書とは言ってもJava 7に対応したものは決して多くはないから、
>>563の項目をチェックしてから買わないと金が無駄になるからな
570デフォルトの名無しさん:2013/08/22(木) 17:53:57.24
分かりました。Eclipseは無償でDL出来るみたいなのでそれを使ってみます。
ちなみにjdk1.7.0_25を使っているのですが、これは現在の主流ということで
よろしいですか?
571デフォルトの名無しさん:2013/08/22(木) 17:56:07.16
javacはコンソールを使うことに慣れる意味で必要不可欠
まあ、実際はantとか専用のデプロイツールつかうんだけどね

eclipseを導入するのは基本構文終わったあたりからで問題ないかと
572デフォルトの名無しさん:2013/08/22(木) 17:57:33.48
みなさん本当に親切で助かります。
基本構文を学んだあとにeclipseを使いたいと思います。
573デフォルトの名無しさん:2013/08/22(木) 18:00:40.32
>>571
それは業務で開発する場合の知識だろ
一人でプログラミングする分にはコンソールもAntもよほど特殊な用途でなきゃ使わん
574デフォルトの名無しさん:2013/08/22(木) 18:01:13.36
最初はやりやすいようにやったほうがいいので
俺もEclipse勧める
初学者は関係ないことでやる気なくすのが一番問題だ
575デフォルトの名無しさん:2013/08/22(木) 18:02:15.29
独学ってことならJavaなんか時間の無駄だからやらないでいいよ
C#でもやって、あとRubyとかPythonとかScalaとかHaskellとかやればいいよ
576デフォルトの名無しさん:2013/08/22(木) 18:03:43.97
C#なら初心者こそVisual C#のIDEで楽々開発するのが普通だからな
コンソールを使わせたがるのはC言語プログラマの名残にしか思えん
577デフォルトの名無しさん:2013/08/22(木) 18:04:53.01
つか、IDEのインストールを画像入りで説明してる1年以内に発売された本買えよ
578デフォルトの名無しさん:2013/08/22(木) 18:07:35.57
コンソール否定派多すぎじゃね?
579デフォルトの名無しさん:2013/08/22(木) 18:09:56.23
そういうのは慣れてから必要時に各人がやればいい事
普段GUIで操作してる人にコンソール勧める必要ない
580デフォルトの名無しさん:2013/08/22(木) 18:13:07.37
pathの概念が身に付くからコンソールくらいは使えてほしい。

でもプログラミング自体初めてなら俺もVS使ってのC♯を推薦する
その場合は必要に迫られてから、コンソールに慣れていけばいいのかな
581デフォルトの名無しさん:2013/08/22(木) 18:17:04.99
>>初学者は関係ないことでやる気なくすのが一番問題だ
すごい説得力だ。やっぱ初めからIDEというのも悪くないかと思い始めた
582デフォルトの名無しさん:2013/08/22(木) 18:17:27.03
Javaはオワコン
583デフォルトの名無しさん:2013/08/22(木) 18:17:26.97
JavaやりたくてJavaスレに書いてるのに何言ってんだ
584デフォルトの名無しさん:2013/08/22(木) 18:40:37.70
再三と何度も質問すいません。
ネットと参考書を併用するとして、みなさんがオススメするjavaの書籍はありますか?
自分が使ったあるいは友人が使っていた等なんでも構いません
585デフォルトの名無しさん:2013/08/22(木) 18:43:37.75
>>584
それは危険な質問だな
このスレにいる人間は初心者向けの本についてほとんど知識がないから、
Effective Javaとか「名著ではあるけど初心者が読んでも正しく理解できない本」を勧めてくる傾向が強い
586デフォルトの名無しさん:2013/08/22(木) 18:48:37.14
ここにいる連中はJava7以前からJavaを習得してるだろうから、
いま初心者にオススメの本はたぶん知らないのです

そういえばEffective Javaはもう在庫限りだそうですね
587デフォルトの名無しさん:2013/08/22(木) 18:55:14.30
そうでしたか。ではとりあえず初心者向けの本を一冊購入しておこうと思います
588デフォルトの名無しさん:2013/08/22(木) 20:09:45.73
ものの本は初心者じゃなくて初学者が読むもの
589デフォルトの名無しさん:2013/08/22(木) 20:16:16.35
スッキリわかるJava入門ってやつはなかなか良かった気がする。というかこれしか読んでないから比較できない
ただ誤字が多いのは結構なマイナスポイント
590デフォルトの名無しさん:2013/08/22(木) 21:38:31.83
最近javaアプリ勉強してて少しできるようになったんだけど
ブラウザ上で同じようにするのってどうするの?
JFrameやJPanelは使えるのかな?
まだwebアプリの勉強途中だけどここらへんが疑問点
それとできればアプレットじゃなくてサーブレットでやってみたいです
591デフォルトの名無しさん:2013/08/22(木) 21:45:49.68
がんばってください
592デフォルトの名無しさん:2013/08/22(木) 21:48:48.09
swing使えるならそのままアプレット化するだけだよ

アプレットはウェブブラウザ上で動作するアプリケーションです
サーブレットはサーバアプリケーションです
この二つは用途と動作する場所が違います
593デフォルトの名無しさん:2013/08/22(木) 23:14:33.48
>>592なるへそ
まだアプレットとサーブレットの区別があまりできてなくてよくわからなかったよ
アプレットはswingとか使ってガリガリ動くようなブラウザアプリ
サーブレットはデータベースを使ってなにかする
って解釈でいいのかな
594デフォルトの名無しさん:2013/08/22(木) 23:26:04.17
いやサーブレットはサーバー側で動作してHTMLを吐き出す
用途が違うつーかアプレットって死滅したと言っていい
595デフォルトの名無しさん:2013/08/22(木) 23:30:41.95
ユーザーにアプレットを使わせるのはそれだけでユーザーに深刻なセキュリティリスクを負わせる
今や重大な反社会的行為だ
596デフォルトの名無しさん:2013/08/22(木) 23:36:20.98
597デフォルトの名無しさん:2013/08/22(木) 23:45:36.58
ここで>>590がアプレットですごい物作れば
アプレットは見直される がんばれ
598デフォルトの名無しさん:2013/08/23(金) 00:15:40.13
アプレット死滅 まじですか
勉強してたらまだまだアプレットとか取り扱っていたものがたくさんあったからそんなこととは思わなかった
とりあえず597さんのいうとおりものすごいものを私がつくる!
その前に普遍的なサブレットでも頑張るよ
いろいろお世話になりました・∀・
599デフォルトの名無しさん:2013/08/23(金) 00:22:02.72
どんなにアプレットですごいもの作ろうが
オラクルさんがセキュリティホール連発で容赦なくアプレットを殺しにかかってくるからなあ
600デフォルトの名無しさん:2013/08/23(金) 04:15:56.52
一つの仕様で何でもかんでもやろうとするのが無茶。
601デフォルトの名無しさん:2013/08/23(金) 12:26:25.21
マイナビが何かの診断でJAVA使ってた
602デフォルトの名無しさん:2013/08/23(金) 22:57:36.55
そこまで珍しくはない。ただほぼ例外なく使いにくいけど
603デフォルトの名無しさん:2013/08/23(金) 23:09:56.30
あいかわらずサーブレットがんばっているんだけど
まずtomcatを起動
次に普通のブラウザ(IE)からurlに自分で作った.jspにアクセス
.jspから<imput type="submit">でサーブレットにアクセス
サーブレットの中身はデータベースのデータをブラウザに表示すること

おおまかにこれが「動的なコンテンツ」ってことでいいのかな?
604デフォルトの名無しさん:2013/08/23(金) 23:46:46.49
いいんじゃない
605デフォルトの名無しさん:2013/08/24(土) 01:58:08.83
オーバーロードについて質問があります

例えば「入力データ、パスワード、salt」を引数にとって入力データを暗号化して返すメソッドを定義するとします
入力データはStringまたはbyte[]またはFile
パスワードはStringまたはbyte[]
saltはStringまたはbyte[]

これを素直にオーバーロードするとこうなってしまいます
public byte[] encrypt(String data, String passwd, String salt)
public byte[] encrypt(String data, String passwd, byte[] salt)
public byte[] encrypt(String data, byte[] passwd, String salt)
public byte[] encrypt(String data, byte[] passwd, byte[] salt)
public byte[] encrypt(byte[] data, String passwd, String salt)
public byte[] encrypt(byte[] data, String passwd, byte[] salt)
public byte[] encrypt(byte[] data, byte[] passwd, String salt)
public byte[] encrypt(byte[] data, byte[] passwd, byte[] salt)
public byte[] encrypt(File data, String passwd, String salt)
public byte[] encrypt(File data, String passwd, byte[] salt)
public byte[] encrypt(File data, byte[] passwd, String salt)
public byte[] encrypt(File data, byte[] passwd, byte[] salt)

このような場合はどのようにメソッド定義をするのが正解なのでしょうか?
606デフォルトの名無しさん:2013/08/24(土) 02:06:03.32
言葉通りならその12通りで正解
607デフォルトの名無しさん:2013/08/24(土) 04:00:49.60
引数は三つともInputStreamでいいよ。
あるいはデザパタの「Builder」を勉強して、setPasswd()とかのバリエーションを好きなだけ作る
608デフォルトの名無しさん:2013/08/24(土) 04:45:06.80
三つのパラメータが必須だしbuild()でIllegalStageExceptionとか投げるのはちょっとダサいなw
あとStringだけど一緒にCharsetかその名前を示すStringがセットになってないといかんな
609デフォルトの名無しさん:2013/08/24(土) 10:09:19.19
デスクトップにjava勉強用のjavaフォルダを作り、コマンドプロンプトも
そのフォルダのjavaファイルから直接読み取りたいのですが、コマンドプロンプトの
最初のファイル指定先を変更することはできませんか?具体的には
現在:C:\Users\***>
となっている部分を
C:\Users\***\Desktop\java
と、コマンドプロンプトが開いた瞬間になるように設定したいです
610デフォルトの名無しさん:2013/08/24(土) 10:14:05.61
>>609
デスクトップにコマンドプロンプトのショートカットを作って
それを右クリックしてプロパティを開いて作業用ディレクトリを設定すればいいよ。
611デフォルトの名無しさん:2013/08/24(土) 10:14:17.29
Javaと何の関係もないな
最初はjavacでやってみるのも勉強にはいいかもしれないが、
理解した上で楽したいんならそもそもコマンドプロンプトなんかやめてEclipse使え
612デフォルトの名無しさん:2013/08/24(土) 10:14:52.30
↓のようなバッチファイルを作れ
cd /d "<飛ばしたいパス>"
cmd
613デフォルトの名無しさん:2013/08/24(土) 10:16:03.77
必要な環境変数を個別に設定できるからバッチファイル化がお勧め
614デフォルトの名無しさん:2013/08/24(土) 10:17:59.90
わざわざ余計な苦労をするためにコマンドラインでやってんのに
楽したいとか意味不明
一通り理解したらIDE行け
615デフォルトの名無しさん:2013/08/24(土) 10:21:58.08
jarコマンドの操作くらいは覚えて損は無いかも
リソースの差し替えができるぞ
616デフォルトの名無しさん:2013/08/24(土) 10:25:14.36
// >>609
// あらかじめ、workというフォルダを用意しておく
// console.jsの名前で保存してから、エクスプローラでconsole.jsをダブルクリック
// さもなければ、スタートにドラッグしてドロップ。スタートから選択。
// Windows 2000, Windows XP

directory = "C:/work/";
o = WScript.CreateObject("WScript.Shell");
o.CurrentDirectory = directory;
o.Run("cmd");
617デフォルトの名無しさん:2013/08/24(土) 12:23:36.74
古いパソコン
Windows 2000でうまくいかない場合は、WSH 5.6 にアップグレード

Windows 2000 または Windows Me を現在使用している場合は、WSH 2.0 が既にコンピュータ システムに
インストールされています。Windows 95/98、または Windows NT 4.0 を使用している場合は、
WSH 1.0 がインストールされています。WSH 5.6 にアップグレード

アクティブなプロセスの現在の作業ディレクトリを取得または変更
WSH 5.6 の新機能
http://msdn.microsoft.com/ja-jp/library/cc364344.aspx
618デフォルトの名無しさん:2013/08/24(土) 15:13:48.31
パソコンの操作に関する質問は他に有用なスレがあるんじゃないの?
619デフォルトの名無しさん:2013/08/24(土) 15:24:23.70
>>563
ありがとうございます
620デフォルトの名無しさん:2013/08/24(土) 19:08:40.02
>>509の課題おかしいんだよな。DOMを実装するにしては実装対象の文章のスキーマがないし、
DOM仕様のどれを実装するのかも不明。
宿題スレだと学校晒せ言われるレベルだぜ。というかなぜ宿題スレに来なかったんだ。
621デフォルトの名無しさん:2013/08/24(土) 19:40:09.26
まだ負け惜しみw
622デフォルトの名無しさん:2013/08/24(土) 22:28:00.95
>>509は俺たちを育てるための課題なんだよ
勉強になったからむしろ感謝してる

Document実装は型が同じでも、互換性は無い。これが解っただけでも進歩じゃないか
623デフォルトの名無しさん:2013/08/24(土) 23:22:45.04
あー臭い臭い
おさんの自演ほど哀れなものはない
624デフォルトの名無しさん:2013/08/25(日) 00:56:38.91
目的と手段を履き違えるととんでもないところへ行く

これが解っただけでも進歩じゃないか
625デフォルトの名無しさん:2013/08/25(日) 03:44:24.50
読む方のSAXは有り難くつかってるが書くほうのDOMの有り難みがイマイチわからない
初歩的にタグ文字列を連結して生成すればいいだけじゃん
626デフォルトの名無しさん:2013/08/25(日) 07:39:54.78
javaドカタたるものそうでなければ
627デフォルトの名無しさん:2013/08/25(日) 08:33:42.38
>>625
XPath使って検索とかできるよ。

そもそもDOMもSAXもJavaに特化してる訳でないので、ここで議論するのはスレチだと思うが
628デフォルトの名無しさん:2013/08/25(日) 08:40:36.91
プルパーサならともかく、SAXなんていうクソを有り難く使ってるとかさすがJavaドカタだな
SAXはプレーンテキストを一行ずつ読むのとは違い、構造上の問題で読み取り処理中に
ローカル変数や実行位置で状態を持てないため、状態を持ちたい場合ステートマシンが必要だが
それに疑問を感じたことはないのか
それが面倒だからDOMが使われることも多いが、プルパーサならその問題は解決する
629デフォルトの名無しさん:2013/08/25(日) 08:44:03.23
「単純にタグ文字列を連結するだけ」でDOMの仕様を満たせると思ってる時点で相当やばいだろ
文字のエスケープ忘れだとかタグの閉じミス、要素名の制限など
そんなもん一々文字列単位で扱ってたらプログラムがスパゲッティになる
630デフォルトの名無しさん:2013/08/25(日) 08:58:29.96
SAXが便利なのはDOMみたいなものへの変換を実装するときだけ
プル型の方があらゆる面で優れているしストリーミング書き込みとのAPIの対称性があってわかりやすい
631デフォルトの名無しさん:2013/08/25(日) 09:09:46.00
>>629
それだけが理由ならストリーミングAPI使えばいいじゃん
DOMで馬鹿みたいにメモリを消費する必要はないよ
一文字ずつ書くのはさすがに頭おかしいが、読み取りより書き出しのほうが
ストリーミングで十分な場合が多いのは確かだよ
632デフォルトの名無しさん:2013/08/25(日) 09:44:00.54
先日javaのプログラミングを始めてみたのですが
変数に値を代入するときに
a=5と書かずにa = 5と演算子の周りを空けるのは見やすくするためですか?
633デフォルトの名無しさん:2013/08/25(日) 09:51:46.22
そう
特に意味はない
634デフォルトの名無しさん:2013/08/25(日) 10:13:18.30
DOMはメモリに構造を保持するのが利点でしょ
XPathを使ってノードツリー、リスト、テキストと属性を取得できるから
エディタ機能を持つアプリケーションを作るなら最適じゃないか
635デフォルトの名無しさん:2013/08/25(日) 10:55:17.18
Java用DOMはいいかげん総称付きCollectionフレームワークに対応して欲しいなあ。
Iterableなラッパ自作してるけどさ
636デフォルトの名無しさん:2013/08/25(日) 11:19:01.03
eclipseを使ってみたのですが、肝心な実行の段階で
「エディタにはメイン型が含まれていません」
と表示されます。
terapadおよびコマンドプロンプトではしっかり起動したコードなので
文字などに間違いはないはずなのですが、なぜだかわかりますか?
637デフォルトの名無しさん:2013/08/25(日) 11:25:05.62
>>636
mainメソッドの定義がマズイのじゃないか。
コード貼って。
638デフォルトの名無しさん:2013/08/25(日) 11:33:38.11
import java.io.*;

public class HowOldAreYou {
public static void main(String[] args){
System.out.println("あなたの名前を入れて!");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
String line = reader.readLine();
System.out.println(line + "さん、こんにちわ。");
System.out.println("年齢を入力してください");
line = reader.readLine();
int age = Integer.parseInt(line);
System.out.println("いま" + age + "歳とすると、10年語は" + (age + 10) + "歳ですねぇ");
} catch (IOException e) {
System.out.println(e);
} catch (NumberFormatException e) {
System.out.println("年齢が正しくありません。");
}
}
}

お願いします
639デフォルトの名無しさん:2013/08/25(日) 11:37:08.97
>>638
正常に動作してしまったよ。
えっと、クラス名とファイル名が違ってるんでない?
publicなクラスはファイル名とクラス名が同じである必要がある。
640デフォルトの名無しさん:2013/08/25(日) 11:39:01.69
>terapadおよびコマンドプロンプトではしっかり起動したコード
なんだから問題があるのはEclipseだろ
俺はEclipse使ってないがプロジェクトプロパティにmain指定する場所とかないか?
実行可能jarを作る場合MANIFEST.MFにその情報が必要だから指定する場所があるはず
641デフォルトの名無しさん:2013/08/25(日) 11:40:58.52
あとmainが複数ある場合はプロジェクトツリーのmainを含んだjavaファイルを
右クリックすれば個別に実行できるようになっていると思われる
少なくともNetBeansでは出来る
642デフォルトの名無しさん:2013/08/25(日) 11:58:43.33
無事起動しました。どうもありがとうございます。
eclipseってjava入門者はやめたほうがいいんですかね・・・
643デフォルトの名無しさん:2013/08/25(日) 12:29:43.74
はなからコマンドプロンプト推奨してきた俺だが
>>642が例外処理使うステップにあるならIDEは使うべき

初心者用エクリプスなら、ランタイム入ってるインディゴかジュノ使っとけばとりあえずもんだいない
異論は認める
644デフォルトの名無しさん:2013/08/25(日) 12:33:11.27
>>642
そんなことないと思うよ。
eclipseだとエラーがあったらその場所に下線が引かれる。
下線にカーソルを合わせるとどう修正すればいいのかがポップアップ
されるから便利だよ。そのうち慣れるよ。
645デフォルトの名無しさん:2013/08/25(日) 13:57:14.22
馬鹿には無理
646デフォルトの名無しさん:2013/08/25(日) 14:31:18.47
>>642
Eclipseに限らずIDEを使う場合はIDEの中でコードを打ち込めばいいだけさ
この程度で値を上げてたらC言語でリンカの設定まで絡んでくると発狂するぞ
647デフォルトの名無しさん:2013/08/25(日) 14:33:08.91
C言語はデバッガの設定で発狂する
むしろリモートでブレイクポイント余裕でしたのJavaが異常なのか
648デフォルトの名無しさん:2013/08/25(日) 16:57:53.75
JFameを親にもつJDialogを表示するときも
invokeLater
を一応使うほうが安全と考えてよいですか??
649デフォルトの名無しさん:2013/08/25(日) 17:02:37.03
安全を考慮するならSwingの操作は全部そうすりゃいい
イベントキューの最後に放り投げるだけだからAPIが内部で投げてても副作用はない
650デフォルトの名無しさん:2013/08/25(日) 17:33:58.91
モーダルダイアログを表示するときはswingが勝手にマルチスレッド起こすので、
心配するこたないよ
651デフォルトの名無しさん:2013/08/25(日) 17:40:13.29
mybatisをやろうと思っているんだけど、select文の結果はbeanにマップするの
それともhashmapに入れるの?
youたちはどうしてる
652デフォルトの名無しさん:2013/08/25(日) 17:43:48.32
JPAかな
653デフォルトの名無しさん:2013/08/25(日) 17:54:59.48
>>652
JPAってメリットあるの?
そもそも、hashmapにマップするのがベストなのか、beanにマップするのがベストなのかって質問なんだけど
654デフォルトの名無しさん:2013/08/25(日) 17:58:14.33
youたちはどうしてるって質問に使ってねーよって回答しただけだよ
JPAなら必然的にbeanに詰めることになる
JPAの利点?キャッシュ戦略込みで色々面倒見てくれるのと
アノテーションによるDIに対応してるってあたりかな
655デフォルトの名無しさん:2013/08/25(日) 18:05:43.96
>>654
thank you
656デフォルトの名無しさん:2013/08/25(日) 18:47:34.07
エラーはないの止まる
ボタンを押すと数が増えるのを表示するだけなんだ
ボタンを押すと止まる
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView)findViewById(R.id.count_view);

String cha = String.valueOf( i );

String str = cha;
tv.setText(str);

}
int i = 0;
public void onBottonClick(int v) {
i++;
}
657デフォルトの名無しさん:2013/08/25(日) 21:29:33.13
onCreateでしかセットしてないのになるわけないだろ
androidドカタはandroidスレに行け。ここはサーブレットドカタ専用だ
658デフォルトの名無しさん:2013/08/25(日) 21:38:08.51
>>657
わかった

初めて10日くらいなんで全くわからんのじゃ
ハッハッハ許せ
659デフォルトの名無しさん:2013/08/25(日) 22:13:57.58
>>649
d

>>650
きっとそうだろうなとは思ってました
660デフォルトの名無しさん:2013/08/26(月) 10:51:37.84
○○.java っていうファイル名と
class ○○ っていうクラス名って一致させないといけないんですかね?
661デフォルトの名無しさん:2013/08/26(月) 12:11:26.57
Stringsやlineの定義がよくわかりません。構文含めちょっと長くなりますがお願いします
import java.io.*;

public class Nenrei {

public static void main(String[] args) {
BufferedReader BufferedReader = new BufferedReader(new InputStreamReader(System.in));
@ String line;
A //1人目
System.out.println("あなたの名前を入力してください");
Object reader;
B String name1 = reader.readLine();
System.out.println(name1 + "さんこんにちわ!!");
System.out.println("あなたの年齢を入力してください");
C line = reader.readLine();
int age1 = Integer.parseInt(line);
662デフォルトの名無しさん:2013/08/26(月) 12:15:47.19
まず@やAのコードは単にわかりやすくするためであり、コードそのものに意味はないのでしょうか。
次にBの時に変数をname1にして名前を読み込んでおりますが、
Cの時だと変数はlineになっております。
name1とlineは変数が異なりますが、Cの場合のlineと言うのはその下の行の
int age1 = Integer.parseInt(line); の(line)に掛かるものであり、
name1とlineと変数が異なっていても問題はないのか否か、です。
わかりづらいかもしれませんがよろしくお願いします
663デフォルトの名無しさん:2013/08/26(月) 12:16:44.03
構文全文はこれです
import java.io.*;

public class Nenrei {

public static void main(String[] args) {
BufferedReader BufferedReader = new BufferedReader(new InputStreamReader(System.in));
String line;
//1人目
System.out.println("あなたの名前を入力してください");
Object reader;
String name1 = reader.readLine();
System.out.println(name1 + "さんこんにちわ!!");
System.out.println("あなたの年齢を入力してください");
line = reader.readLine();
int age1 = Integer.parseInt(line);
//二人目
System.out.println("あなたの名前を入力してください");
Object reader;
String name2 = reader.readLine();
System.out.println(name2 + "さんこんにちわ!!");
System.out.println("あなたの年齢を入力してください");
line = reader.readLine();
int age2 = Integer.parseInt(line);

}
664デフォルトの名無しさん:2013/08/26(月) 12:20:16.25
自己解決しました
665デフォルトの名無しさん:2013/08/26(月) 13:27:09.41
// Hello.java
class Greeting {
  String name;

  Greeting(String n) {
    name = n;
  }

  void SayHello() {
    System.out.println("Hello, " + name);
  }
}

public class Hello {
  public static void main(String[] args) {
    Greeting g;

    switch(args.length) {
    case 1:
      g = new Greeting(args[0]);
      g.SayHello();
      break;
    default:
      g = new Greeting("Paul");
      g.SayHello();
    }
  }
}
666デフォルトの名無しさん:2013/08/26(月) 13:29:07.93
新規プロダクトなんだが、今時apletでやりましょうとかいうことになりそうなんだが、どうよ?
667デフォルトの名無しさん:2013/08/26(月) 14:34:08.39
どうよも何も、偉い人が決めたのなら従うしかないだろう?
668デフォルトの名無しさん:2013/08/26(月) 15:09:54.61
>>660
ファイル名とクラス名一致させなくても構わないが、
publicなクラスだと一致しないとだめ。

OracleJDKのコンパイラは、Java言語仕様を勝手に狭めて
1コンパイル単位に書いていいpublicクラスを1つだけということにしている。
他社のコンパイラも大体右ならえ。

まあコンパイルせずにファイル名見るだけでpublicクラスの有無を判別できるのは楽だよね
669デフォルトの名無しさん:2013/08/26(月) 15:27:51.53
>>666
ただ配布物の集中管理が目当てでそう決まったのなら
せめてアプレットの代わりにWebStartをなんとかねじ込むんだ(涙)
670デフォルトの名無しさん:2013/08/26(月) 16:12:05.18
>>664>>661-663に対するものではありません。
>>661-663に答えられる方いらしたらお願いします
671デフォルトの名無しさん:2013/08/26(月) 16:24:45.51
おちんちんのシコシコ仕方がわかりませんと言ったら甘えるななのに
おまんまんだったら丁寧に教えるだろ
女って得だよな
672デフォルトの名無しさん:2013/08/26(月) 17:38:52.08
>>546
blockとscopeとextentはベツモンだ。syntaxを見ただけではscopeとextentは特定できん。

>>668
バイトコードになったらpublicとか関係無いのに余計なことするよね。
sunの頃からだけど
673デフォルトの名無しさん:2013/08/26(月) 17:56:45.14
「メソッド readLine() は型 BufferedReader で未定義です」
と表示されてしまうのですが、どういうことかわかりますか?
674デフォルトの名無しさん:2013/08/26(月) 18:05:40.48
JComponentが選択されているか否かを表現するにはどうしたらよいでしょうか?
ただし、
・JComponentは沢山ある
・選択できるのは一つだけ
としたいです。
675デフォルトの名無しさん:2013/08/26(月) 18:06:04.72
>>673
java.io.BufferedReaderでないBufferedReaderを参照している。
676デフォルトの名無しさん:2013/08/26(月) 18:10:59.47
>>674
GlassPane使って枠でも描けばいいんじゃない
677デフォルトの名無しさん:2013/08/26(月) 19:50:30.33
{}の使いどきがイマイチわかりません。
クラスの始まりと終わりに付けるのはわかるのですが、クラスについて本格的に
学び始めない限りわかりづらいものなのでしょうか
678デフォルトの名無しさん:2013/08/26(月) 20:06:10.05
>676
普通にMediator使って解決できました
679デフォルトの名無しさん:2013/08/26(月) 20:22:17.23
>>677
まずは1ステートメントで書き切れない処理をブロックに置き換えられると覚えよう

int n = 10;
int m;
{
    int a = 2;
    int b = 3;
    int c = 4;
    m = a * b + c;
}

if (n == 10) return m;
if (m == 10) {
    m += n;
    return m;
}
680デフォルトの名無しさん:2013/08/26(月) 20:24:39.98
int m;はちょっと違うか
何故そこで疑問に思うって場所だから説明しずらい
681デフォルトの名無しさん:2013/08/26(月) 20:38:26.47
{ } はその登場する文脈で全て意味が違う。
※ この辺、他の言語だと文脈毎に違う記号列を使うのも多い。

配列初期化子ぐらいまで本格的に学習進めないと、
Javaソース各所の { } の意味が解るわけない。あきらめい。
682デフォルトの名無しさん:2013/08/26(月) 20:40:42.58
いえなんとなくわかった気がします。ありがとう
683デフォルトの名無しさん:2013/08/26(月) 20:45:24.50
無名クラスのコンパイルを一発で通せるようになれば、君も中括弧マスターだ!
684デフォルトの名無しさん:2013/08/26(月) 21:14:52.58
今日、javaアプリケーションのプロセスが停止しました。
verboseログを見ると最後の行に
「Failed to enlarge card table array during garbage collection.」
と出ていました。
vmstatのログを見ていると、そこからメモリのfree領域が極端に減り、
同時にswap領域が増えています。

プロセスが停止したのは、ガーベジコレクションに失敗してメモリ解放が
できなかったからと思っているのですが、そもそもなんで失敗したのか分かりません。

このあたり見た方がいいよっていうのなどあったら教えて下さい。
685デフォルトの名無しさん:2013/08/26(月) 21:15:52.10
動いているときにheapダンプする
686デフォルトの名無しさん:2013/08/26(月) 21:16:41.96
マップとかリストに延々何か突っ込んでるんじゃないかな?
687デフォルトの名無しさん:2013/08/26(月) 21:23:20.32
>>685
heapダンプ、ちょっとぐぐります。

>>686
ちなみに、稼動して2年近くなるシステムなんです。こんな落ち方するの初めて。
688デフォルトの名無しさん:2013/08/26(月) 21:24:16.45
static{}
{}
int[] array = new in[]{1,2,3,4,5}
俺たちのこと忘れないでくれ
689デフォルトの名無しさん:2013/08/26(月) 21:28:28.75
>ちなみに、稼動して2年近くなるシステムなんです。こんな落ち方するの初めて。
その状況にならないとダンプ見ても無意味です
ログでそこに至った経緯を見つけられたらよいのですが。できない場合もありますよね

わたしならjava.util.HashMap使ってるところ全検索します
690デフォルトの名無しさん:2013/08/26(月) 21:30:25.73
>>661-663
@ は意味あるね。最後の方の line = reader.readLine() で使ってるし。
A はコメントだから意味ないね。
B、C は2回のユーザーの入力のうち名前を変数 name1 に、年齢を変数 line に入れているわけだから変数名が異なっても問題ありません。用意する変数を1つだけにして、使い回しても問題ありません。

どこからこのコード持ってきたのか知らないけど、>>663 はコンパイルできないよね?
質問の内容からして、質問者自身も自分が何をやってるのか分かってないんじゃないかな?
一度 Java の基礎の本を読んだ方が長い目で見て近道だよ。
691デフォルトの名無しさん:2013/08/26(月) 21:35:29.35
>わたしならjava.util.HashMap使ってるところ全検索します
説明不足でした。今時無いとは思いますが、以下で検索してください
「HashMap 無限ループ」
692デフォルトの名無しさん:2013/08/26(月) 21:35:40.54
>>662
@は変数lineの宣言。
Aはコメント。動作には関係ない。
readLine()の戻り値を受ける変数が異なっていても問題はない。

>Object reader;
>String name1 = reader.readLine();

readLineメソッドを持つのはBufferedReaderのオブジェクト。
readerはオブジェクト型でnull参照なので、これは動作しないよ。
693デフォルトの名無しさん:2013/08/26(月) 21:43:41.19
>>689
>>691
>>わたしならjava.util.HashMap使ってるところ全検索します
明日、ソースを全検索してみます。
2年間の運用でMapに詰め込む量が増えてそうな若干の心当たりが。
調査ポイントが見つかっただけでも助かります。ありがとうございます。
694デフォルトの名無しさん:2013/08/26(月) 21:45:55.36
切り分けですが
java.util.ConcurrentModificationException
これがログに出てたらほぼ確定です

他に特定コアの使用率が100%に張り付くので、そこも判断材料になります
695デフォルトの名無しさん:2013/08/27(火) 01:49:22.08
動的にメソッドを実行したいのですが、
以下のようなことを簡単にする方法はありませんか?

public String hoge(){
return "test";
}
str=何か("hoge"); //strに"test"が入る
696デフォルトの名無しさん:2013/08/27(火) 01:56:16.26
自作クラスのclassオブジェクトからgetMethodでメソッドが取り出せる
コストが高いからループの中で何万と実行するのには向かんけどね
697デフォルトの名無しさん:2013/08/27(火) 02:32:08.18
eval
698デフォルトの名無しさん:2013/08/27(火) 02:34:07.86
>>696
ありがとうございます。
getMethod調べたら、めちゃくちゃ分かりにくい...
しかも、多用するためコスト高いのはキツいし、他の設計を考えてみます。
699デフォルトの名無しさん:2013/08/27(火) 02:36:25.93
>>697
javaでeval使えるのですか!?
調べてみます。
700デフォルトの名無しさん:2013/08/27(火) 03:29:05.83
Javaでeval使えるの?そんな話聞いたことないけど
701デフォルトの名無しさん:2013/08/27(火) 04:27:15.30
>>695
Stringを返すexecuteというメソッドを持ったクラスを作る。
HashMapにつめておく。
文字列を元にメソッドを取得してexecuteを実行。
702デフォルトの名無しさん:2013/08/27(火) 08:55:14.57
別プロセスのメソッドとか、別PCのメソッドとかも呼べるけどね
703デフォルトの名無しさん:2013/08/27(火) 16:08:05.46
物知りですね
704デフォルトの名無しさん:2013/08/27(火) 20:00:52.35
javaの勉強してるんだけど、やっぱり言語が違っていてもIDEが同じだと楽だよね
言語の勉強に集中できるしね。eclipseのバージョン4になっちゃったけどwww
705デフォルトの名無しさん:2013/08/27(火) 20:48:49.37
いやあCDTはちょっとな・・
壊滅的に遅いし・・
706デフォルトの名無しさん:2013/08/27(火) 21:00:59.14
>>704
特定の機能でなくて同じであることが重要なら、emacsとかのが対応してる言語多くて良いんじゃない。
707デフォルトの名無しさん:2013/08/27(火) 21:39:12.07
>>706
Adobeのツールなんで、emacsとか使うと逆に面倒なんだ
708デフォルトの名無しさん:2013/08/27(火) 21:40:00.73
jspで聞きたいことあるですけどど(たぶんほとんどhtml)
<textarea></textarea>
で複数行打ち込む欄を作るのはいいんだけど結果の表示は1行になってしまいます。
調べてたら wrap= かな と思ったけれど全然違いました。
どなたかご教授おねがいします。
ttp://www.dotup.org/uploda/www.dotup.org4443245.jpg
これが今のソースと結果です。
709デフォルトの名無しさん:2013/08/27(火) 21:52:32.58
ttp://www.dotup.org/uploda/www.dotup.org4443302.jpg
ソース画像はこちらになりました。
710デフォルトの名無しさん:2013/08/27(火) 22:17:52.69
>>708-709
それはJSPはおろかJavaでも何でもなくてHTMLの問題。
改行コードは正規表現で置換して<br />タグに変える。以上。
711デフォルトの名無しさん:2013/08/27(火) 23:33:32.23
>>710
ありがとです そのキーワードで少し探してみます
712デフォルトの名無しさん:2013/08/27(火) 23:40:30.30
ランナブルで書き出すとして、
ダブルクリックで起動したかコマンドラインで起動したかはどのように分岐する?
713デフォルトの名無しさん:2013/08/27(火) 23:49:06.11
jarは起動引き数う無し
コマンドラインに引数を1個与えるとする
これで分岐はできるけど、もっとスマートは方法があるかもしれない
714デフォルトの名無しさん:2013/08/27(火) 23:51:34.45
html5<br />ではな<br>と書いてください
横やりすまn
715712:2013/08/28(水) 00:04:33.04
>>713
さすがにそれはできないかなぁ
引数を割と使っているのと、
使う側に両者の起動による差異を意識させたくないのが本来の目的だから
716デフォルトの名無しさん:2013/08/28(水) 00:12:35.86
>>707
そもそも限定されてるなら楽も何もないな。
717デフォルトの名無しさん:2013/08/28(水) 00:17:37.27
.jarの関連づけを見る限りでは javaw.exe -jar "%1" %* を実行してるな
javaかjavawかを見分ける方法はあるのだっけ?
718デフォルトの名無しさん:2013/08/28(水) 00:30:48.06
タスクマネージャを開く
719デフォルトの名無しさん:2013/08/28(水) 00:34:34.46
>>712
親プロセスを取得してcmd.exeかexplorer.exeか判定する
720デフォルトの名無しさん:2013/08/28(水) 00:40:38.02
>>712
PS1とかSHELLとか環境変数入ってないの。
721712:2013/08/28(水) 00:48:02.17
>>719
やっぱしそういうアプローチになるのかなぁ
ということはちゃんとやるならgetPropertyでOS判定してからでなきゃいかんですな
でもダブクリして起動するまではJavaじゃなくネイティブの操作だし当然か
722デフォルトの名無しさん:2013/08/28(水) 07:52:40.40
jarならJarMain.mainから本来のmainルートへ そして伝説へ〜
723デフォルトの名無しさん:2013/08/28(水) 10:59:08.11
"".split(",").length
が1になってしまいます。
"".split(",").lengthは0
"a".split(",").lengthは1
"a,b".split(",").lengthは2
となって欲しいのですが何かよい方法はあるでしょうか?
724デフォルトの名無しさん:2013/08/28(水) 11:08:21.16
if (s.isEmpty()) {
return 0;
} else {
return s.split(",").length;
}
725デフォルトの名無しさん:2013/08/28(水) 11:11:28.28
>>724
天才です!
726デフォルトの名無しさん:2013/08/28(水) 12:15:57.80
表示後にsetEnabled()を変えた場合等でもrepaint()ってよんだほうがいいのですかね?
呼ばなくても再描画されているようですが、もしかして環境によるのかなと心配しています。
727デフォルトの名無しさん:2013/08/28(水) 19:51:10.01
>>712
System.console()戻り値はプロンプト起動とeclipse起動で異なるらしいので
もしかすると
728デフォルトの名無しさん:2013/08/28(水) 21:06:14.11
repaint()が何をしているのか誰に呼ばれるのか、少しソースを追ってみよう
ついでにinvalidate()も見るといろいろ見えてくる
729デフォルトの名無しさん:2013/08/28(水) 21:46:49.27
インターフェイスIAccountMapperをメソッドに渡すと、何故かインスタンスが戻ってきた
IAccountMapperのサブクラスは無いのに、何でインスタンスを返せるの?

MyBatisの勉強してたら、こんなメソッドがあったもんで
IAccountMapper mapper = session.getMapper(IAccountMapper.class);
730デフォルトの名無しさん:2013/08/28(水) 22:33:05.33
IAccountMapper.h でググる











0件!!
731デフォルトの名無しさん:2013/08/28(水) 23:09:57.40
EnumMapはやっぱ速いんだな
あとserver vmだとintern()が何故か遅くなったので64版からは封印かな

曜日をキーにmap.get(key)をウォームアップ10万回、計測200万回の結果 (CPU: C2D E8400)
client vm: 205ms x1(EnumMap) : x1.84(HashMap String.intern()) : x4.61(HashMap String)
server vm: 27ms x1(EnumMap) : x9.81(HashMap String.intern()) : x9.44(HashMap String)
732デフォルトの名無しさん:2013/08/29(木) 12:17:01.60
Java 6 Java 7 Java 8
初心者がこれから覚えるならどのバージョンがいいでしょうか?
733デフォルトの名無しさん:2013/08/29(木) 12:40:56.95
どういう意味での初心者かわからないけど、オススメはJavaをやらないことです
というかプログラミングについても勉強せず他の事を学びましょう
将来経営者になって奴隷プログラマ達を薄給でこき使うのが一番です
734デフォルトの名無しさん:2013/08/29(木) 13:20:25.00
経営とかめんどいんでもっと楽な方法はないですか?
735デフォルトの名無しさん:2013/08/29(木) 16:51:20.02
>>729
java.lang.reflect.Proxyとか使えば、
任意のインターフェースを有するインスタンスをいくらでも作れるよ

>>731
HashMapのキーにString.intern()使うのは、一度きりのputの時だけで、
getの時には基本使わんなあ
736デフォルトの名無しさん:2013/08/29(木) 18:27:47.78
株を買い占めれば経営者をこき使えるのでお勧めです
737デフォルトの名無しさん:2013/08/29(木) 19:49:11.58
>>735
もちろんキーを作る時にinternしてるよ
map.put(key.intern(), value)みたいに
738デフォルトの名無しさん:2013/08/29(木) 21:38:34.49
public class count {

public static void main(String[] args) {
for (int i = 0; i < 10; i ++) {
System.out.print(i + ":");
for (int j = 0; j < i; j++); {
System.out.print("a");
}
System.out.println("");
これなんですが、本来はaがどんどん増えていく(最大9個)はずなんですが
一個のママなんです。どこがおかしいかわかりますか?
739デフォルトの名無しさん:2013/08/29(木) 21:43:01.98
>>738
悪いこと言わないからNetBeans使おう

j++); //←ちなみに問題はこれ
740デフォルトの名無しさん:2013/08/29(木) 21:54:01.54
ありがとうございます。
NetBeansってエクリプスとどう違うんですか?初心者向けってことでしょうか
741デフォルトの名無しさん:2013/08/29(木) 21:57:05.06
Eclipseは色んな企業・組織のプラグインを詰め込んで環境を作るタイプ
NetBeansは一通り有用な機能を予め詰め込んだタイプ
Javaエディタに関してはNetBeansはかなり親切にコードを検査してくれる
742デフォルトの名無しさん:2013/08/29(木) 21:59:59.74
log4jを使おうと思っているんですが、log4はLogger.getLogger()を呼び出して使うのが一般的ですか?
Loggerをラップする形で、共通化することってありますか
743デフォルトの名無しさん:2013/08/29(木) 22:00:07.05
なるほど
Eclipse:実際にプログラマとして働いている人用
NetBeans;Java入門者用
って感じでいいでしょうか
744デフォルトの名無しさん:2013/08/29(木) 22:02:12.50
だいたいそんな感じ
私はNetBeansを実務に使ってるけどね
745デフォルトの名無しさん:2013/08/29(木) 22:03:25.99
ありがとうございます。
NetBeansを導入してみます。ちなみにいまfor文なんですが、多くの人が
ここで詰まるみたいです。またちょくちょく聞くかも・・・
746デフォルトの名無しさん:2013/08/29(木) 22:03:47.45
>>742
ロガーってスタックトレース保持してるんじゃなかったっけ?
ラップしちゃうとラップメソッドのメソッド情報とか出力されちゃうんじゃ…
747デフォルトの名無しさん:2013/08/29(木) 22:05:42.80
for文できたらこのスレでは上位10%だよ
748デフォルトの名無しさん:2013/08/29(木) 22:07:37.95
>>747
ですよね〜^^
749デフォルトの名無しさん:2013/08/29(木) 22:09:11.55
そんなに難しいんですか・・・。応用が多いってことでしょうか
750デフォルトの名無しさん:2013/08/29(木) 22:11:47.88
まあこのスレ3人でまわしてるんですけどね
751デフォルトの名無しさん:2013/08/29(木) 22:14:10.30
いや、俺とお前だけだよ
752デフォルトの名無しさん:2013/08/29(木) 22:23:24.62
>>742
まじですか
それじゃ、ラップしちゃだめですね。サンキュー

>>747
まっさかー
753デフォルトの名無しさん:2013/08/29(木) 22:25:00.79
もちろん俺も混ぜてくれるよな?^^
754デフォルトの名無しさん:2013/08/29(木) 23:22:26.54
質問です
urlにjspファイルを打ち込みtextを書き込みサーブレット1へ送信します。
そのサーブレット1はjspから受け継ぐtextを変数の箱に入れます。
この変数の箱はprivateにしてゲッタとセッタを設定します。
このサーブレット1にhtmlコード(画像より)を書き込みサーブレット2へ送信します。
サーブレット2ではサーブレット1で定義した変数の箱の中身を取りに行こうとゲッタしているのですが
結果が null です。
サーブレットを使う場合はこのような変数のもらい方ではいけないのでしょうか。
画像 ttp://www.dotup.org/uploda/www.dotup.org4449926.jpg
755デフォルトの名無しさん:2013/08/29(木) 23:47:16.04
>>754
calledは生成(new)されただけで何も与えられてない。
それ以前にサーブレットはインスタンスをリクエストごとに生成するのではなく、事前にインスタンスを用意しといて複数のリクエストから別スレッドで利用されるもの。インスタンス変数は基本使わない。
756デフォルトの名無しさん:2013/08/30(金) 00:01:45.35
sessionとかにsetAttributeしとけそれがサーブレットドカタのセオリー
757デフォルトの名無しさん:2013/08/30(金) 12:32:23.47
SwingのinvokeLaterについて質問です。

Thread.currentThread().getName()が
AWT-EventQueue-x で、

SwingUtilities.isEventDispatchThread() が trueを返すなら描画に関わる処理を直接行ってもいいと思うのですが、
「それを行うメソッドがpublicなら、安全でない場所から呼ばれる可能性はある」
と解釈しているのですが合っていますか?

そのような場合予防線として、以上のように現時点でEventDispatchThread上であってもinvokeLaterを使うのはありでしょうか?
758デフォルトの名無しさん:2013/08/30(金) 12:52:46.10
コメントにでも
/* このメソッドは EDT 以外で呼んではならない */
とか書いておけば普通は十分
設計上 EDT 以外からでも呼べるメソッドとして想定してるのならとりあえず invokeLater を使っとくのはあり
759デフォルトの名無しさん:2013/08/30(金) 13:49:32.05
>>758
ありがとうございます。
760デフォルトの名無しさん:2013/08/30(金) 14:00:15.51
package count;

public class Count {
public static void main(String[] args) {
int i ;
for (int i = 0; i <3; i++) {
System.out.println(i);
}
System.out.println("i =" + i);
System.out.println("end");
}
}
この構文なんですが、事前にiを宣言しているはずなのにエラーが表示されます。
なぜでしょうか
761デフォルトの名無しさん:2013/08/30(金) 14:26:50.69
それと追加で質問なんですが、
for (int j = 0; j < i; j++){
これと
for (int j = 0; j < i; j++);{
これで出てくる文が大きく異なります
;って一体どういう効果があるんでしょうか
762デフォルトの名無しさん:2013/08/30(金) 14:40:55.84
>>760
iを2回宣言してるから
>>761
;でfor文は終わっているから
763デフォルトの名無しさん:2013/08/30(金) 14:41:18.09
どんなエラー文なのか書き込んでみて!
764デフォルトの名無しさん:2013/08/30(金) 14:56:37.54
765デフォルトの名無しさん:2013/08/30(金) 15:50:39.25
さすがjavaスレw
766デフォルトの名無しさん:2013/08/30(金) 15:56:36.03
馬鹿には無理
767デフォルトの名無しさん:2013/08/30(金) 15:57:19.18
>>761
for(〜) はその後に続く文をひとつだけ繰り返し実行する構文だ
ひとつだけだ
大事なことなので2回言いましたよ
; と書いたら、それでひとつの文になるので、そこでおしまい

{ } はひとつの文しか書けないところに複数の文が書ける魔法の構文だ
中身は複数の文だけど { } で括ると全体でひとつの文になるんだ
for と組み合わせたら、もしかしたら便利かもしれないね
でも特に for と関係なくいつでも使えるよ
768デフォルトの名無しさん:2013/08/30(金) 16:17:58.81
ローカルスコープで使う無名block文{}って、ジャバでは確か名前ついてたよね?何だっけ(ブロックスコープ?)
769デフォルトの名無しさん:2013/08/30(金) 16:25:39.44
自演臭が凄い
770デフォルトの名無しさん:2013/08/30(金) 16:33:20.58
自己解決しました
771デフォルトの名無しさん:2013/08/30(金) 17:09:00.16
自演しました
772デフォルトの名無しさん:2013/08/30(金) 19:09:10.73
>>757
間違った解釈だ。どこがというか使っている言葉以外全部間違っている。
773デフォルトの名無しさん:2013/08/30(金) 19:52:27.19
あーそうですか。解決したのでもういいです^^
774デフォルトの名無しさん:2013/08/30(金) 20:20:56.08
自己解決ました
775デフォルトの名無しさん:2013/08/31(土) 04:06:05.76
>>774は私ではありません。
答えられる方いらしたらお願いします
776デフォルトの名無しさん:2013/08/31(土) 09:10:05.83
コレクションったらArrayListとHashmapしか使えないやつ多すぎ
777デフォルトの名無しさん:2013/08/31(土) 11:04:21.13
package count;

public class Count {
public static void main(String[] args) {
int i ;
for (int i = 0; i <3; i++) { // int i は前行で既に宣言されている for(i = 0; i < 3; i++) と書き換えてみる
System.out.println(i);
}
System.out.println("i =" + i);
System.out.println("end");
}
}

実行結果
0
1
2
i =3
end
778デフォルトの名無しさん:2013/08/31(土) 11:07:41.94
int i;
for (i = 0; i < 3; i++); { // セミコロンでステートメントが終了 iはインクリメントされて評価もされる
System.out.println(i);// ここは実行されない
}
System.out.println("i =" + i);
System.out.println("end");

実行結果
3
i =3
end
779デフォルトの名無しさん:2013/08/31(土) 11:17:48.81
int i;
for (i = 0; i < 3; i++) {
System.out.println(i);// ここは実行される
}
System.out.println("i =" + i);
System.out.println("end");

実行結果
0
1
2
3
i =3
end

int i;
for(i = 0; i < 3; i++); // まったく意味のないコード はじめからint i = 3;と初期化すればよい
for(i = 0; i < 3; i++) // printが3回実行される
System.out.println(i);
780デフォルトの名無しさん:2013/08/31(土) 11:22:25.14
実行結果
0
1
2
3 ←これ嘘ごめん
i =3
end
781デフォルトの名無しさん:2013/08/31(土) 13:24:09.71
782デフォルトの名無しさん:2013/08/31(土) 13:32:52.39
jersey2.2のContainerRequestFilterの使い方教えてください。

jersey.java.net/documentation/latest/user-guide.html#filters-and-interceptors
をみつつ作成しましたが、英語が読めないので良くわからんです。

サーバ tomcat7

エラーログ
java.lang.IllegalStateException: Not inside a request scope.
...

ソース
@Provider
public class LoginFilter implements ContainerRequestFilter {

@Override
public void filter(ContainerRequestContext request) throws IOException {
System.out.println(request.getUriInfo());
}
}
783デフォルトの名無しさん:2013/08/31(土) 13:42:24.94
JavaのSwingのGraphicsで書いた物体をキー入力で移動させたとき、なんだかカクカクしませんか?
定期的に滑らかにピクセル移動が出来ていないような感じ?
だけど同じJavaでもOpenGL使っているようなライブラリではヌルヌル動いているあたり、クロスプラットフォームにする過程で何か弊害がでているのかな?
784デフォルトの名無しさん:2013/08/31(土) 13:48:07.53
>>783
たぶんGC。毎回毎回描画処理でColorやFontを生成して内科医?
IDEでプロファイラがおすすめ
785デフォルトの名無しさん:2013/08/31(土) 15:00:27.19
垂直同期しないとスムーズにはならないと思うよ。
OpenGLはデフォで垂直同期だろうし
786デフォルトの名無しさん:2013/08/31(土) 15:26:51.50
液晶にも垂直同期信号とか帰線区間とかあんのかな
787デフォルトの名無しさん:2013/08/31(土) 15:33:55.34
あるよ!
788デフォルトの名無しさん:2013/08/31(土) 15:43:14.24
うんこ言語なのでたしかに遅いけどキー入力程度のスピードでカクカクするなら書き方がおかしい
そこまでうんこではない
789デフォルトの名無しさん:2013/08/31(土) 15:50:32.17
Windows OS/Platformって、Office業界はともかく、IT業界とかWeb業界的にみるともうオワコンなんですよね?
790デフォルトの名無しさん:2013/08/31(土) 15:53:05.39
定番通りswingの描画ぶっ壊して遅くなってるだけじゃないの?
つか、swingスレ行きなよ。
791デフォルトの名無しさん:2013/08/31(土) 16:29:35.25
WindowsはActiveDirectoryの支配がある限り当分安泰だろ
792デフォルトの名無しさん:2013/08/31(土) 16:37:46.77
jdk1.7のjavadocの日本語版はすでに提供されるようになったのですが、オンラインだけ提供でzip,tarなどのオフライン版はないのでしょうか。
793デフォルトの名無しさん:2013/08/31(土) 16:44:05.76
gkpluginsLibってなんですか?
794デフォルトの名無しさん:2013/08/31(土) 18:21:05.24
>>784
それは間違いなくしていないです。
やはり垂直同期の問題なのかな?
795デフォルトの名無しさん:2013/08/31(土) 18:33:38.04
JComponent#setDoubleBuffered() さえオンになっていれば
書きかけの絵は中途半端に出てこないはずですしおすし
796デフォルトの名無しさん:2013/08/31(土) 18:41:02.75
>>795
それはカクカクとは関係ない

画面サイズとかオブジェクト数とか減らしてみて改善が見られるかどうか?
797デフォルトの名無しさん:2013/08/31(土) 19:05:12.50
javaドカタはおとなしくサーブレット系かandroidやってればいいの
798デフォルトの名無しさん:2013/08/31(土) 21:22:08.97
JavaドカタだからHadoopとかHBaseとかElasticSearchやってる。
799デフォルトの名無しさん:2013/08/31(土) 21:32:09.60
Javaは幅が広すぎるんだよな
VMメーカーは泣いてるだろ
800デフォルトの名無しさん:2013/08/31(土) 21:39:23.84
>>799
金儲けのためにVM作ってるなら泣き言をいうべきではない。
801デフォルトの名無しさん:2013/08/31(土) 21:57:22.74
java.util.DateかCalenderを使って現在時刻から数えてX時00分から15分刻みの時刻を得たいです。
(例えば8:55なら9:00、4:31なら4:45といった感じです)

何かいい方法はありますか?
802デフォルトの名無しさん:2013/08/31(土) 22:06:40.76
Calendar使えばいいよ

cal.add(HOUR_OF_DAY, n);
cal.getTime(); // Dateオブジェクトを返す
cal.add(MINUTE, 15);
cal.getTime();
803デフォルトの名無しさん:2013/08/31(土) 22:10:55.23
おっと()の中呼んでなかった。
まずcal.add(HOUR_OF_DAY, n);をして、

15 * 60 * 1000 ミリ秒で15分刻みだからgetTimeInMillis()をこれで割って
余りが出てから+1してやる。
これを 15 * 60 * 1000 でまた乗算した値をDateかCalendarの初期値にする。
804デフォルトの名無しさん:2013/08/31(土) 22:31:33.38
DateやCalendarを使うのは逆に面倒くさそうだし全部ミリ秒で処理しよう

    public static void main(String[] args) {
        long now = System.currentTimeMillis();
        long time1 = plusHour(now, 1);
        long time2 = floorTimeMinutes(time1, 15);
        System.out.println(new Date(now));
        System.out.println(new Date(time2));
    }
    public static long plusHour(long time, int hour) {
        final int msOfHour = 60 * 60 * 1000;
        int plus_ms = hour * msOfHour;
        return time + plus_ms;
    }
    public static long floorTimeMinutes(long time, int minutes) {
        final int msOfMinutes = 60 * 1000;
        int floor_ms = minutes * msOfMinutes;
        long unitSize = time / floor_ms;
        long floorTime = unitSize * floor_ms;
        if (time % msOfMinutes > 0) {
            floorTime += floor_ms;
        }
        return floorTime;
    }
805デフォルトの名無しさん:2013/08/31(土) 22:32:19.45
get で分を求めて 15 刻みに切り上げて再度 set すればいい
806801:2013/08/31(土) 22:48:21.81
>>802-805
ありがとうございます。
int m = cal.get(Calendar.MINUTE);
cal.set(Calendar.MINUTE, 0);
cal.add(Calendar.MINUTE, (m / 15 + 1) * 15);

これでやってみます
807デフォルトの名無しさん:2013/09/01(日) 01:16:27.93
>>806
それではジャスト9:00のときも繰り上がってしまわないかい?
((m+14)/15)*15
なら一発じゃない?
試してないが
808デフォルトの名無しさん:2013/09/01(日) 02:05:08.66
スクリプト言語使ってるとやっぱJava便利だなと思う。
特にこれ

obj.add***Listener(new ***Listener() {

@Override
...........

@Override
............

});

クラス内ではあまり他のクラスと強く結び付けたくないとき、とりあえずinterfaceを引数に入れておいて、
mainメソッド等の皆が顔合わせするときに具体的に定義するようなこれ
これって名前があるの?
809デフォルトの名無しさん:2013/09/01(日) 02:13:18.10
ポインタ?
810デフォルトの名無しさん:2013/09/01(日) 02:18:26.20
委譲って言葉が使われてるかな
811デフォルトの名無しさん:2013/09/01(日) 02:22:07.36
>>808
もしかして無名クラスのことか?
便利っていうか苦肉の策だけど・・・
812デフォルトの名無しさん:2013/09/01(日) 02:23:49.01
苦肉の策って何が?無名クラスはただのシンタックスシュガーじゃん
813デフォルトの名無しさん:2013/09/01(日) 02:27:43.71
>>812
スクリプトだとducktypingあるしC#ならdelegateがあるから
814デフォルトの名無しさん:2013/09/01(日) 02:29:56.13
C#は無名クラスが無くて面倒だわ
プロパティの初期化をするための機能になってるな
815デフォルトの名無しさん:2013/09/01(日) 02:36:47.34
無名クラスって
new $1()

とかで呼び出せる?
816デフォルトの名無しさん:2013/09/01(日) 02:41:32.54
無理
出来ない
817デフォルトの名無しさん:2013/09/01(日) 02:55:24.44
newは無理だろうけど、newInstanceならできるだろうな。
818デフォルトの名無しさん:2013/09/01(日) 04:09:13.80
>>817
たしかにでけた
819デフォルトの名無しさん:2013/09/01(日) 04:10:17.82
http://ideone.com/1Frady

無名クラス扱えるとかアカン
820デフォルトの名無しさん:2013/09/01(日) 11:29:03.40
無名クラス.newInstance()するくらいならクラス作ったほうがいいんじゃ
821デフォルトの名無しさん:2013/09/01(日) 11:37:00.90
>>812
基本的にリスナを書く地獄のような手間を軽減するためのものだから
多くのスクリプトやC#みたいに関数オブジェクトが使える言語ならリスナクラスはあまり使わない
822デフォルトの名無しさん:2013/09/01(日) 14:56:10.96
ObjectInputstreamでreadObjectするときにEOFExceptionが投げられるのですがどういったことが原因だと考えられますか?

もしかして、こういうキャストはダメなのですか?
Test[][] data = (Test[][])in.readObject();

しかし書き出すときには

out.writeObject(test); // Test[][] test

となるようにちゃんと書き出しています。
823デフォルトの名無しさん:2013/09/01(日) 15:00:15.50
>>822
復元に必要な情報が揃う前にStreamがEOF(End of File)になってるエラー
キャストじゃなくてデータがおかしいって言ってる
824デフォルトの名無しさん:2013/09/01(日) 15:07:57.48
エラーや例外の意味を理解できない人でもプログラミングしてるなんて、ハードル低い分野だねプログラミングって奴は
825デフォルトの名無しさん:2013/09/01(日) 15:08:48.55
>>823
ということは書き出しがうまくいっていないかもしれませんね。
ありがとうございます。
826デフォルトの名無しさん:2013/09/01(日) 15:09:42.79
馬鹿には無理
827デフォルトの名無しさん:2013/09/01(日) 15:13:42.42
writeObjectやreadObjectって配列の読み書きできたのんか
828デフォルトの名無しさん:2013/09/01(日) 15:29:07.75
>>827
今書き出したファイル見たらNul みたいな文字列のみのファイルになってました。

out.writeObject(parent.getTest());

このときのSerializeができていない?

Parentクラスで

public Test[][] getTest() {
return test;
}

があったとして、このときってTestクラスのみSerializableをimplementsしていればいいのですよね?
829デフォルトの名無しさん:2013/09/01(日) 15:38:24.65
getTest()が単にNULなだけでした。
失礼しました。お恥ずかしい・・・・。
830デフォルトの名無しさん:2013/09/01(日) 15:39:38.68
よくわからないなら
未検証のメソッド呼び出しを省いて
しかるべきデータを直書きしたときと比較すればいい
831デフォルトの名無しさん:2013/09/01(日) 16:55:17.16
phpとjavaマスターするのどれくらいかかる?
832デフォルトの名無しさん:2013/09/01(日) 16:59:40.15
>>831
お前の知能による
質問からして馬鹿であることが伺えるので、まあ20年ぐらいか
833デフォルトの名無しさん:2013/09/01(日) 17:05:09.65
マスターってどれくらい出来るレベルがマスターなのよ
834デフォルトの名無しさん:2013/09/01(日) 17:05:49.66
標準のパッケージをAPIリファレンスなしで使いこなせるレベルがマスター?
835デフォルトの名無しさん:2013/09/01(日) 17:06:32.10
>>833
JVMやjavacが書ける
勿論すべての標準ライブラリに精通している
836デフォルトの名無しさん:2013/09/01(日) 17:06:35.27
20年かかってマスターしても20年前の技術だから役に立たないね
837デフォルトの名無しさん:2013/09/01(日) 17:07:29.29
正直javaとjavaxの境界もよく分かってないわ
Swingってどっちだっけ?レベルw
838デフォルトの名無しさん:2013/09/01(日) 17:13:25.90
>>837
お前は質問する側
回答する側の話題に混ざってくるなカス
839デフォルトの名無しさん:2013/09/01(日) 17:15:01.08
自称中級者の自尊心稼ぎのせこさは異常w
840デフォルトの名無しさん:2013/09/01(日) 17:34:46.54
マスターって言ったら文法マスターってことだろ
841デフォルトの名無しさん:2013/09/01(日) 17:57:32.53
俺はJavaできるよ ってドヤ顔できるレベルのことだろ

大したレベルじゃないw
842デフォルトの名無しさん:2013/09/01(日) 17:58:54.47
1日3時間の勉強なら30〜40日くらいで入門書1冊は終わるんじゃね
入門書の内容が全部頭に入ってりゃマスターでいいだろ
843デフォルトの名無しさん:2013/09/01(日) 18:02:35.34
俺から見ればお前ら全部マスターさ
よろしくなマスター!
844デフォルトの名無しさん:2013/09/01(日) 18:07:19.09
Masterを字引で読んで来いよ
マスターと呼べるくらいには数年以上仕事で使ってるくらいの熟練者じゃないとダメだろ
845デフォルトの名無しさん:2013/09/01(日) 18:08:18.42
Javaスレでマスターと言ったらこれ

オラクルマスター - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC
846デフォルトの名無しさん:2013/09/01(日) 18:19:29.07
土日つぶせばマスターできる奴と、半年経って何も出来ない奴。
ほぼこの2種類しかいない。
847デフォルトの名無しさん:2013/09/01(日) 18:21:08.71
土日潰せるとか無趣味なのか?それとも生きるのに必死なのか?
848デフォルトの名無しさん:2013/09/01(日) 18:23:36.53
20年かかってマスターするとかそれはそれですごい能力だよね
大学生が中学生の問題に苦戦したりもするってくらいに数年前覚えたことなんて忘れやすいのに
20年分も記憶を保持とか
849デフォルトの名無しさん:2013/09/01(日) 18:57:23.60
javaしか覚えられないポンコツ同士仲良くやろうぜ
850デフォルトの名無しさん:2013/09/01(日) 19:03:54.42
俺以上のポンコツなんていないから仲良く出来ないな
851デフォルトの名無しさん:2013/09/01(日) 19:06:01.41
プログラマで土曜が休みの奴なんておらんやろー
852デフォルトの名無しさん:2013/09/01(日) 19:09:03.25
馬鹿には無理
853デフォルトの名無しさん:2013/09/01(日) 19:16:03.54
>>848
じゃあ中学数学なんてスキップして、いきなり大学レベルから始めたらいいですね

そうじゃないだろ馬鹿
学習なんて積み重ねなのに、なんで記憶とかそんな話になるんだよ
854デフォルトの名無しさん:2013/09/01(日) 19:25:21.54
どうでもいい話に
おまえら熱くなりすぎ
ワロタ
855デフォルトの名無しさん:2013/09/01(日) 19:31:25.93
Javaできますって奴を採用しても、上から下へ流れるプログラムしか読み書きできない奴とか、使い物にならないからなぁ。
856デフォルトの名無しさん:2013/09/01(日) 19:35:37.81
マスターと言えば師範
つまり・・・なんだ?
857デフォルトの名無しさん:2013/09/01(日) 19:37:31.52
>>855
Java使ってる奴がそれを言っちゃうの?
858デフォルトの名無しさん:2013/09/01(日) 20:19:35.79
マスターは修士号のこと
859デフォルトの名無しさん:2013/09/01(日) 20:20:11.62
ちょいとドイツでJAVAのマイスター資格を取得してくらあ
860デフォルトの名無しさん:2013/09/01(日) 20:31:53.64
eclipseのブレークポイントが削除できなくなりました
嫌がらせでしょうか;;
861デフォルトの名無しさん:2013/09/01(日) 21:53:58.26
>>857
?
862デフォルトの名無しさん:2013/09/01(日) 22:07:30.60
こういう時に言葉の定義だの辞書上での意味だのを持ち出す奴はたいてい馬鹿
863デフォルトの名無しさん:2013/09/01(日) 22:11:36.58
>>861
Javaなんて大勢の工員がライン作業でCOBOLみたいなコードを垂れ流す言語だからね
864デフォルトの名無しさん:2013/09/01(日) 22:14:29.38
自己解決しました
865デフォルトの名無しさん:2013/09/01(日) 22:14:59.22
WindowsがオワコンならC#もオワコンなんですか?
866デフォルトの名無しさん:2013/09/01(日) 22:39:51.50
>>865
その通りです
C#のようなクソに手を出す暇があれば、Linux環境を用意してCを書きましょう
OSへの理解を深めるのです
867デフォルトの名無しさん:2013/09/01(日) 22:46:58.18
Windowsもオワコンで、C#すらもオワコンなのに、なんでORACLE Javaは今でもWindows Platformに多大な投資をしてサポートをつづけているんですか?
868デフォルトの名無しさん:2013/09/02(月) 00:01:09.83
人のコード見てて、おいおいArrayList使おうぜーとかよく思うことがある
だが調子のって何でもかんでもListにぶち込んでいたせいか、マルチスレッドにしているのに気づかず痛い目にあった
動的に書くとエレガントに見えるがおそろしいね〜
869デフォルトの名無しさん:2013/09/02(月) 00:21:07.32
>>868
痛い目見たとかいいながら、結局バグった理屈を理解してない風な書き込み
870デフォルトの名無しさん:2013/09/02(月) 00:41:42.57
元のコード理解できないアホに修正させるとこうなるというお話でした
871デフォルトの名無しさん:2013/09/02(月) 00:44:05.83
Vector使えばスレッドセーフになるとか思ってそう
872デフォルトの名無しさん:2013/09/02(月) 00:48:40.12
確かによくわからんな
マルチスレッドなら特殊なリスト使うから気づくよな
873デフォルトの名無しさん:2013/09/02(月) 00:50:48.37
StringWriterとかもはや何のためにあるか分からないクラスが結構標準APIに残ってしまってるな
874デフォルトの名無しさん:2013/09/02(月) 00:51:18.85
>>872
Vector使えばスレッドセーフになるとか思ってそう
マルチスレッドだからスレッドセーフなコレクションを使わないといけないってことは全くないし
コレクションのメソッドがマルチスレッドであることに意味があるケースは滅多にない
875デフォルトの名無しさん:2013/09/02(月) 00:53:09.43
>>874
訂正
マルチスレッドであることに→スレッドセーフであることに
876デフォルトの名無しさん:2013/09/02(月) 00:57:41.24
>>863
それはCOBOLerをそのまま使っているからだろう。能力ないのを言語のせいにされても。いくら自分がそうだからって。
ただしライン作業はそのとおりだ。だから前後の関係なくプログラムできるやつが必要なんだ。
877デフォルトの名無しさん:2013/09/02(月) 00:59:09.65
>>874
>マルチスレッドだからスレッドセーフなコレクションを使わないといけないってことは全くないし
addしないって事か?
それとも外側で同期すればいいとか?
後者なら素直に使えばいいと思うが
878デフォルトの名無しさん:2013/09/02(月) 01:03:45.94
>>877
もちろん外側で同期だよ
処理単位が全てコレクションのメソッド呼び出し一発だけならいいけど
どうせもっと大きい単位で同期化する必要がある場合が多い
879デフォルトの名無しさん:2013/09/02(月) 01:05:24.29
そうか?非同期といえば基本はQueueだと思うが
880デフォルトの名無しさん:2013/09/02(月) 01:06:05.76
>>873
なんでや!StringWriter便利やろ!ユニットテストで重宝するやろ!

たかだか文字列出力機能の単体テストのために
HDDやHTTPサーバやJP1用意しないといけないような設計する奴は
早く引退してくれー
881デフォルトの名無しさん:2013/09/02(月) 01:07:46.67
ejbコンテナにおいて
@Resource
DataSource ds;

で呼び出されるオブジェクトは毎回同じものが呼ばれるのですか?
882デフォルトの名無しさん:2013/09/02(月) 01:12:04.12
>>878
うーんまあ最小単位で同期化するのが面倒なのはわかるけど・・
俺は念の為SynchronizedListにしておくかな
883881:2013/09/02(月) 01:12:58.55
ちょっと質問がわかりづらかったかもしれません

servletAでフィールドに@Resouce(name="hoge")を注入して、servletBでも@Resouce(name="hoge")を
注入した場合、両者が参照するものは同じオブジェクトですか?
884デフォルトの名無しさん:2013/09/02(月) 01:18:09.65
>>880
ユニットテストとか言うならそんなprintfデバッグみたいな化石技法使わずに
telnet立ててメソッド呼び放題にするわ
885デフォルトの名無しさん:2013/09/02(月) 01:23:08.56
886デフォルトの名無しさん:2013/09/02(月) 01:23:49.05
>>882
面倒とかそういう問題じゃないよ
例えばイテレータやインデックスを使った列挙処理はロック必須
887886:2013/09/02(月) 01:24:22.09
外側でロック必須ってことね
888デフォルトの名無しさん:2013/09/02(月) 01:33:06.76
その外側のロックを忘れて痛い目にあったって意味ね。
889デフォルトの名無しさん:2013/09/02(月) 01:33:48.37
そんなもん配列でも一緒だろ
何を言ってるのか
890デフォルトの名無しさん:2013/09/02(月) 01:36:00.71
>>886
java.util.concurrentなんかでもダメな状況?
そうなると巨大な配列を手動で列挙って状況だと思うが、
まあそうなったら同期するしか無いかもな。
すまない、なったこと無いのでわからん・・。
891デフォルトの名無しさん:2013/09/02(月) 01:43:56.16
>>890
そんな特殊な話じゃなくても、スレッド間で共有されてるHashMapとかいろいろあるでしょ
892デフォルトの名無しさん:2013/09/02(月) 01:44:17.63
Queueの中でキャンセル状態で待ち行列してるタスクを除去してレスポンスを返す
みたいな操作があるなら外側ロックでイテレートが必要だろうね
893デフォルトの名無しさん:2013/09/02(月) 01:47:03.55
キーが見つからない場合は追加、なければ何もしない、とかな
894デフォルトの名無しさん:2013/09/02(月) 01:51:53.36
>>889
??
895デフォルトの名無しさん:2013/09/02(月) 01:52:44.41
CopyOnWriteじゃだめなの?
896デフォルトの名無しさん:2013/09/02(月) 01:55:23.20
CopyOnWriteのイテレータはスナップショットビューじゃないの?
897デフォルトの名無しさん:2013/09/02(月) 02:06:34.93
>>896
それで困ることってどういうことかなと。
なんか突っかかってるみたいで申し訳ない。
898デフォルトの名無しさん:2013/09/02(月) 02:07:32.93
イテレートの除去操作が使えない
899デフォルトの名無しさん:2013/09/02(月) 02:18:24.65
なるほど。理解出来ました。
イテレート+remove(obj)だとバグがあるんだね。
思ってるより手軽じゃないってのがわかった。
900デフォルトの名無しさん:2013/09/02(月) 02:20:12.37
忘れてました。レスありがとうございました。
901デフォルトの名無しさん:2013/09/02(月) 07:17:05.31
バグじゃないだろ
902デフォルトの名無しさん:2013/09/02(月) 07:46:22.15
Javadocにも明記されてるから、仕様を知らなかっただけ、だね
903デフォルトの名無しさん:2013/09/02(月) 09:45:31.38
マルチスレッド要件不明のまま、おまいらよくここまで盛り上がれるな…
904デフォルトの名無しさん:2013/09/02(月) 10:30:09.73
そんなに盛り上がってなくね
905デフォルトの名無しさん:2013/09/02(月) 11:43:27.03
Webアプリケーションサーバの仕様で、webモジュール側がサーバで設定した任意の値を取得する方法なんて定義されているものでしょうか?

やりたいのはアプリケーションで使用する設定ファイルをWebアプリケーションフォルダは以下においてはダメと言われ、
Webアプリケーションインストールフォルダ以外に配置することにしましたが、そのパスの取得方法をWebアプリケーションサーバの設定からとれればと思っています。

サーバはtomcatを使用していますが、サーバ側に任意の値を設定して、サーブレットの仕様でその値を取る方法なんてあるものでしょうか?
906デフォルトの名無しさん:2013/09/02(月) 12:17:36.58
web.xmlの設定値を読むとかじゃだめなのか?
907デフォルトの名無しさん:2013/09/02(月) 13:20:10.86
>>906
web.xmlもダメなんです…
となると、WebアプリケーションサーバとWebアプリケーションとのデータ連携の仕様が見つけられなくて…

ServletContext辺りのインタフェースも調べたのですが、基本はweb.xmlの設定値を取得するものばかりで…
908デフォルトの名無しさん:2013/09/02(月) 13:55:24.89
ServletContextにgetRealPathってメソッドがあってコンテキストパスをファイルシステムパスに変換してくれる
トムキャットユーザのアクセスできるファイルなら普通にファイル操作で設定値を読めばいいんじゃないかな?
909デフォルトの名無しさん:2013/09/02(月) 14:20:38.98
>>901
イテレータのremoveじゃなくて
イテレートしたやつをremoveした時の話ですよ
910デフォルトの名無しさん:2013/09/02(月) 15:20:37.31
なるほど
そのやり方で困らないケースも多そうだし、いいんじゃない
911デフォルトの名無しさん:2013/09/02(月) 15:43:35.88
まあでもWEB-INF以下を外部からアクセス不可にしてweb.xmlに設定値を書き込んでいる俺は
アプリケーションが多数になったときの煩わしさを考えると設定はコンテキストパス内に入れるべきだと思う。
でも上司に外部にしろと言われたならしょうがないよね。
912デフォルトの名無しさん:2013/09/02(月) 16:54:53.38
>アーティストのきゃりーぱみゅぱみゅも「『激おこスティックファイナリアリティぷんぷんドリーム』ってゆうのもあるらしい……ツアータイトルにしたいぐらいかっこいい!痺れる(;_;)」と賞賛している。

あせったぜ、「激おこスタティックファイナル」かと思った・・
913デフォルトの名無しさん:2013/09/02(月) 18:08:11.36
>>908
そうなんですけど、そのパスのベタ打ちや決め打ちをやめたいらしいので、tomcatの設定から取れないか考えていました。

が、やっぱり見つからないですね。

環境変数かtomcatの起動パラメータに設定してもらうしかないですかね…
914デフォルトの名無しさん:2013/09/02(月) 18:16:26.89
pleadesのオールインワンを軽くする方法を教えて下さい
915デフォルトの名無しさん:2013/09/02(月) 20:12:00.64
 
                  ∧_∧
                ( ´∀`)   あげ?
..\             (/u  ノ
  \           〈/フ'フ
    \         ∠∠/
     \
\     \    彡
 .\     .\
   .\_/| ̄ ̄ ̄ ̄ ̄|
        . |       .|
916デフォルトの名無しさん:2013/09/02(月) 20:40:31.21
>>914
素のEclipseに必要なプラグインだけ入れる。
917デフォルトの名無しさん:2013/09/02(月) 20:50:12.53
javaでチェック例外ってどのように処理してますか?
Utilsでmethod () throws IOExceptionと書くのは賢いとは思えないのですが
チェック例外をThrowableを継承したクラスに変換してますか
918デフォルトの名無しさん:2013/09/02(月) 21:42:43.98
>>917
その話するとだれが処理の責任持つかで揉める気がする
919デフォルトの名無しさん:2013/09/02(月) 22:11:18.75
>>918
>だれが
プログラム or 人間のどっちですか

普段は.netで開発しているので、誰が処理するかってのは特に気にしないようにしているんですが
javaはそこら辺気にしますか
920デフォルトの名無しさん:2013/09/02(月) 22:12:49.47
for (String line : arr){
line=new String("foobaa");
}
このようにfor-eachではlineを再設定しないで新しい変数に代入したほうがいい、というのはどうしてですか?
921デフォルトの名無しさん:2013/09/02(月) 22:14:20.24
>>917
extends Throwableでクラスを書くってことか?
extends Errorですら恐ろしいのに、あり得な過ぎる。
922デフォルトの名無しさん:2013/09/02(月) 22:14:22.66
923デフォルトの名無しさん:2013/09/02(月) 22:20:32.44
>>919
違う違う、どこレベルで例外処理までやるかって話。catchするだけで再throwしたりするじゃん
924デフォルトの名無しさん:2013/09/02(月) 22:34:18.07
ttp://www.ibm.com/developerworks/jp/java/library/j-noaccent.html
この記事いいね。普段言いたくても言えない事を書いてくれている
925917:2013/09/02(月) 22:34:21.38
>>921
extends Throwableが何故怖いんですか。よくわからないのですが

>>923
void dataLoad() throws IOExceptionって書くと、呼び出し元で全部IOExceptionを処理しないとダメですよね
なので、こういう感じで処理を書きたいんです。
void dateLoad() { 〜 catch(IOException e) { throws new TestException

IOExceptionを呼び出し元に通知しても、意味が無いと思うんです。
926デフォルトの名無しさん:2013/09/02(月) 22:39:34.37
>>925
>IOExceptionを呼び出し元に通知しても、意味が無いと思うんです。

そんなもん場合によるんじゃないの?
メソッド利用者に責任もって書かせる必要がある場合とか考えたことある?
927デフォルトの名無しさん:2013/09/02(月) 22:40:50.04
>>920
C++の参照渡しと勘違いする馬鹿がいるから引数に再代入するなってのと同じで、
arrの中身を書き換えてると勘違いする馬鹿がいるとまことしやかに信じられているから
迷信に近いので、君がこれを信じないなら従う必要はない
928デフォルトの名無しさん:2013/09/02(月) 22:43:19.93
dataLoadが何で失敗したかを分かりにくくすることにどんな意味がある?
IOで失敗したって分かると何か問題あるのか?
929デフォルトの名無しさん:2013/09/02(月) 22:45:57.54
まず、

for (String line : arr){
line=new String("foobaa");
}

のようにlineに何かを代入したりうんぬんって発想がJavaプログラマから見ると異様にみえる。
むしろfinalつけてもいいくらいなのに。
930デフォルトの名無しさん:2013/09/02(月) 22:46:22.64
>>928
ラップによって分かりづらくなったりエラー処理がやりづらくなったりしやすいってのは
むしろチェック例外の問題点だろう
チェック例外を使う場合、どうしてもラップはしていかないとインターフェイスが無茶苦茶になって
実装変更も困難になる
931デフォルトの名無しさん:2013/09/02(月) 22:47:06.96
>>928
おそらく>>917は使う側でいかに短いコードで楽できるかしか考えていない気がする
932デフォルトの名無しさん:2013/09/02(月) 22:47:34.55
>C++の参照渡しと勘違いする馬鹿がいるから引数に再代入するな
そうじゃないだろ。破壊的代入だからだろ。

>>925
なんかおかしいな。使う側に責任があるならチェック例外はthrows宣言するだろ?
だいたい、チェック例外が出たときは他にすること無いから呼び出し元に返したりするじゃん。
アプリケーションレベルでエンドユーザーにメッセージ出す時どうすんのさ。
933デフォルトの名無しさん:2013/09/02(月) 22:49:02.97
同意だな。
特にIOExceptionは使う側に責任もたせて投げることを推奨している参考書が多いようにも思う
934デフォルトの名無しさん:2013/09/02(月) 22:50:14.75
そうやってthrowsリストを増やしていくと、実装の詳細の詳細まで丸裸にして
実装変更が不可能な化物ができあがる
ある程度ラップは必須で、>>928の言うようなこととはトレードオフ
935デフォルトの名無しさん:2013/09/02(月) 22:54:02.69
例外起きたら即VM終了で構わない仕事というのもそれなりにある。
なら catch節内で即System.exit()すればええやん、と思わないでもないが。
936デフォルトの名無しさん:2013/09/02(月) 22:58:03.23
実際にはある程度上でキャッチすればいい場合がほとんどなので
直上にキャッチを強制するのは>>934の言うようなデメリットの方が大きい
だから後にも先にもJava以外の言語には検査例外が採用されてないの
937デフォルトの名無しさん:2013/09/02(月) 23:00:07.16
正にStringWriterを使うときとかチェック例外を非チェック例外でラップすることも
ないことはないが、917はそこまで考えてはいないだろうよ
938デフォルトの名無しさん:2013/09/02(月) 23:03:01.74
>>936
そんなこといってると>>924の「リスト 13. あまりにも早急な例外処理」の状況に陥る
939917:2013/09/02(月) 23:05:35.14
>>937
>正にStringWriterを使うときとかチェック例外を非チェック例外でラップすることも
そこら辺がどのようになっているのか知りたいです。
なので、extends Throwableが危ないのか知りたいんです。

ちなみに、商品マスタが存在しなかったら例外をthrowするってホント?
コードがtry catchだらけになったり、パフォーマンス遅くなりませんか
javaの入力チェックのポリシーがよくわからない
940デフォルトの名無しさん:2013/09/02(月) 23:06:02.00
>>938
普通に考えてそれは逆だろう
検査例外は「あまりにも早急な例外処理」を助長する
実際短いサンプルコードなんかだと多くの場合まさにそうなってしまってるから
初心者がそれでいいんだと勘違いする
941デフォルトの名無しさん:2013/09/02(月) 23:07:03.09
>>920

> for (String line : arr){
> line=new String("foobaa");
> }

arrの要素数だけループ回すのが目的なら、
arr.lengthかarr.size()を使ったループカウンタを素直に使った方がよろしい。
例えarrがLinkedListだったとしても、Iterator空読みさせるよりたぶん早いぞ。
942デフォルトの名無しさん:2013/09/02(月) 23:11:12.84
>>940
C、C++ならその考えでいいけど、そのように書かれたコードはJavaではどうなの?サイトにあるように訛が強すぎ。
何よりinterfaceのメソッドにthrowsを用いたような”設計”があることを知る方が大事だと思うけどなぁ。
特にサーバーとのやり取りをするコードを書くときとか。
943デフォルトの名無しさん:2013/09/02(月) 23:12:53.64
IOException 投げまくりの Appendable を実装しているにもかかわらず
StringBuffer は一切 IOException 投げないわけだが、そういう実装例が知りたかったのかな?
944デフォルトの名無しさん:2013/09/02(月) 23:14:39.86
>>941
拡張for分はtry catchやめてから速くなってる
945デフォルトの名無しさん:2013/09/02(月) 23:18:40.61
>>943
>StringBuffer は一切 IOException 投げないわけだが

private synchronized void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException {}

private void readObject(java.io.ObjectInputStream s)
throws java.io.IOException, ClassNotFoundException {}

投げる件。適当なこと言いすぎ。
946デフォルトの名無しさん:2013/09/02(月) 23:29:52.12
@Overrideでないprivateな手続きの話とか、この際どうでもいいじゃん…
947デフォルトの名無しさん:2013/09/02(月) 23:30:28.21
ラップするって言ってる人らは例外チェーンは嫌なん?

>>944
いや、Iterator回すよりループ変数回まわしてgetする事そのものの方が速い。
コンパイラはRandomAccessマーカーみてfor (int i=0, n=list.size(); i < n; i++)に置換するとかやってないから>>941の言うとおりだよ。
948デフォルトの名無しさん:2013/09/02(月) 23:31:07.15
検査例外握りつぶす系の話か?
いい加減やめろや
例外処理はAPI呼び出し側の責任だろ
949デフォルトの名無しさん:2013/09/02(月) 23:35:23.77
うーん?
そもそもStringBufferで何故にIOExceptionの話??
StringIndexOutOfBoundsExceptionならまだわかるが・・
950デフォルトの名無しさん:2013/09/02(月) 23:36:25.91
StringWriterと間違えたのかな
951デフォルトの名無しさん:2013/09/02(月) 23:36:39.29
>>942
その"設計"を突き詰めれば、将来の実装変更の可能性を考慮して
どんなエラーでもラップして放り込めるような一般的な例外をthrowsリストに追加せざるを得ないが
それは同時にチェック例外の意味をなくすというジレンマ
952デフォルトの名無しさん:2013/09/02(月) 23:39:10.54
チェック例外と日チェック例外の使い分けは10年前に終わってる議論だろ
ここで出てるレスもすべて既存の議論の焼き直し。車輪の再発名ならぬ議論の再発名でもしたいのか?

Javaの理論と実践: 例外をめぐる議論 2004年5月25日
http://www.ibm.com/developerworks/jp/java/library/j-jtp05254/
953デフォルトの名無しさん:2013/09/02(月) 23:40:09.04
君ら議論していることを過去に色々やってみた結果
try{...}catch(IOException e){throw new RuntimeException(e);}
に落ち着いた箇所は結構多い。
954デフォルトの名無しさん:2013/09/02(月) 23:46:33.86
>>941
さすがにLinkedListをインデックスで回すのはないわ
O(N^2/2)だぞ
955デフォルトの名無しさん:2013/09/02(月) 23:48:13.23
>>953
だから例外チェーンだろそれ。ラップするだけじゃスタックトレース増殖するから1.4で変更入ったわけじゃん。
956デフォルトの名無しさん:2013/09/02(月) 23:49:44.84
>>955
実行時例外だから例外チェーンとは言わんよ
957デフォルトの名無しさん:2013/09/02(月) 23:52:09.08
C、C++を先にやると、try catcheは例外を隠すためにあるものだと勘違いしてしまう何か理由があるの?
958デフォルトの名無しさん:2013/09/02(月) 23:55:55.91
おいどんは難しいことはわからねぇ
だでども、throw、throwsがエレガントに見えて仕方ねぇだで
959デフォルトの名無しさん:2013/09/03(火) 00:03:31.24
Java標準ライブラリが極めて不適切な検査例外の使い方をしているから、
そのせいで「検査例外は邪魔で役立たず」なイメージが根付いてしまった。
960デフォルトの名無しさん:2013/09/03(火) 00:04:37.60
>>954
正確にはn^2/4
961デフォルトの名無しさん:2013/09/03(火) 00:06:24.90
例外処理ってパフォーマンスは低下しないの?
そこをクリアできるならバカスカ使おうと思う
962デフォルトの名無しさん:2013/09/03(火) 00:10:05.70
>>961
かなり低下する。まあ例外って名称からもわかるようによからぬことが発生という扱いでOK
963デフォルトの名無しさん:2013/09/03(火) 00:10:51.26
>>920 はarrのサイズにだけ興味があってarrの中身はどうでもいいのだから
get(n)のコストとか無視していいんだろう
964デフォルトの名無しさん:2013/09/03(火) 00:12:37.97
>>939
> なので、extends Throwableが危ないのか知りたいんです。

そういうクラスが至るところで投げられると、受け側は catch (Throwable t)
と書かざるをえなくなる。そうすると、catchしたくなかった OutOfMemoryError
とかまでcatchしてしまっているのを忘れやすくなったり、無駄に再throwを
書かないといけなくなる。

> コードがtry catchだらけになったり、パフォーマンス遅くなりませんか

>>925のコード「catch(IOException e) { throws new」はそれを強要している
ことに気づきなさいよ。あなたがcatchしなければ、呼び出し側もcatchしない
ことを選択できるんだ。
965デフォルトの名無しさん:2013/09/03(火) 00:18:15.23
Javaが算術でいちいちトラップ投げないのは評価したい。NAN万歳。
966デフォルトの名無しさん:2013/09/03(火) 00:20:57.10
>>965
それが正しいチェック例外の使い方
キャッチしたい人はすればいいし
したくない人はNaNのまま続行すればいい
967デフォルトの名無しさん:2013/09/03(火) 00:24:57.26
0除算もinfinityにしてほしい。どうせどこかでチェック処理通るんだから
968デフォルトの名無しさん:2013/09/03(火) 00:26:39.55
数値計算やってると浮動小数点例外は神だぞ
JavaはFPEがないからウンコ
969デフォルトの名無しさん:2013/09/03(火) 01:19:43.55
っていうか>>917は本当にその処理はUtilsが持っていいの?そもそも例外の話じゃないってオチは?
関係ないGodクラスが持ってるからrethrowするはめになってるんじゃ。
適切なクラスに移したら責任と処理の場所が一致するとかじゃないの?
970デフォルトの名無しさん:2013/09/03(火) 03:09:57.88
糞暑い中
糞熱い議論乙
971デフォルトの名無しさん:2013/09/03(火) 09:05:42.18
チェック例外があるメジャーな言語なんてJavaくらいのもんだけど、Javaで書かれたアプリケーションが
他の言語で書かれたものより安全で堅牢かっていうとそんなことないので、やっぱりチェック例外はいらない子
ランタイム例外にラップして投げるのがプロ
972デフォルトの名無しさん:2013/09/03(火) 09:26:25.17
catchしてprintStacktraceしかしないのがjavaドカタ流ですので例外処理なんて手間が増えるだけです
973デフォルトの名無しさん:2013/09/03(火) 09:58:47.02
遅いのが納得行かない
関数型みたいに式一つで適当にこさえて
ポコポコ投げられればいいんだけどな
974デフォルトの名無しさん:2013/09/03(火) 10:47:00.81
遅いっつってもたかがしれてんだろ
975デフォルトの名無しさん:2013/09/03(火) 11:28:02.48
tomcatでJNDIを利用してリソースを取得したいのですが、調べてもデータソースの取得例しか見つかりませんでした。

tomcatのJNDIを使ってファイルやディレクトリを取得する方法を教えていただけないでしょうか?
976デフォルトの名無しさん:2013/09/03(火) 11:32:50.97
検索したらthrowするだけで単純なエラー値リターンの66倍は遅いみたいだね。
頻繁じゃなければ気にしなくてもいいだろうけど、
他の言語とは比較にならないほど遅い。
977デフォルトの名無しさん:2013/09/03(火) 11:42:43.84
>>972
そこまでtry catchを作りこまないといけない状況がそもそもまずくない?
速度考えたらcatch内で投げるより、
try catch使わないで条件式でthrowしたほうが大抵速いんだし

catchしたら複雑な処理が始まるようなプログラムは怖い
コンソールに書き出すか、サーバーサイドならログ書き出すくらいで済むのが一番

利用者に正しくバグ報告を送信してもらうためにもprintStackTraceは馬鹿にできない
978デフォルトの名無しさん:2013/09/03(火) 12:41:25.79
オブジェクト指向言語で例外処理よりエラー値を勧める本なんて読んだことないけど、
どういうわけか例外(非チェック含む)を可能な限り使おうとしない人が一定数いるんだよねえ。
一体どこでそんな知識を身に着けてしまったのかが気になる。会社とかでそういう教育するところがあるのか?
979デフォルトの名無しさん:2013/09/03(火) 12:55:52.87
・Cをやってた奴がちょっとJavaを齧って自己流で書いている説
・例外なんか糞くらえだ!あれはGOTO文じゃねえか!あんな有害物使うんじゃねえ!という意見に賛同している説
・何も考えず面倒だから例外を使わない説
980デフォルトの名無しさん:2013/09/03(火) 13:31:14.97
>>978
Javaプログラマだけだよ。何でも例外にしたがるのは。
981デフォルトの名無しさん:2013/09/03(火) 13:34:51.10
>>978
> 例外設計、チェック例外の是非
>
> 最近、Javaの例外について、特にチェック例外について否定論を見かけることがありました。
> Kent Beck、Robert C. Martin、Bluce EckelといったJava・オブジェクト指向プログラミングに
> おいて見識ある著名な人物がこぞって否定論を唱えています。
http://d.hatena.ne.jp/torutk/20101017/p1
982デフォルトの名無しさん:2013/09/03(火) 13:35:43.62
例外は文字通り例外だと思わないほうがいい
そう思うやつは頭が固い
983デフォルトの名無しさん:2013/09/03(火) 13:42:02.19
>>978
軽くググっただけでもいろんな議論を見つけることができたが。

Javaの理論と実践: 例外をめぐる議論
http://www.ibm.com/developerworks/jp/java/library/j-jtp05254/

[Java][例外] 「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり
http://d.hatena.ne.jp/j5ik2o/20100115/1263570330
984デフォルトの名無しさん:2013/09/03(火) 13:48:32.78
"Kent Beck、Robert C. Martin、Bluce Eckel" とやらのどの辺に
言語仕様に見識を示すだけの実績があるのか、誰か教えてくれよ。
985デフォルトの名無しさん:2013/09/03(火) 13:49:41.58
想定されるビジネスロジック上の異常ケースなんかも例外で実装しちゃうJavaプログラマがいるからな
986デフォルトの名無しさん:2013/09/03(火) 13:52:20.29
>>984
チェック例外否定派がいることを示しただけ。
Kent Beck、Robert C. Martin、Bluce Eckelらはbig nameなんだが、まあそれはそれとして
どういう論理で否定してるのか位は読んだら?
987デフォルトの名無しさん:2013/09/03(火) 14:00:16.53
今どきチェック例外使ってる奴いたのか
988978:2013/09/03(火) 14:27:30.60
たぶん>>978読んだらチェック例外に関する話だと誤認する人がいるだろうから、
わざわざ括弧書きで「非チェック含む」と強調しておいたのに、それでもやっぱり「チェック例外使うなって言ってる人いるぞ!」という
想定の範囲内の誤解に基づいた反論が来てしまったか。

もっと噛み砕いて説明しないと伝わらないか…。「教える」って難しいな。
989デフォルトの名無しさん:2013/09/03(火) 15:10:12.20
>>988
> 例外(非チェック含む)を可能な限り使おうとしない人が一定数いる
> 一体どこでそんな知識を身に着けてしまったのかが気になる。

ということなので、どこで議論されているかを示したのだが?
990デフォルトの名無しさん:2013/09/03(火) 15:19:16.03
普通、非チェック含むと言われたらチェック例外を使いたがらない人もいれば、非チェック例外ですら使いたがらない
人もいる、と読むと思うのだけど。
991デフォルトの名無しさん:2013/09/03(火) 15:20:20.12
一体何を「教える」つもりなんだか
992デフォルトの名無しさん:2013/09/03(火) 16:46:55.15
throwやtry-catchは実行コードの意見云々よりもデザインのサイドからの要請ってことに、Javaなんだし、気がつかなかった?
993デフォルトの名無しさん:2013/09/03(火) 16:53:31.71
>>920ですが、たまにfor-eachの変数にfinal付けてるサンプルがあるので、for-eachのfinalはどうかなって思ってました。
上の方からロジックを考えながらコーディングしていると
line=line.trim().intern(); とかしたくなって再代入(再設定)のコードがたまに現れるんですよ。
iterator logicの場合はスコープ内で
String line=it.next(); になるからlineの再代入は普通にありだと思うんですけど、for-eachの場合の当該変数はどうなのかなって。
994デフォルトの名無しさん:2013/09/03(火) 17:00:39.98
コンパイラさんが、バカには見えないIteratorやカウンタ変数書き足して
ループを回してくれているので、lineをどういじったところで >>920 のループは乱れないよ。
995デフォルトの名無しさん:2013/09/03(火) 17:11:49.93
次のうんこスレはどこだぁ
996デフォルトの名無しさん:2013/09/03(火) 19:07:13.25
>>993
別にforeachだからどうこうって話じゃないだろ
再代入しないほうが望ましいってだけで、したからってなにか問題あるわけじゃない
なんでforeachだけを気にしてるのか全然わかんね
997デフォルトの名無しさん:2013/09/03(火) 19:23:47.61
ニートだからAndroidアプリでひと稼ぎしたいんだけど何から始めたらいいの?
998デフォルトの名無しさん:2013/09/03(火) 19:33:54.96
>>997
勉強
999デフォルトの名無しさん:2013/09/03(火) 19:51:24.00
1000デフォルトの名無しさん:2013/09/03(火) 19:52:18.40
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。