- 1 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 10:55:55.50 ]
- プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 (p)ttp://www.wikiroom.com/java/?path,classpath ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 ・String に == は使うな。equals() を使え。※ 前スレッド ★★Java質問・相談スレッド165★★ toro.2ch.net/test/read.cgi/tech/1382265039/
- 175 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 12:46:48.61 ]
- >>174
両方インストールしてんだろ。
- 176 名前:デフォルトの名無しさん [2013/12/12(木) 14:08:44.97 ]
- >>175
ということは、先に6を手動でアンインストールしないといけないということですか 自動で入れ替えしてくれるものとばかり思ってました(失礼)
- 177 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 14:23:41.92 ]
- >>176
環境書いてないからエスパーになるが、環境変数PATHの設定でそうなってるだけだと思うぞ。設定するかフルパスで指定して実行すれば好きな方を使えるはず。 Javaだけでなく環境の使い方も学んだほうがいいぞ。
- 178 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 14:55:08.51 ]
- OSによって切り替え方法が異なる。
- 179 名前:デフォルトの名無しさん [2013/12/12(木) 16:13:51.14 ]
- >>177
ありがとう、勉強してみるよ
- 180 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 20:54:16.47 ]
- ユーザーJREはside by sideだけどシステムJREはversion新しい方で上書きだからパス通してないだけだろうな
- 181 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 21:56:01.44 ]
- 異なるスレッドで扱うため、リストとそれに登録したオブジェクトの操作に対して同期を取りたいのですが
synchronizedListを用いて生成したリストを用いる場合は、以下のような使い方で正しいでしょうか? SampleClass obj = objList.get(i); synchronized(obj) { obj.method(); } リスト操作(addやget)自体はsynchronizedで囲ったりしなくても synchronizedListで生成してる限りは同期が取れていて、 リストから取得したオブジェクトは別途synchronizedを使って同期取らなきゃ駄目って認識です。
- 182 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 22:00:53.53 ]
- それはダメだろ
追加されたりしたらインデックスが狂う
- 183 名前:デフォルトの名無しさん [2013/12/12(木) 22:12:10.95 ]
- どういう意味かと悩んでしまいましたが
つまり、下のように書けば問題解決かな…? synchronized(objList) { SampleClass obj = objList.get(i); obj.method(); }
- 184 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 22:29:13.51 ]
- >>183
iはどっから来るんだ? for (int i = 0; i < objList.size(); i++) { >>183 or >>181 } たとえばこれだと、ループ回してる最中にリストの途中へ要素が挿入されたら 同じ要素に対して2回以上methodが呼び出されてしまう可能性があるぞ
- 185 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 22:36:08.78 ]
- インデックスはそれに関連する変更可能なコレクションがロックされている間だけ有効と考えるのが無難
つまり>>184の例ならforの外側でobjListをロックする
- 186 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 22:44:39.26 ]
- >>184
なるほど・・・ ループを使う場合は全体をsynchronizedで囲って↓みたくすべきという事ですね synchronized(objList) { for(int i=0;i<objList.size();i++){ objList.get(i).method; } } ループは考えてませんでしたが確かにiだとループカウンタみたいでした。 ループしなければ>>183で大丈夫そうかな? ループ扱う際にも注意が必要と分かったので助かりました。
- 187 名前:181 mailto:sage [2013/12/12(木) 22:47:09.34 ]
- 名前にレス番書き忘れてた
そして>>185の方も補足ありがとうございます。
- 188 名前:デフォルトの名無しさん mailto:sage [2013/12/12(木) 22:50:29.32 ]
- ループでなくてもiを一時的に保持してる以上はズレるでしょ。
仮にiがメソッドの引数なら、結局使う側でロックしなきゃいけない スレッドセーフ(笑)なクラスが出来上がる。
- 189 名前:デフォルトの名無しさん [2013/12/13(金) 00:07:42.09 ]
- パブリックなメンバ変数のみを持ったクラスを継承して、いろいろメソッドを追加したい
それから、継承元のオブジェクトを元に、継承先のオブジェクトを生成する手段も用意したい 継承元は将来頻繁に変更することが想定されているので、継承先オブジェクトを生成するメソッドで 継承元のすべてのパラメータを列挙してうんぬんというのは避けたいところ こういうことするのに簡単な方法ってない? Field使ってやればいけそうだけど、あまりスマートではないなぁと思って あと、Java的にはメンバ変数の継承はなにか問題あったりする?
- 190 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 00:13:58.23 ]
- www.ipa.go.jp/security/awareness/vendor/programmingv1/a03.html
Javaって怖いね
- 191 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 00:14:54.97 ]
- ゆとり乙
- 192 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 00:23:46.81 ]
- Lombok使ってみたがこれ他の機能との相性は大丈夫なんか?
あとListのゲッターはnullなら新しいArrayList返す実装が好きだからそこが不満
- 193 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 00:29:14.67 ]
- >>189
継承しないで包含する インスタンスの生成はコンストラクタに渡すだけ
- 194 名前:デフォルトの名無しさん [2013/12/13(金) 00:50:42.28 ]
- >>193
渡したオブジェクトのメンバ変数へどうやってデリゲートすればええのん? 元クラスのメンバ変数の定義変えたときに、先クラスの定義変えるとかはやりたくない あと、型情報落ちるのもできれば勘弁
- 195 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:01:21.64 ]
- >>194
パブリックなメンバ変数のみを持ったクラス getパブリックなメンバ変数のみを持ったオブジェクト() { return this.パブリックなメンバ変数のみを持ったオブジェクト; } 難しく考えるな
- 196 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:09:25.20 ]
- >>194
元クラスのメンバの定義の変化にまで対応するにはメタプログラミングが必要になる が、到底実用的ではないのでほとんどやってる人はいない
- 197 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:11:15.66 ]
- >>195
お前は状況設定が理解できてないな 「いろいろメソッドを追加したい」と言ってるんだから単なるデリゲートじゃ駄目 元クラスのメンバを利用したメソッドを作り、かつ元クラスのメンバの定義が変更されても追加したメソッドに修正せずに済む方法を求めている そんなものはメタプログラミングしかない
- 198 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:14:36.86 ]
- >>197
その要件なら包含で満たせるよね
- 199 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:18:52.01 ]
- 全フィールドを手でコピーしたりするようなコード書くのは
修正が面倒だから嫌だという意味だろ? それだけなら包含でいい
- 200 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:19:03.73 ]
- >>198
コンポジションはコーディング時の元クラスのメンバ定義に依存してしまうので、 コーディング後に元クラスの定義が変更されたらそれに対応することは出来ないよ。
- 201 名前:デフォルトの名無しさん [2013/12/13(金) 01:22:09.17 ]
- >>195
すまん、要件が抜けてた フレームワークの仕様上、持ってるオブジェクトのメンバ変数にアクセスするのに1段で行けないと問題がある aInstance.getBVariable() や aInstance.bVariable は おkだけど、aInstance.getB().variable は多分ダメ
- 202 名前:デフォルトの名無しさん [2013/12/13(金) 01:26:16.82 ]
- うお、伸びてた
みんなありがとう なんか難しいっぽいな… Javaむずいお('・ω・`)
- 203 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:27:54.73 ]
- >>201
その仕様になってる理由は?
- 204 名前:デフォルトの名無しさん [2013/12/13(金) 01:33:47.98 ]
- >>203
フレームワークがライブラリに依存してる JSONICなんだけど、デコードする際の仕様がそんな感じっぽい 調べきれてないのでもしかしたらなんか迂回策あるかもしれないが…
- 205 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:36:14.07 ]
- >>204
オブジェクト指向を正しく使うためにコーディング規約で制限してるのかと思ったよ
- 206 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:45:03.37 ]
- 関係ないけど、javaxにjsonのfactory追加されるな。
- 207 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 01:50:17.30 ]
- 問題は内部実装に何使ってるかだな
既存のサードパーティ製のライブラリをjavaxに配置しただけなら特に嬉しくはない
- 208 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 04:09:03.42 ]
- 自分は、Androidアプリ作るためにEclipse使ってますが
NetBeansも入れています。 そこで、javaのデスクトップアプリを作るには どちらを、使ったほうが良いでしょうか。 漠然とした質問で申し訳ありません。
- 209 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 04:16:10.64 ]
- ossforum.jp/node/977
- 210 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 05:20:16.54 ]
- >>209
レスありがとうございました。 javaアプリの開発は、NetBeansでおこないます。
- 211 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 10:12:54.78 ]
- >>207
Factoryだから実装は隠蔽されるだろし、環境ごとに違うだろう。
- 212 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 12:46:15.22 ]
- >>211
JSONのライブラリなんて環境依存な要素がないし、Oracle JDKかOpenJDKかの違いしかないでしょ。
- 213 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 15:32:04.72 ]
- >>212
何言ってんだお前は。どのサードパーティでも隠蔽されるって話だろ。
- 214 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 15:59:02.96 ]
- >>192
とりあえずandroidでは問題なし allargsコンストラクタ効かないけど。 フィールドに@notnullつければヌルポ投げるゲッター生成可能 使ってないからあまり詳しく知らないが。
- 215 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 16:15:45.27 ]
- >>213
ファクトリーメソッドパターンを使ってオブジェクト指向的に隠蔽するという話ではなく、 物理的に内部実装が隠蔽されるという話?
- 216 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 16:22:47.46 ]
- >>215
物理的の意味がわかりませんが。 xmlのAPIとかと同じ。
- 217 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 16:28:39.79 ]
- >>216
XMLのAPIは内部でどのような実装を使っているか確認できますケド。 ideone.com/l4e1rv
- 218 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 16:51:28.15 ]
- androidはスレちがい
- 219 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 17:08:10.51 ]
- >>217
どこらへんが物理的かわからない。 情報だけだろ。
- 220 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 17:09:54.06 ]
- >>216
い み ふ、いみふ
- 221 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 17:16:00.54 ]
- 先ほどから日本語の読み書きに支障が起きている人がいますね。
- 222 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 17:17:29.06 ]
- 隠蔽って依存しないって意味だろ。
確認できたから何だって言うんだ?
- 223 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 17:23:22.74 ]
- >>222
依存度の話は誰もしていませんよ。 JSONを実装するにあたりサードパーティ製のライブラリを取り入れたのなら、 何を取り入れたのかを確認したいだけです。そこに依存も糞もありません…。
- 224 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 17:45:26.75 ]
- JSONを実装するのか、偉い
- 225 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 17:49:10.70 ]
- >>223
なら最初からjar見ろよ。 見て、ふーんで終わりだろ。 コアAPIもソースのauthorで誰が書いたかわかるが、別に気にしないだろう。
- 226 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 17:55:54.06 ]
- >>225
ああ、そのレベルの方ですか。 Java標準ライブラリにはバグや変わった挙動があるので、 サードパーティ製のライブラリを取り入れた場合はそのライブラリの癖を把握しておくことが必須ですよ。 「仕様通りに書いたのに動きません。ライブラリのバグです」は仕事では言い訳にならないからね。
- 227 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 18:03:08.25 ]
- >>226
アホか。 問題あるならfactoryでなくて自分でインストールしたライブラリ使え。
- 228 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 18:03:16.21 ]
- 「実装する」の意味がわかんやつにいわれてもなー、国語かな
- 229 名前:デフォルトの名無しさん mailto:sage [2013/12/13(金) 18:09:04.52 ]
- なかなか釣れませんね〜^^
- 230 名前:デフォルトの名無しさん mailto:sage [2013/12/14(土) 02:25:59.52 ]
- xercesとかXalanとかfastinfosetとかJOGLが複数バージョン内部パッケージにあるとかrhinoとかnashornとかもう嫌だ
|

|