- 1 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 22:35:19.67 ID:XG+QDGZC.net]
- プログラミング言語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() を使え。※ 質問時の心得 ・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。 ・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。 前スレ ★★Java質問・相談スレッド172★★ peace.2ch.net/test/read.cgi/tech/1419490897/
- 596 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 03:04:56.39 ID:mEGu5cSx.net]
- >>566
教育だろうが教育的指導だろうが言葉はどうでも良いんだよ 「人に物を教える」という本質さえ表現できてればね 「人に物を教える」こと、あなたはできますか? いやできないでしょって言ってるのが>>550なんだよね それなのにいきなり>>554で「教育じゃなくて指導」とか言って、 言葉について意見し始めるのがもうおかしいんだよな
- 597 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 03:05:08.54 ID:YjLBOZtQ.net]
- >そろそろ、オブジェクト指向=クラス、とか継承とか言うのやめない?
>って話だ じゃあ、それに代わる オブジェクト指向=○○ ってのを提言しないと広まらないよ ほとんどの人はオブジェクト指向がやりたくてプログラミングしてるんじゃなくて プログラミングが楽になるからオブジェクト指向(と呼ばれているやり方)を選択してるだけで そのやり方が本当のオブジェクト指向かどうかなんて大した問題じゃないから
- 598 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 03:05:10.41 ID:QGZa2Nfx.net]
- >>572
ああ、ゲットしたいだけのフィールドにセッターいらんやろとかそういう話か
- 599 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 06:44:48.36 ID:uOKH4JiO.net]
- >>568
>シングルトンのみのプログラムを書いてもOOPは実現できるんだぜ それでいいんだったらカプセル化のしやすさは特にCと変わらないと思うが Cにファイルスコープがあるのを知らないの?
- 600 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 07:11:24.20 ID:vHFEE713.net]
- アクセス修飾に同じファイルからのみアクセス可能ってやつ追加してほしい
- 601 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 09:42:25.36 ID:2LXkX4Xr.net]
- >>578
クラスにしてから同じファイルだったかどうかなんて判るの? 新たなパッケージかインナークラスにすればいいんじゃないの。
- 602 名前:デフォルトの名無しさん [2015/05/25(月) 10:26:03.96 ID:JYCHMnRj.net]
- >>576
ゲッターとセッターを用意したら公開しているのと同じと言ってるんだと思うよ。 ・多くのIDEがセッター・ゲッターを認識する。 ・フィールドの変更によって何らかのリアクションが必要になる場合が予想される。 等の理由で、フィールドの公開はセッター・ゲッターによって行うというポリシーは 有りだと思う。 ボーランドの言語には、そういった目的のプロパティというものがあったから セッター・ゲッターの潜在需要は大きいと思う。
- 603 名前:433 [2015/05/25(月) 10:26:40.15 ID:p1p0Nay9.net]
- >>575
○○を提言するほど、俺は偉くないよ 浸透いうな的に オブジェクト指向で継承いうな オブジェクト指向でポリモーフィングいうな 程度かな
- 604 名前:433 [2015/05/25(月) 10:29:17.46 ID:p1p0Nay9.net]
- >>580
そやね つか、オブジェクト指向的には、ゲッターか、セッターのどちらかであるべきで 2つが同時にあってはならない 理由は、セッターやゲッターはデータフローを司るから
- 605 名前:デフォルトの名無しさん [2015/05/25(月) 10:38:38.47 ID:JYCHMnRj.net]
- >>582
いやいや、俺は逆のことを言ってるよ。 両方あってよいと思う。 単純にフィールドを公開するだけであっても、必ずセッター・ゲッターを用意するという ポリシーはあっても良い。 セッター・ゲッターはビーンズで必要になったわけだけど、ボーランドのRAD用 言語にはもっと積極的なプロパティという仕組みがあった。 プロパティはとても便利だったよ。 当時の非力なマシンでもIDEのサポートが機能したし。
- 606 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 10:50:13.65 ID:63G9oDBX.net]
- 433 NG指定おめでとうございます
- 607 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 11:46:30.69 ID:2LXkX4Xr.net]
- ゲッターやセッターは後から振る舞いを変えられるから使ってる。
フックみたいな使い方が多い。
- 608 名前:433 [2015/05/25(月) 11:46:38.76 ID:p1p0Nay9.net]
- >>583
それ、クラス設計が間違ってるんだよ データをPull するか、Pushするかは、同じように見えて 全く違う これが理解できないなら、永遠にまともなOOPはできない
- 609 名前:デフォルトの名無しさん [2015/05/25(月) 12:05:13.15 ID:JYCHMnRj.net]
- >>586
オブジェクトにプロパティがあるのはごく自然な振る舞いだと思うよ。 例えばウィンドウ・オブジェクトに背景色プロパティがあっても良い。 背景色を取得したい、背景色を設定したいという要求はごく自然なこと。 背景色を設定したときにはウィンドウの色が変わってほしいので、何らかの 動作が必要になるから、セッターが必要になる。 そして、標準化されない方法で背景色を保持するフィールドにアクセスされては 困るから、フィールドを隠ぺいする必要がある。 その要求によってゲッターの必要が生まれる。 そして、セッターとゲッターを用意すると多くのIDEがサポートしてくれる。 そのほかにも、プロパティを取得された場合にですら、何らかの動作が必要な場合は 考えられるしね。 たとえば、キャッシュ内での優先順位を変更するとか、要求はいくらでも発生する。 []- [ここ壊れてます]
- 611 名前:デフォルトの名無しさん [2015/05/25(月) 12:10:23.53 ID:JYCHMnRj.net]
- 433氏は読み物の影響を受けすぎなんじゃないのかな。
最近のウェブ上にある読み物は、極端なことを書いて炎上を狙うから、 あまり影響されないほうが良いと思うよ。 どっかのスレでブリッジパターンについて質問があったけど、そういうのを見て 極端なことを言いだしたんだろうかね。
- 612 名前:デフォルトの名無しさん [2015/05/25(月) 12:15:49.18 ID:JYCHMnRj.net]
- ボーランドの言語に有ったプロパティというのは、まさにこのためのもので、
変数にアクセスすると関数が呼び出されるというようなものだったんだよ。 見た目はもう少し洗練されていたけどね。 これはRADのために作られたと思う。 Javaでセッター・ゲッターが明文化されたのはビーンズのためだったので、 これもRADのためだったと考えてよい。 こういった背景を知っていれば、自然に受け入れられるんじゃないかな。
- 613 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 12:25:09.95 ID:5YOd8wM6.net]
- 彼が言うにはgetと多態使わないで再利用性は確保しろってこと?
それって結構難しいと思うんだが プッシュを基本とした設計だと、インターフェースをうまく使わないとクラス同士が簡単に密結合しまくって 再利用性のかけらもないクラスの糞塊が出来上がる
- 614 名前:433 [2015/05/25(月) 16:46:25.69 ID:p1p0Nay9.net]
- >>587
いやいや、 そういうフィールドがあることも否定せんしよ ゲッターセッターのもう1つの役割であるチェック機能だけが欲しい場面もあるだろうよ そうでなくて、 う〜ん Write Only と Read Only だな Write Only を実現したいのにセッターとゲッターを付けやがると問題起すよ、ってことよ
- 615 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 17:17:57.26 ID:2LXkX4Xr.net]
- >>589
javaの文法として、そのプロパティがサポートされてないから、ゲッター、セッターというルールを作ったってことだよな。 C言語でOOPがサポートされないけど、ルールを決めてOOPしてる人と一緒だな。 ゆとり世代は言語がサポートしてないとダメだから、新しい言語がいいと言うのかも。
- 616 名前:デフォルトの名無しさん [2015/05/25(月) 18:45:14.49 ID:Cc4FT8Vv.net]
- サイゴン陥落の時はひどい目にあったからね。
- 617 名前:デフォルトの名無しさん [2015/05/26(火) 00:27:06.73 ID:MruFbrRw.net]
- ★マインドコントロールの手法★
・沢山の人が偏った意見を一貫して支持する 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法 ・不利な質問をさせなくしたり、不利な質問には答えない、スルーする 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法 偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い 靖国参拝、皇族、国旗国歌、神社神道を嫌うカルト 10人に一人はカルトか外国人 「ガスライティング」で検索を!
- 618 名前:デフォルトの名無しさん [2015/05/26(火) 00:28:05.25 ID:MruFbrRw.net]
- ちな
「ガスライティング」は約すると 集スト になるンゴ
- 619 名前:433 [2015/05/26(火) 07:07:03.31 ID:nLpsmWXi.net]
- >>590
なんも言語理解力がないんだな チョンなみだよ ゲッターはRO セッターはWO ポリモーフィズムはオブジェクト指向なんかじゃなくて、 コード再利用性が高まる機能の1つ
- 620 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 10:11:04.72 ID:FJaoXbZH.net]
- オブジェクト指向の考え方の一つにコードの再利用があって、その考え方を実践するための機能に継承や多態性があるんでしょ?
- 621 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 19:58:49.52 ID:eiMDqtUU.net]
- 多態とオブジェクト指向はシミュレーションが主用途だった頃の発明
コード再利用はそれを再発見したドカタのスローガン
- 622 名前:433 [2015/05/26(火) 20:53:28.97 ID:nLpsmWXi.net]
- >>598
1行目はよく分からんが、2行目は吹くほど笑
- 623 名前:った。言い得て妙だね
まあ>>597みたいな奴がまだキリンさんクラスとか動物クラスとか 言っているんだろうけどねぇ [] - [ここ壊れてます]
- 624 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 21:03:09.66 ID:DZ6Zizra.net]
- 多態による再利用はオブジェクト指向らしい設計を維持するためにも重要だよ
9割共通で1割違うクラスが複数あるときCOBOLみたいにクラスを丸コピぺしたり 猿のように条件分岐するのはオブジェクト指向的ではない
- 625 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:00:54.05 ID:L0L5JUGf.net]
- 「(犬と人間が来て)哺乳類ならならとりあえず『歩け』っていえば歩くだろ。それぞれがどういう風に歩くかは知らん」
「(LinedListとArrayListがList型変数に渡されて)Listならとりあえずgetって書けば取り出せるだろ。実装がどうなってるかは知らん」 オブジェクト指向=多態ではないけれど、オブジェクト指向の実現方法の一つであることは間違いないよな
- 626 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:15:02.71 ID:DZ6Zizra.net]
- LinkedListとArrayListが両方Listなのは設計ミスだけどね
Listがランダムアクセスをサポートしてるかどうかは実装依存というクソ仕様
- 627 名前:433 [2015/05/26(火) 22:33:08.26 ID:nLpsmWXi.net]
- >>601
ちっとばかしシックリこないけど、ほとんどの人がその程度の理解があれば 少しは状況がちがったのかも get より equals の方が例としてはよかったのでは?
- 628 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:36:26.74 ID:aGxSVLPT.net]
- そんな使い古されたバズワードで議論とは若いのお…
- 629 名前:433 [2015/05/26(火) 22:40:00.14 ID:nLpsmWXi.net]
- なんか日本語が変
ちっとばかしシックリこないところもあるけど、 ほとんどの人が、その程度の理解であれば 状況は全然違ったのかも ただ、馬鹿が多いから 「オブジェクト指向の実現方法の一つである」を 「ポリモーフィズムにすりゃオブジェクト指向になるだろ」に 勘違いする
- 630 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 22:46:16.60 ID:DZ6Zizra.net]
- と、「カプセル化してりゃオブジェクト指向になるだろ」が持論の方が仰っております
- 631 名前:433 [2015/05/26(火) 22:51:36.38 ID:nLpsmWXi.net]
- >>606
そんな馬鹿が社内に居れば、説教部屋行きだなw
- 632 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 23:15:18.78 ID:UiDv1Vcu.net]
- >>602
一応RandomAccessインターフェースがあるけどね
- 633 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 00:43:56.26 ID:Gahj6sEf.net]
- >>607
あなたにその権限があったとしても、 あなたの教えを受けて考えを変えようと思う方はいません 残念でした
- 634 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 01:54:55.02 ID:esbmy2lw.net]
- 本当に多態がOOPに重要と思うなら、君はカプセル化や継承という「枠」を主軸とするもう一つOOPの人だよ
そもそも原理主義から見たら、多態なんて概念は瑣末な物だからねえ 受ける相手がいなくても良いんだから
- 635 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 04:44:13.95 ID:FB4uk7Yf.net]
- じゃあJavaで継承と多態性を一切使わずにプログラム組んでみろよ
絶対わけわからんことになるから
- 636 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:06:47.39 ID:Bw6jp1Et.net]
- コード書いて見せてよ
- 637 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:44:43.43 ID:esbmy2lw.net]
- >>611
別にわけわからん事にはならんよ 継承は移譲、多態もキューと分岐で十分 原理主義の方は、型キャストによる多態はしないね たまにそれも多態とか宣う困った人がいるけど
- 638 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:45:46.73 ID:esbmy2lw.net]
- 書き換えて欲しいなら元コード出しておくれ
- 639 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:50:14.28 ID:w5e0eq0t.net]
- 多態はSimulaの頃からある必須概念だぞ
- 640 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:50:28.96 ID:esbmy2lw.net]
- すまん、やっぱり何書いても突っ込まれそうだからやめる
- 641 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:51:48.26 ID:esbmy2lw.net]
- >>615
Simulaにおいてもタイプシステム上の概念だよ 型が前提
- 642 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 06:57:34.51 ID:w5e0eq0t.net]
- 多態というのが君の中でどう定義されてるのかは知らないが、
一般的に多態というと一つの操作に対し複数の
- 643 名前:型の実装が呼び出されることをいう
型ベースかダックタイピングかなんて本質的でない区別はしないよ [] - [ここ壊れてます]
- 644 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:04:55.95 ID:esbmy2lw.net]
- そういうタイプシステムで、動的バインディングするのが多態で
オブジェクト指向を提唱した人が言ってたのは、もっと上位の概念 アクターモデルとかの話で、源流のOOPではないんだよ
- 645 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:10:40.70 ID:w5e0eq0t.net]
- で、>>611のいう継承と多態性にいつ「OOP原理主義における」の条件が付いたんだ?
少なくともJavaでの一般的な言葉においては、多態の実装には継承かインターフェースかリフレクションが必須
- 646 名前:616 mailto:sage [2015/05/27(水) 07:11:21.47 ID:w5e0eq0t.net]
- すまん訂正
多態の実装には→移譲の実装には
- 647 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:14:19.07 ID:esbmy2lw.net]
- >>620
その制約って多態の実装をせずに多態を実装しろって矛盾した話でしょ? 何言ってるんだか
- 648 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:16:09.21 ID:esbmy2lw.net]
- 移譲の実装にはどれも要らないよ
やってみせようか?
- 649 名前:616 mailto:sage [2015/05/27(水) 07:19:07.89 ID:w5e0eq0t.net]
- ああ移譲って単に直接別のクラスのメソッドの実装を呼び出すことを言ってたのか
移譲で継承を代替できるから多態は不要という意味不明な話かと勘違いしてたわ、すまん
- 650 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:56:47.91 ID:FB4uk7Yf.net]
- >>613
それコード長くならない? オブジェクト指向プログラミングの目的の1つにコード短くするためっていうのがあるけど
- 651 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 07:59:04.16 ID:RZsA/U1h.net]
- Javaではclassを宣言しなければプログラムは書けない。
classを宣言するとjava.lang.Object classが必ず継承される。 終了。
- 652 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 08:05:20.08 ID:FZwjLvvv.net]
- >>626
Java8ならw ideone.com/yuBUHb interface Main { public static void main (String[] args) { System.out.println("ぬるぽ"); } }
- 653 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 08:23:17.86 ID:esbmy2lw.net]
- >>625
長くはなるかもしれないけど、どちらのOOPも短くするなんて目的はないと思う それより1つもあらゆる動的バインディングを伴わないという制約は 完全に密結合になるし、今時の大規模開発では無理だね それでも構造化は十二分にできるから、「わけわからない」とはならないよ
- 654 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 08:25:02.92 ID:esbmy2lw.net]
- >>626
はいはい そう言う屁理屈いう奴絶対出ると思った
- 655 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 13:47:09.46 ID:kpUvErGB.net]
- >>625
コード短くするためってのはないよ シンプルにすることはあっても短くすることは目的じゃない わかりにくくなったら保守性も下がるし意味がない 変数名やメソッド名はむしろ昔より長くなってるでしょ
- 656 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 19:24:45.82 ID:LZL2gy1L.net]
- Twitter4jを使って特定のアカウントが凍結されているか確認する方法はないですかね?
迷惑垢拡散アカウントと持っているので拡散した垢が凍結されているかを確認したいです。
- 657 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 21:01:57.94 ID:w5e0eq0t.net]
- >>631
Twitter4jじゃなくて本家のREST APIのドキュメントを読め そこに無ければ無いしあるなら直接それ使えばいい
- 658 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 02:29:42.27 ID:uibzkFZp.net]
- >>602
どういうこと?ランダムアクセスってインデックスによるアクセスってこと?それなら、LinkedListも内部トラバースするけどインデックスアクセスできるっぽいけど
- 659 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 04:06:57.38 ID:tKwlXHJ9.net]
- ↓これマジ?
techtarget.itmedia.co.jp/tt/news/1505/08/news03.html >パッチ未適用率が約8割のバージョンもJavaは“最も危険なソフトウェア”
- 660 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 04:09:22.28 ID:7nXufysT.net]
- いろいろなオブジェクト指向言語のお手本になってるSmalltalkでも
- 661 名前:継承はあるじゃない
C++だって継承がある 継承の機能のないオブジェクト指向言語の方がすくない 継承がなくて委譲で継承のようなことやるってGo言語使いかな? [] - [ここ壊れてます]
- 662 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 05:13:26.64 ID:tv7QNGPA.net]
- >>635
Smalltalkは別だよ C++と一緒にしてる時点で知らないと言ってるようなもん 簡単に言うとJavaScriptのような継承
- 663 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 06:07:52.40 ID:8cEiN+lf.net]
- >>633
LinkedListのgetは毎回先頭から要素を舐めるので、うっかり for (int i = 0; i < list.size(); i++) list.get(i); なんてことをやろうものならO(N^2)だ 仮にアプリの作りがまずくて、アプリへの要求の仕方によって 悪い奴が意図的にこのクソ重いループを実行させる方法があるなら、 アプリのDoS脆弱性と言われても仕方ないレベル
- 664 名前:デフォルトの名無しさん [2015/05/28(木) 07:45:57.12 ID:/AhuPFHmC]
- 多相性には部分型多相しかないと思ってるバカどもの迷子センターになってるな
- 665 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 10:01:39.86 ID:DciKDkXU.net]
- >>637
最近おぼえたんでちゅか? すごいでちゅねー
- 666 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:55:54.70 ID:r2p1JjMc.net]
- テキストエリアでwin標準?のポップアップメニュー(Janeのメモ欄で右クリックしたら出てくる奴)を使う事できないの?
- 667 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:57:14.08 ID:8cEiN+lf.net]
- さっさとSWTに乗り換えましょう
- 668 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 19:55:35.42 ID:yXcYN23r.net]
- >637
ArrayListにもデメリットがあること、用途に応じて使用するリストを選ぶべきことまで踏まえた上で「LinkedListはクソ」って言ってる? 昨今のハードの高性能化もあってほとんどのケースでArrayListで事足りるってだけで、LinkedListにはそれなりの使い道もあるんだけど ランダムアクセスできて、要素の削除やリストサイズの拡張にコストがかからなくて、メモリも最小限しか使用しないリストの実装があると言うのなら是非紹介して欲しい つーかLinkedListって、いわゆる「リスト」の構造に最も忠実だと思うんだが。どちらかと言えばArrayListの方がイレギュラー
- 669 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 20:18:32.34 ID:8cEiN+lf.net]
- >>642
「LinkedListはクソ」じゃなくてインターフェイスの設計が間違ってると言ってるんだよ。 ただList<T>を受け取っても、それがgetを(実用的に)サポートしてるかどうかは型チェックしてみないとわからない。 オブジェクト指向の設計として明らかに破綻している。 そりゃあまり重要でない性質ならわざわざ型で区別しないことも多いけど、 「インデックスによるランダムアクセスをサポートしているかどうか」というのはコレクションにとって極めて重要な性質。 それに対して、IterableやCollectionになくてListにあり、かつ実装依存でない性質って 「要素を順方向、逆方向に辿れる」だけ。そんなの、ランダムアクセスの可否に比べればほとんど役に立たない。 ちなみに後発の.NETではその失敗からListはランダムアクセスのためのインターフェイスと定義され、 LinkedListはListを実装しない。
- 670 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 20:48:02.43 ID:r2p1JjMc.net]
- (L)GPLライブラリってとりあえずソース公開すればいいの?
- 671 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 20:59:07.97 ID:yXcYN23r.net]
- >>643
いやいやいや、Listの下にRandomAccessListインターフェースを作れって話なら分かるけど、 最も抽象的な概念であるListにランダムアクセスを強要しろってのはねーわ。何のための抽象化? LinkedListがListを継承しないってことは、それこそ君の言うようなDoS脆弱性()が発覚した時にさあLinkedListからArrayListに変えましょうってなったとき、
- 672 名前:ロ々ソースを書き変えなきゃいけなくなるわけだけど。概念的な機能が同一のものを同一に扱わないってのはそれこそオブジェクト指向的じゃないでしょ []
- [ここ壊れてます]
- 673 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:00:57.98 ID:Yt09KnaV.net]
- 屑哲とは何ですか
- 674 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:19:05.95 ID:8cEiN+lf.net]
- >>645
で、実際ListIteratorを使ったことある?
- 675 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:30:16.79 ID:yXcYN23r.net]
- >>645
Iteratorは使ったことあるけど、それがどうした? 「順次にアクセスしたいときはArrayListにIterator使えばいい」とでも言うのか? IteratorとListは全く別のものだし何が言いたいのか分からんわ
- 676 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:36:29.41 ID:8cEiN+lf.net]
- ListIteratorはIteratorは別のもので、Listをリスト足らしめている根源なんだけど、
そんなことも知らないでListの概念云々言ってたの?
- 677 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:43:15.77 ID:DciKDkXU.net]
- バカ過ぎる
- 678 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:44:00.41 ID:yXcYN23r.net]
- >ListIteratorはIteratorは別のもので、Listをリスト足らしめている根源なんだけど、
え?じゃあListIteratorを取得可能なLinkledListはリスト以外の何物でも無いじゃん…
- 679 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 21:53:47.84 ID:8cEiN+lf.net]
- >>651
そうだよ。だからListIteratorを使ったことがあるかと聞いてるの。 ないならgetの付いたCollectionとしてしかListを使っていないことになるから、 即ちランダムアクセスのできないListには意味がないということ。 とはいえ実際にはCollectionsの各種アルゴリズムの実装などでListIteratorは内部的に活用されてるので、 決して意味がないわけではないんだけどね。 ただ程度問題として、比較的使用頻度の低いリンクリストのために多くのユーザーにとっての利便性を非常に大きく損なう設計にするのは 適切だろうか、ということ。 Javaが内部的に使ってるだけなら結局Oracleが頑張ればいいだけだしね。
- 680 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:00:23.19 ID:yoCp6Uc+.net]
- ここでグダグダJavaの設計について言うのは適切じゃないと思うけどな
- 681 名前:デフォルトの名無しさん [2015/05/28(木) 22:04:44.84 ID:+ywrUonY.net]
- >>653
そうだな。 pbs.twimg.com/media/CFrlOXAUgAAE8p2.jpg
- 682 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:09:54.26 ID:yXcYN23r.net]
- >ないならgetの付いたCollectionとしてしかListを使っていないことになるから、
>即ちランダムアクセスのできないListには意味がないということ。 そういう結論が出るに至る過程が全く分からんな、バカだから。 CollectionにもIterableにもgetが無い以上、getがあることには意味があるとしか思えんわ。 ランダムアクセスできるかどうかってようはパフォーマンスの問題であって、機能の問題ではないだろ? 「バブルソートはオーダーが高いからソートアルゴリズムとして扱うな(そっちの方がユーザにとって利便性が高い)」って言ってるようにしか見えんわ
- 683 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:16:25.52 ID:yXcYN23r.net]
- それと、百歩譲って「Listはランダムアクセスをサポートすべき」だとしても、それが中間的なインターフェースによる実現(RandomAccessInterfaceの実現)ではだめで、
LinkedListをListから外すしかない理由を説明してくれ。
- 684 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:18:43.06 ID:8cEiN+lf.net]
- >>655
いや、パフォーマンスを問題にしないならそもそもLinkedListなんて必要ないじゃん… 「LinkedListは必要である」という前提で話をする以上、パフォーマンスは無視できないよ
- 685 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:19:41.55 ID:58xt6n/s.net]
- おい、馬鹿
おのれは言いたいことを一レスにまとめるということができんのか アスペルガーじゃあるまいし、無駄にスレ消費すんな
- 686 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:26:26.57 ID:yXcYN23r.net]
- >>657
パフォーマンスを「リストと言うデータ構造」に対して保証する必要があるのか?って話なんだけど LinkedListはデータ構造としてのリストの機能を十分に満たしてるよね? それパフォーマンスを問題にしないなら「LinkedListが」必要でなくなる理由は? パフォーマンス一切無視ならランダムアクセスするリストも連結リストも等価だよね?
- 687 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:40:21.15 ID:8cEiN+lf.net]
- >>659
関数型ならともかく、普通Javaみたいな言語で特にパフォーマンス気にしないときとりあえずArrayList使うでしょ。 あえてLinkedListを使うのは特にパフォーマンスを意識している場合だろ? その作法はパフォーマンスの面でも正しい。 なぜなら、一般的には連続
- 688 名前:アクセスや最後への追加削除と比較して、途中への挿入削除の頻度は低いから。
もしどっちかに統一するとすれば、全体としてはArrayListの方が間違いなく速い。どちらか選ぶなら答えは明らか。 [] - [ここ壊れてます]
- 689 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 22:54:10.73 ID:8cEiN+lf.net]
- つまりLinkedListを使うときっていうのは、
そのアクセス効率の悪さ(getは論外だけど、Iteratorも遅いよ)やメモリ使用量の多さ、GCへの負担を受け入れてもなお メリットがあるほど挿入削除が多いことがわかっている場合というわけ。 それほどまでにパフォーマンスに配慮しながらgetは気にしないなんてありえないよね?
- 690 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 23:03:15.36 ID:yXcYN23r.net]
- >>660-661
ほとんどの場合においてArrayListを使えば事足りると言うのはその通りだし、LinkedListの用途についても俺もその認識だ。 しかしその答えから「Listはランダムアクセスを保証すべき(LinkedListはListに含まれないべき)」理由が俺には分からないし、 >もしどっちかに統一するとすれば、全体としてはArrayListの方が間違いなく速い。どちらか選ぶなら答えは明らか これは『どちらかしか使えなくなるとしたら』ArrayListにした方が上手くいくという話であって、「パフォーマンスを一切考慮しないなら」ArrayListにすべき理由じゃない。 たぶん言葉の認識の違いだと思うんだが、俺は「パフォーマンスを一切考慮しない」というのを入力に対する出力(そのプログラムが持つ機能、用途)しか考慮しないという意味で発言してる。 そして俺は機能が全く同じなら同じクラス・インターフェースにまとめるべきだと思う。よって俺にはLinkedListとArrayListは同じListとして考える方が自然だとしか思えない。(それを使うかどうかはまた別) パフォーマンスが違っても用途が同じものを敢えて置換できないようにする意味はどこにあるんだ?
- 691 名前:デフォルトの名無しさん [2015/05/28(木) 23:18:19.94 ID:bXGZB0T7.net]
- IDEのコード補完でクラスをインポートするときに
JDKに同じ名前のクラスがあるとうっとうしい Java9のモジュールシステムでjava.awt.Listとか クラスパスから除外できるようになりますか?
- 692 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 23:20:27.08 ID:+atrdthn.net]
- gnu class path は今はどうなっているの?
- 693 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 23:53:09.70 ID:tv7QNGPA.net]
- 横槍ですまない
>>662 >そして俺は機能が全く同じなら同じクラス・インターフェースにまとめるべきだと思う。よって俺にはLinkedListとArrayListは同じListとして考える方が自然だとしか思えない。(それを使うかどうかはまた別) おっしゃる通り、プログラマがListと言う時はLinkedListを指すのだから、 その話しぶりでは、設計は間違いだが変更は不可、って結論じゃなきゃおかしいよ それとこの手の後付の共通化を受け入れる人が多いが、これ間違いと思う 「異なる物を同一のものとして扱う」という概念への誤謬 同じ粒度の異なる物を別の抽象に無理に合わせても、 インターフェース以外の中身はその抽象には程遠い 本来は一つ下の粒度の物を適切に使い、抽象に合う物を組み立てなおすべき 極端に言えば、アダプタパターンは悪い妥協、かつアンチパターンだと思う
- 694 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 00:53:09.71 ID:itAy1lMg.net]
- 見ず知らずの人たち相手にOOPについて議論するとどんなメリットがあるの?議論することそのものを楽しんでいるだけ?
- 695 名前:デフォルトの名無しさん [2015/05/29(金) 01:51:22.68 ID:xnuOOQOC.net]
- ツリーイテレータは無いのだろうか。
- 696 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 03:56:18.50 ID:e13wdj/j.net]
- やり取りできるメッセージ(インタフェース)が一緒でも、性能が違ったら同じインタフェースにするべきでないって話?
それ、実装が違えば性能違って当たり前なんだから、インタフェースの意味ないね。 大きく違うからとか、主観の話かな。
|

|