2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

☆★Java質問・相談スレッド180★★

1 :デフォルトの名無しさん:2017/04/21(金) 22:13:17.42 ID:Sf0TFsly.net
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

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

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。

前スレ
★★Java質問・相談スレッド179★★
http://echo.2ch.net/test/read.cgi/tech/1476706523/

297 :デフォルトの名無しさん:2017/06/26(月) 12:22:50.67 ID:FY9LvRUa.net
WebContents/jsとか

298 :デフォルトの名無しさん:2017/06/26(月) 14:09:49.10 ID:Y5uqF0pH.net
>>296
それってJSP/Servletの範疇じゃないし

299 :デフォルトの名無しさん:2017/06/26(月) 14:31:02.39 ID:jQ90euYN.net
>>296
いいかげうせろ

300 :デフォルトの名無しさん:2017/06/29(木) 15:13:58.76 ID:Eh5ILrb8.net
コンテキストルートの下にそれっぽいフォルダ作って置けばいい

301 :デフォルトの名無しさん:2017/07/01(土) 11:18:07.28 ID:N+ZXroXE.net
>>299
あなたが去るという選択肢も対等に存在しているよ

302 :デフォルトの名無しさん:2017/07/01(土) 17:00:11.84 ID:nCS0LL3r.net
>>301
お前からどうぞ

303 :デフォルトの名無しさん:2017/07/01(土) 17:08:31.02 ID:nCS0LL3r.net
Java EE 8はいつからだっけ

304 :デフォルトの名無しさん:2017/07/01(土) 17:24:42.16 ID:JnV2l3hP.net
私は猿

305 :デフォルトの名無しさん:2017/07/01(土) 17:26:47.96 ID:nCS0LL3r.net
はやくwildflyが対応しないかな

306 :デフォルトの名無しさん:2017/07/08(土) 21:22:00.68 ID:I2jsR2Mo.net
今日はデザインパターンの勉強したんだけど面白いね
仕事であんまり使う機会ないんだけど
いつかドヤ顔するために勉強してるw

307 :デフォルトの名無しさん:2017/07/08(土) 21:38:48.33 ID:zpqt2Pi7.net
GoFはラムダが入った今となっては不要になったものも多いから気をつけないと逆に老害だぞ

308 :デフォルトの名無しさん:2017/07/08(土) 22:11:14.34 ID:KDemZAcB.net
>>306
一生ねえわw
バブルソート極めた方がマシ

309 :デフォルトの名無しさん:2017/07/09(日) 00:20:09.66 ID:fQPI5Ock.net
>>307
まじすか
教えてちゃんですまんがこれだけは抑えておけ的なものがあれば教えてください

310 :デフォルトの名無しさん:2017/07/09(日) 18:48:41.39 ID:4xlnJ5p3.net
そういやソートも昔は自分で書いたなあ

311 :デフォルトの名無しさん:2017/07/09(日) 18:53:41.25 ID:SZg5iNd3.net
>>309
Template MethodとIterator
プッシュ型の代表とプル型の代表としてこれだけはしっかり押さえとくべき
あとはだいたいそれらの変形や応用
間違ってもシングルトン厨にはなるなよ

312 :デフォルトの名無しさん:2017/07/09(日) 19:10:46.51 ID:2yEd4A6I.net
オブザーバの意義がわかりません
普通にあるインスタンスの状態が変わったら、一緒に状態変えたいインスタンスを並べてupdateすればいいんじゃないでしょうか?

313 :デフォルトの名無しさん:2017/07/09(日) 20:48:45.82 ID:SZg5iNd3.net
>>312
基本的にはその通りで、呼び出し元が呼び出し先を知っている(依存している)場合はそれでいい。
でもそれだと都合が悪い場合もあって、例えば出来合いのボタンクラスはお前が勝手に作ったウィンドウクラスのことなど当然知らないから
ボタンクラスは自分がクリックされたとき何を呼び出していいかわからない。
そこでインターフェイスを介してメソッドを呼ぶことで、ボタンクラスがお前のウィンドウクラスを知らずともメソッドを呼び出せるという仕掛け。
これは見方を変えるとボタンクラスに呼び出してほしいメソッドを渡していると見做すこともできて、そういうやり方を一般に「移譲」と呼ぶ。
その移譲を使ってボタンクリックのようなイベントを実装したのがObserverであり、
移譲を使ってインスタンスの生成を一般化したのがAbstract Factoryだ。
GoFは個別のパターンの前に移譲の概念を確実に理解することを強くお勧めする。

314 :デフォルトの名無しさん:2017/07/09(日) 21:46:09.06 ID:sX6v1jPj.net
メディエイター(仲介者・管制塔)
A - M - B

A, B は、互いに依存しない。
疎結合

Aを修正しても、Bを修正しなくても良い。
逆もしかり

オブザーバー・メディエイターは、モジュール同士を疎結合にする。
部品の疎結合が、最も重要

315 :デフォルトの名無しさん:2017/07/14(金) 13:03:36.96 ID:TfMBM9Tu.net
初歩的な質問ですみません
privateメンバをもったクラスを継承してサブクラスで更新したいのですが、
サブクラスからだと更新できません。
この場合、getsetを親に持たせるのがやはり一般的なのでしょうか?
メンバをprotectにして直接更新するのはあまり良くないのでしょうか

316 :デフォルトの名無しさん:2017/07/14(金) 14:21:01.57 ID:uw/hPlzp.net
好きにしなさい

317 :デフォルトの名無しさん:2017/07/14(金) 18:46:33.01 ID:WEwIJVh1.net
>>315
変更すべきならprivateにしてる設計が間違えてる
privateが正しいなら変更しようとしてるのが間違えてる
こーしたらこーなるからでプログラムしたいなら制約を科すオブジェクト指向言語を使うのが間違えてる

318 :デフォルトの名無しさん:2017/07/14(金) 19:37:34.47 ID:TfMBM9Tu.net
なるほど
では継承した子クラスから親の変数を変更しようとすること自体がおかしいということでしょうか
親に共通的に属性持たせて振る舞いだけ拡張していくのはよくあるやり方なのかと思っていましたがそうではないのですね

319 :デフォルトの名無しさん:2017/07/14(金) 19:43:12.40 ID:nYuZK0KO.net
どう作るかは正直どうでも良い
仕様が重要

目安としてそれぞれ別パッケージならsetter経由にしとけ

320 :デフォルトの名無しさん:2017/07/14(金) 21:30:05.14 ID:BgkaGQy5.net
>>315
getter, setter でやるのはそのクラスがその変数の変更タイミングを知る必要があるからだ。例えば書き換え直後に何か画面に描画するとかね。
変数の書き換えタイミングを知る必要がないならばその変数は public にして外部から直接書き換えられるようにしてしまえば良い。
外部から書き換える必要がないなら protected , 更に継承させたくないなら private。

321 :デフォルトの名無しさん:2017/07/15(土) 04:36:59.12 ID:oxvwpB//.net
>>318
そのクラスとメンバの意味合いによるだろ
お前にJavaはまだ早い

322 :デフォルトの名無しさん:2017/07/15(土) 12:53:29.78 ID:fEa/UTC5.net
>>321
いったい何言語で継承覚えたんだよ。
javaほど初心者向きの言語はないだろ…

323 :デフォルトの名無しさん:2017/07/15(土) 17:28:25.64 ID:oxvwpB//.net
>>322
オブジェクト指向開発が早いってことだよ

324 :デフォルトの名無しさん:2017/07/15(土) 17:29:57.08 ID:oxvwpB//.net
にしても実装から覚えるのかヤバイな
設計の教育しろ

325 :デフォルトの名無しさん:2017/07/15(土) 18:10:31.86 ID:+h55DWxy.net
目的がプログラムになってるヤツの多さは仕事においてもヤバい設計の教育はホント大事

326 :デフォルトの名無しさん:2017/07/17(月) 02:36:58.37 ID:7xO5Cpw7.net
昔のjava 1.5ぐらいで書かれたプログラムをNeon3でコンパイル通したいんだが、
javax.xml.ws とorg.apache.xmlrpcで検証が必要で、
それぞれ
「制約がありません。インポートパッケージjavax.xml.bindなんたらとか
エラーメッセージが出て、失敗してる。
コンソールで赤文字は
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [bundleresource://1080.fwk14070205:1/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [bundleresource://1080.fwk14070205:2/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
と出てる。 

パスかクラスか足り無そうなんだが、教えてください。

327 :デフォルトの名無しさん:2017/07/17(月) 02:52:34.78 ID:VDITljEv.net
>>326
なんでそのエラー見て「パスかクラスが足りなさそう」って考えに至るんだか
SLF4Jで使うロギングライブラリ実装がクラスパスに重複してんだよ

328 :デフォルトの名無しさん:2017/07/17(月) 03:37:01.80 ID:7xO5Cpw7.net
パス重複だったらしい。 自己解決。

329 :デフォルトの名無しさん:2017/07/17(月) 03:37:50.02 ID:7xO5Cpw7.net
>327 すいません。浅はかでした。ありがとうございました。

330 :デフォルトの名無しさん:2017/07/17(月) 12:40:31.01 ID:BFuzhRNb.net
うおおデコレータわかんなすぎワロス

331 :デフォルトの名無しさん:2017/07/17(月) 19:32:37.41 ID:wLjexICy.net
スポンジの生地を生クリームでデコレートするか、チョコクリームでデコレートするかみたいなもんだよ。

実装的には、連想配列のプロパティにでも、生クリーム、イチゴ、板チョコみたいに持たす感じか?

インタフェースを加えていくいう実装もあるけど。

332 :デフォルトの名無しさん:2017/07/17(月) 21:30:04.53 ID:/QULOYxM.net
http://www.techscore.com/tech/DesignPattern/Decorator.html

333 :デフォルトの名無しさん:2017/07/18(火) 03:05:16.09 ID:tId1dkJr.net

ひっでえサンプル
世の中にこんな実装するやついんのかよ

334 :デフォルトの名無しさん:2017/07/18(火) 07:27:40.82 ID:nV7oRxMW.net
>>333
すげえサンプル出せやハゲ

335 :デフォルトの名無しさん:2017/07/18(火) 12:47:37.23 ID:RUWZouC6.net
ま、デコレータは付加する部分を変えたクラスを作りやすくするパターンだからこんなもんでは?
たた、あまり必要ないような感じはするなあ。
付加する部分をパラメータで持たせてそれに応じて振る舞いを変えるようにするのがよくある作り方ではないか?
そうすると実行時に変更可能なようにも作れるしな。newした後で変えさせたくないならStringクラスみたいに変えられないように作ってしまえばいい。

336 :デフォルトの名無しさん:2017/07/20(木) 09:43:44.11 ID:5w/wCnPB.net
以前VMの勉強してたときにJVMを作ったことがあります。簡単なやつで全機能を作ったら訳じゃないですが。ガーベッジコレクタの実装を検討してて、今の公式のJVMの実装に疑問を持ちました。
ガーベッジコレクタは、定期的にインスタンスの参照カウントが0のものを掃除していく作りになってると思います。定期的にではなく、即時に最後の参照がなくなった時点で解放すればいいんじゃないの?っ思いました。
ガーベッジコレクタの解放のたいみんぐが分からなくてfull GCが急に動いてシステムが不安定になったとかよく聞く話なんですが、今のハードなら都度解放でも問題ないくらい性能出せると思うんです。
何か問題あるんですね?

337 :デフォルトの名無しさん:2017/07/20(木) 10:28:21.35 ID:lg4aQxIp.net
実際は、DecoratorとChain of Responsibilityはセットで使われることが多いような気がする。
どっちも委譲の典型的な使い方でしかない。

338 :デフォルトの名無しさん:2017/07/20(木) 12:30:05.04 ID:wo2Y+gw5.net
>>336
とりあえずOracle JVMのParallel GCについて話をすると、いちいち個々のオブジェクトの参照数カウントなんてやってない
New領域がいっぱいになったタイミングで初めてその時点の参照有無をチェックしてまとめてGCしてる
また、そのチェックするタイミングと実際に削除するタイミングで全スレッドを停止しなくちゃならん(Stop The World)

個々のオブジェクトに参照カウントをもたせて管理するような実装もできるだろうけど、
1つのオブジェクトのGCのたびに全スレッド止めてたらJVMの性能が落ちそうだし、
増える方はともかく参照切れを正しく全部拾えると思えないな

339 :デフォルトの名無しさん:2017/07/20(木) 14:37:16.68 ID:WTimusIq.net
参照切れを正しく拾えないって、どんな時にそうなるんだ?

確か参照カウント使って参照されなくなったらメモリ解放する方式は Delphi でやられていたと思うが、特に問題なくできてたと思うぞ。
(これの場合はコンパイラがバグってなければ大丈夫だよな?メモリ破壊するようなのを自分で書いてしまった場合は別かも知れんが)。

340 :デフォルトの名無しさん:2017/07/20(木) 15:41:49.66 ID:Pts20rgO.net
シングルスレッドだけなら参照カウントは比較的楽にできるかもしれんが
マルチスレッドの場合は参照カウントの読み書きは結構面倒くさい事になる。

341 :デフォルトの名無しさん:2017/07/20(木) 16:01:16.55 ID:wo2Y+gw5.net
>>339
あーごめんよ、自分が出来る気がしないだけ
変数がスコープを抜けた時に消すのはできそうなんだけど、null代入で参照切れるのをどうやって検出するのかなーと

JVMがやってる、とある時点のルートオブジェクトを起点として、参照を辿れないやつを参照切れとしてGCってのはわかりやすく感じる

342 :デフォルトの名無しさん:2017/07/20(木) 20:46:36.89.net
>>341
> null代入で参照切れるのをどうやって検出するのかなーと
代入直前に参照先の参照カウントをひとつ減らす(で0になったら解放する)だけ
ちなみにnullならなにもしなくていいけど他のオブジェクトへのポインタが代入されたらそのオブジェクトの参照カウントをひとつ増やしておく処理も必要
なのでそこそこオーバーヘッドがある
とりあえずWikipediaでも読んでおくれ
https://ja.m.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88

343 :336:2017/07/20(木) 21:13:22.75.net
ありがとうございます。
参照切れのことを書いてくれてる人が多いですが、即時にでも後でGCが回収する場合でも、(被)参照カウントを減らすのは関数が終わっときか、例外が出たとき、代入したとき、など同じになるはずで、解放するタイミングが違うだけだと思うんですよね。
参照がなくなる契機となるニーモニックは沢山なかったとおもう。
(被)参照カウントを持たずに、GCが毎回全インスタンスがどのインスタンスを参照してるか見るってのは非効率な気がする。
オブジェクトの型を見てメンバー毎に参照先のリストを作る必要があるので。

344 :デフォルトの名無しさん:2017/07/21(金) 01:29:17.52.net
FuiiGCで困ったことがない

345 :デフォルトの名無しさん:2017/07/21(金) 06:01:58.22.net
>>343
色々勘違いしてるようなのでせめてここら辺も読んでおいておくれ
https://ja.m.wikipedia.org/wiki/%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%B9%E3%82%A4%E3%83%BC%E3%83%97

346 :336:2017/07/21(金) 09:07:38.51.net
>>345
おー、ありがとうございます!疑問にに思ってたことそのものが書いてました。

82 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★