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/
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] やり取りできるメッセージ(インタフェース)が一緒でも、性能が違ったら同じインタフェースにするべきでないって話? それ、実装が違えば性能違って当たり前なんだから、インタフェースの意味ないね。 大きく違うからとか、主観の話かな。
697 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 04:07:17.19 ID:AdYurFH0.net] >>602 言いたいことはわからんでもないけど > 両方Listなのは設計ミス は言い過ぎだろ Listがget(int)を持つのは、順序付けられたCollectionだからだよ Listの要素は順序を持つ だからn番目の要素にアクセスするメソッドがある 逆にCollectionにgetが無いのは順番を
698 名前:K定しないから [] [ここ壊れてます]
699 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 04:33:38.32 ID:JPuBr0K9.net] 初心者なんだけど、ArrayListとLinkedListって、addやremoveしまくりたいときはLinked使って、getしまくりたいときはArrayを使うって覚えてたんだけど、違ったの?
700 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:09:05.85 ID:GbyQSdJL.net] >>670 間違い ほとんど全ての場合でArrayListの方が性能が良いので、基本的にLinkedListは使わず常にArrayListを使う。 どうしてもボトルネックになってるコレクション操作の箇所がある→どうやら途中への挿入or削除が原因のようだ →LinkedListに変えてみたら解消した これだけでいい
701 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:13:21.03 ID:g6fbSoL/.net] >>668 同じ操作になるから意味はあるよ いくら実装が違うからと言って、モデリングが間違ってたら駄目だって事さ 無理やり共通化するのを良しとすると、極論的に正常動作でなくても、 インターフェースさえ付いてれば良い事になってしまう
702 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:24:06.99 ID:GbyQSdJL.net] 単純に、利用者のミスを生みやすい設計はよくないって話だよな Mapが渡ってきたらgetは直感的にO(1)、遅くてもO(log(N))くらいだと期待するだろ? Map#getよりも一見処理の軽そうなList#getがO(N)になりうるのは直感に反する
703 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 12:13:40.31 ID:RzAd5Uvp.net] LinkedListってListIterator使わないなら途中への挿入削除は結局検索のせいでO(N)なので オーダー的にArrayListより速いといえるのは先頭への追加削除だけという間抜けな設計なんだよね ListIteratorはリストが変更されると無効になるからカーソルとして保持するのはやりたくないし ListIteratorのアイデアに固執せず単純にListNodeを公開してくれるだけでよかったのにな
704 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 13:50:34.41 ID:2KbtQEek.net] 初歩的なことですいません。 import javax.bluetooth.LocalDevice; これをeclipseで記述すると赤線でエラーになるのですが 何が足りなくてどう記述すればよいのでしょうか?
705 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:14:27.92 ID:2KbtQEek.net] 自己解決しました。
706 名前:デフォルトの名無しさん [2015/05/29(金) 14:16:56.43 ID:AQuaH7cx.net] synchronizeについて教えてください。下記のコードでメソッドにsynchronizedを行っていますが、 変数mapは排他がかかるでしょうか?それともメソッドにsynchronizedを行ってもダメで変数mapそのものにsynchronizedするべきでしょうか? ※前提条件 ・getData()は外部のスレッドから一定周期で呼ばれる。 ・setData()は内部のスレッド(SubThread)から一定周期で呼ばれる。 public class Common{ private HashMap<String,String> map = new HashMap<String,String>(); public static void main(String args[]){ SubThread sub = new SubThread(); } public synchronized HashMap<String,String> getData() { return map; } private synchronized void setData(String data1, String data2) { map.put(data1,data2); } private class SubThread extends Thread{ String strData1 = "Data1"; String strData2 = "Data2"; public void run(){ setData(strData1,strData2); } } }
707 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:36:16.58 ID:e13wdj/j.net] >>672 そういうことじゃない。 実装ごとにわけるのなら、抽象化はされず、1実装に1インタフェースとなる。
708 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:46:16.67 ID:GbyQSdJL.net] >>677 getDataがmapを晒すと外から自由に排他なしでアクセスできてしまうからダメ 排他云々以前にコレクションをクラス外にそのまま出すのはpublicフィールド晒してるようなもんだから、 getDataは引数にキーを受け取って値を返す仕様にするべき それならそのコードの排他は正しく機能する
709 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 16:01:19.97 ID:b5ZezYht.net] Java初心者です。 jarファイ
710 名前:汲フexe化がうまく行きませんのでお知恵を拝借したいです。 exewrapでjarファイルをexe化しようとすると、 "Native executable java application wrapper.は動作を停止しました"とダイアログが表示されて途中で止まってしまいます。 jsmoothも試してみたのですが、"Saving exe..."のステップから進まなくなります。 jarファイル単体では普通に動作するのですが、これはjarの中身になにか問題があるのでしょうか? OSはVista、Javaはバージョン8、notepad++で書いております。 [] [ここ壊れてます]
711 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:11:51.79 ID:RfzJ1xHR.net] iniファイル解析クラス作ってみました。アドバイスお願いします。 notepad.cc/share/dObqHTeIJ8
712 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:20:52.35 ID:/O9WcZmT.net] >>681 せっかく正規表現使ってるんだからキャプチャ使えばいい
713 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:52:10.88 ID:RfzJ1xHR.net] キャプチャって何ですか?
714 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:02:39.74 ID:qddcoV7p.net] そもそもパフォーマンスを保証したいならListでアップキャストせず、ArrayListで受け取ればいいだけの話 そのうちObject型にも文句付けそう
715 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:41:30.09 ID:vNf0wM8U.net] >>681 iniフィアルなら、セクションに対応する必要があるよ
716 名前: ◆QZaw55cn4c mailto:sage [2015/05/29(金) 21:41:32.94 ID:bTG2Z02M.net] >>667 C++でイテレータパターンの演習にとトライしてみたが、なかなかうまく形にならない‥
717 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:43:27.41 ID:bTG2Z02M.net] 連続領域を必要とする ArrayList は嫌われものだと思っていたのだが、ここでは一択なんだね 今まで間違った感覚を持っていたのかな
718 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 00:02:38.75 ID:IDV5NAFV.net] ArrayListの全要素を取得するのには、forか簡易forかイテレータを使う方法があると覚えたのですが、実際の場面ではどれを使うのがいいのですか?
719 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 00:38:07.46 ID:86ur7FpL.net] foreach
720 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 01:43:50.24 ID:+/L2wu74.net] >>678 どう読み間違えたらそうなるんだよ 例えばインターフェースに期待される要件があるとして、 実装はそれを満たさなくても、言語だけの制限では型にあわせる事だけはできる けど、それは設計的には間違いでしょ
721 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 07:18:40.89 ID:y5cl7Y1T.net] >>687 たかが要素数×8バイトの配列が問題になるような状況なら LinkedListのメモリ使用量の多さやトラバースの遅さや 小さいオブジェクトが大量発生することによるGCへの悪影響の方が先に問題になるだろ
722 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 10:34:51.84 ID:rQC0QNS1.net] >>690 勝手に期待してるの?
723 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 11:07:57.30 ID:E4+c+dv0.net] メソッドの戻り値に複数の値を定義したくて class Ref<T>{ private T val=null; public void set(T t){val=t;} public T get(){return val;} } このようなクラスを作りました。 メソッドの定義はこんな感じで、intを一つ渡すとstringとobjectがrefStringとrefAnyにセットされます public hoge(int i,Ref<String> refString,Ref<Object> refAny){} 使うときは Ref<String> resultStr=new Ref<String>(); Ref<Object> resultObj=new Ref<Object>(); hoge(100,resultStr,resultObj); で、 resultStr.get();resultObj.get();と値を取得します。 この様なクラスってjavaの標準クラスの中にありますでしょうか? また、このような書き方に何か問題はありますでしょうか。 c#のref構文が便利すぎて真似したのですが、javaでは需要が少ないのでしょうか
724 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 11:49:23.42 ID:K6Aqd4ey.net] >>6
725 名前:93 なかったはず。 自前で作るのが面倒ならジェネリクスと相性悪いけど配列使うとか、 目的外使用になっちゃうけどjava.util.concurrent.atomic.AtomicReference<V>使うとか。 [] [ここ壊れてます]
726 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 15:14:42.98 ID:SAlWoYO0.net] MP3の長さ取得を簡単にする方法ありませんかね?
727 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 17:34:09.91 ID:aOrY5qKq.net] >>691 あらかじめ適切な長さがわからない状況で、再配置、再配置が繰り返されるのもどうかと思うが
728 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 17:48:26.36 ID:+/L2wu74.net] >>692 お前さ否定のためだけにレスするのやめてくれない? もしかしてマーカーインタフェースとか知らないのか?
729 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:57:58.78 ID:rQC0QNS1.net] >>697 煽るだけのレスやめてくんない?
730 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 23:02:53.24 ID:+/L2wu74.net] >>698 いやだからマーカーインタフェースとか知らないの?
731 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 00:58:56.72 ID:Tte5i/+4.net] >>699 Listと何の関係が
732 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 00:59:41.83 ID:Tte5i/+4.net] 的外れの揚げ足取りが来るんだろうな
733 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 03:06:40.58 ID:gPOjvzR+.net] >>701 元の人がListIteratorを生成するListじゃ、 一般的なリスト構造を期待するという流れで、こういう主張をしてるの というかさ、なんでそう被害妄想的なの? 俺別に揚げ足取りしてないでしょ?
734 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 03:44:40.52 ID:gPOjvzR+.net] >>700-701 勝手に同じ人として話進めるからね >やり取りできるメッセージ(インタフェース)が一緒でも、性能が違ったら同じインタフェースにするべきでないって話? >それ、実装が違えば性能違って当たり前なんだから、インタフェースの意味ないね。 >大きく違うからとか、主観の話かな。 これはマーカーインターフェースの存在で否定される >実装ごとにわけるのなら、抽象化はされず、1実装に1インタフェースとなる。 こちらは実装を誤解のないよう、適切にIFに分離抽象化しろと言ってるだけで、 極端に突き詰めたインターフェースしか必要ない、という主張ではない 反論になっていないと思うよ >Listと何の関係が マーカーは言語機能的には名前だけで実装や仕様を縛る物 要するにパフォーマンス要件で分けてる
735 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 03:51:28.41 ID:gPOjvzR+.net] 編集途中で送信してしまった 要するに実装で分けるインターフェースを抽象化したもの RandomAccessなどはパフォーマンス要件で分けてる
736 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 04:28:59.96 ID:Tte5i/+4.net] >>703 自分で作れよ
737 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 04:35:01.10 ID:gPOjvzR+.net] >>705 そうだね自分で作ってもいいね で内容は同意できたの?
738 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 04:57:06.98 ID:y0vichKB.net] そういうことをしたければ、インターフェースではなくテンプレートライブラリだよね
739 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 05:20:35.98 ID:gPOjvzR+.net] >>707 できれば説明を頂きたい Javaでの実例もあれば是非
740 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 09:05:41.55 ID:y0vichKB.net] >>708 C++
741 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 09:08:59.44 ID:gPOjvzR+.net] >>709 C++テンプレートは構造的サブタイピングなだけで インターフェースはあるよ というかその程度だとミックスインかブリッジかストラテジパタンーンで十分では
742 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 09:23:00.74 ID:gPOjvzR+.net] 語弊があったので訂正 ここで言ってるインターフェースというのは Javaとほぼ同等な純粋仮想クラスという意味じゃなく、 テンプレートプログラミングにおいて同等な位置の型クラスというような意味です あとパターンねパターン
743 名前:デフォルトの名無しさん [2015/05/31(日) 10:43:59.62 ID:XhIDATDmg] 下の実行例のようなプログラムを組みたいんですがエラーが出てコンパイル通りません、Arrays.sort(array);あたりが間違っている、と出ます */ import java.util.*; public class q12146166122 { public static void main(String[] args) { try { if(args.length != 3) { throw new IllegalArgumentException(); } int[] array = new int[args.length]; for(int i = 0; i < array.length; ++i) {
744 名前:array[i] = Integer.parseInt(args[i]); } Arrays.sort(array); // System.out.println(Arrays.toString(array)); System.out.printf("min=%d max=%d\n", array[0], array[array.length - 1]); } catch(NumberFormatException e) { System.err.println("ちゃんと整数を入力してください"); } catch(IllegalArgumentException e) { System.err.println("コマンドライン引数の数は3つにしてください"); } } } [] [ここ壊れてます]
745 名前:デフォルトの名無しさん [2015/05/31(日) 10:44:27.66 ID:XhIDATDmg] >>712 実行例 // javac q12146166122.java&&java $_:r 3 1 2 // min=1 max=3 // javac q12146166122.java&&java $_:r 3 1 // コマンドライン引数の数は3つにしてください // javac q12146166122.java&&java $_:r 3 1 2 4 // コマンドライン引数の数は3つにしてください // javac q12146166122.java&&java $_:r 3 1 a // ちゃんと整数を入力してください // javac q12146166122.java&&java $_:r 3 1 3.4 // ちゃんと整数を入力してください
746 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 11:24:50.71 ID:rPrQit5P.net] 学生で実務経験がなく本で勉強してるから 理屈はわかるけど存在意義がわからないものがある インターフェースと抽象クラスって座学で勉強する分には 違いがよくわからないけど実際の案件ではどういうところで使い分けるの? それがわからないからピンとこないのよな・・・
747 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 11:29:41.49 ID:y0vichKB.net] >>714 たしかに使い分けや適用はわからないな‥どちらもそのままでは実体をつくれないし 純粋仮想関数のみのクラスと純粋仮想関数・実体が混在したクラスか
748 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 12:26:14.56 ID:bzJLQWqx.net] java の場合 interface は多重継承できる 結局メモリ効率とかその辺になるんじゃない
749 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:11:26.75 ID:gPOjvzR+.net] 抽象クラスって教科書?的にはテンプレートメソッドパターンで使うけど インターフェース作って、newの時にその部分だけ委譲したほうが良い設計な気がする というか本当は要らないんじゃ…
750 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:25:27.97 ID:Tte5i/+4.net] >>706 自分の設計方針に合わないからと駄々をこねるのは同意できない。
751 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:27:46.68 ID:gPOjvzR+.net] View関連クラスなど、上書き必須のメソッドAと、 同カテゴリだが必要に応じ使用者に上書きさせたいメソッドBを、 1つのモデル(オブジェクト)に同時に入れたい この場合インターフェースでAの実装を分けると、 Bも上書きしたい場合に煩雑になるので、抽象クラスを使うべきだろう というか、そういう物以外で使った覚えがない
752 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:29:21.13 ID:gPOjvzR+.net] >>718 いえ、別に変える事を強制してるわけじゃなくて、 間違ってるよねと言ってるだけですので…
753 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:46:47.12 ID:Tte5i/+4.net] >>720 標準的なものが偏った考えのための 濫用を避けるのは間違っていない。
754 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:51:28.34 ID:gPOjvzR+.net] >>721 先程から具体性が全く無く、おっしゃってる意味がよくわかりませんね というかレスを真面目に読む気も、まともに反論する気もないようですし、 レスしなくていいですよ? 私は飽くまで納得できる回答が欲しいだけで、同意が欲しい訳じゃないので
755 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:59:44.04 ID:gPOjvzR+.net] 一応再度説明しますが、主にインターフェースには適切なモデルが必要という主張 Listも間違ってる例であり、その理由は元の主張の人がおっしゃるように、 ListIteratorとListのgetメソッドの二者で相反する性能です