[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 03/18 08:43 / Filesize : 244 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者】Java質問・相談スレッド114【歓迎】



1 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:53:34 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

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

前スレッド
【初心者】Java質問・相談スレッド113【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1204363011/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。

次スレは>>980あたりで。

730 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:45:41 ]
JSTL でも使え

731 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 16:01:00 ]
>>728
取り方はわかんないなぁ。
どうせイーサだし、1500以下じゃだめなんかな?
PPPoEとか考えてるともっと小さくないとだめだろうけど。

>>729
JavaScriptでチェックしたら?

732 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 20:13:26 ]
Jad と連携させて .class のソースビューワみたいなのを作ってるんですが
そもそも、.NET における Reflector みたいなソフトって
Java にはあるんでしょうか?
よろしくお願いします

733 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 20:25:49 ]
Refactorってのは知らんけど、あんたさんが作っているのはJadclipseってEclipseプラグインであるぞ

734 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 20:39:54 ]
Java Native Interfaceはこのスレで質問しても大丈夫ですか?

jchar型の変数にunicodeを代入したいんですがどうしても方法がわかりませんでした。

char型→jchar型の変換は見つけたのですが、char型[]をjchar型にする方法が知りたいです。

8bit(aなど)のものは問題ないのですが16bit("あ"など)がどうしても格納できません。

java神の降臨を願います。


735 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 20:51:15 ]
めんどくせーので Java 側で byte[] ⇔ char[] 変換メソッド作ってそれを JNI から呼んでる。

736 名前:デフォルトの名無しさん [2008/05/01(木) 23:49:04 ]
メソッドの定義でこのようなのがあったのですが
public static <T extends Comparable<T>> void sort(List<T> list)

<T extends Comparable<T>> の部分がよくわかりません…。
この部分では何がどう定義されているのでしょうか?
(T というクラスが Comparable<T> を継承してる???)

Java Generics関連らしいのですが
単純に文法的な記述の意味がわからず困っています

737 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:13:35 ]
> (T というクラスが Comparable<T> を継承してる???)
そんな感じ。

738 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:17:02 ]
『TってのはComparable<T>を実装したTだ』って宣言



739 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:20:52 ]
String extends Comparable<String>とかな。

genericsの導入でComparable#compareToなんかもObjectではなく
特定の型を取れるようになったためにこうなる。


740 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:21:28 ]
implementsですた。


741 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 01:08:33 ]
iアプリを勉強しようと思うけどどれをDLすればいいですか?
ttp://www.nttdocomo.co.jp/service/imode/make/content/iappli/tool/index.html
あとこれもどれなのかわかりません。
ttp://www.eclipse.org/downloads/

742 名前:736 mailto:sage [2008/05/02(金) 01:10:34 ]
>>737-740
レスありがとうございます。

まだわからない所があるので、もう少し相手してもらえると助かります。

ドキュメントによると Comparable は インターフェースですよね。
インターフェースは継承ではなく実装するものだと理解してましたが
この場合はなぜ継承されているんでしょうか?

743 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 01:26:39 ]
インターフェースも継承できる。
使いたいなら実装する必要があるだけ。



744 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 01:27:21 ]
補足 この場合の使うというのはインスタンスを作るということに近い。

745 名前:736 mailto:sage [2008/05/02(金) 02:28:32 ]
>>743-744
う〜ん、よりわからなくなってきました。(´〜` ;)
もう一度インターフェースについて勉強しなおしてきます

746 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:32:18 ]
>>733
レスありがとうございます
Jadclipseを実際に使用したところ
自分が欲しい機能を概ね満たしていたので良かったです
ありがとうございます

747 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 08:58:45 ]
Servletの話で恐縮ですが
<input type="text" name="group[1].line[10].name" value="hoge">
といったように名前のついたパラメータをサーブレット側で
取得しているのですが現在は1と10のところをループカウンタで
まわして取得しているのですがあまり処理速くありません。
美しくそして速く処理できるアルゴリズムというか方法は
ありませんでしょうか?

748 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 11:46:07 ]
>>742
>インターフェースは継承ではなく実装するものだと理解してましたが

インターフェースを継承したインターフェースを作ることができるよ

public interface Foo extends Comparable<Foo> {
 ...
}



749 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 11:50:08 ]
>>742
extends と implements を特に区別する意味がないっつーか。
T がクラスなのかインターフェイスなのかはわからんし。

750 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 11:59:26 ]
>>747
なにをどうすると、処理が速くないんだ?
ループさせるのが普通だろ

751 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 13:50:11 ]
配列を書くとき、
A[] a=A[10];
A a[]=A[10];
文法間違ってるかもしれないけど、
四角の場所の違いはどのような考えがあるんですか?

752 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 13:56:36 ]
C 風かそうでないか

753 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 14:02:12 ]
A[] a → Java スタイル
A a[] → C/C++ スタイル
A []a → 変態

754 名前:デフォルトの名無しさん [2008/05/02(金) 19:56:39 ]
SimpleDateFormat がうまくいきません。

SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
sdf.parse("Wed, 30 Apr 2008 13:16:59 +0900");

これでうまくいきそうなんですけど
java.text.ParseException: Unparseable date: "Wed, 30 Apr 2008 13:16:59 +0900"
うまくいきません。
どこが間違ってるのでしょうか?お願いいたします。


755 名前:734 mailto:sage [2008/05/02(金) 20:03:25 ]
>>735
どしてもC側で処理を完結させたいのです。
仕方なくwindows.hを使ったSHIFT-JIS→UNICODE変換を行うことにしたのですが。
UNIXではwindows.hが使えないので困っています。
iconvを使った変換方法があるらしいのですが、iconvってUNIXのコマンドですよね。
C言語内で使用する参考サイトなど教えていただけないでしょうか。


756 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 20:12:13 ]
>>754
そのままだと解析のロケールが日本なのでコンストラクタかなんかで Locale.US あたりを設定する。

>>755
プリプロセッサで差し替えるなりモジュール化設計するなりしときゃいいじゃん。

757 名前:754 [2008/05/02(金) 21:37:29 ]
>>756
サンクス!
うまくいきました。

758 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:19:50 ]
JAVA基礎の本を一通り終え、次のステップに移りたいと思っています。
どんなことを勉強したらいいでしょうか?おすすめを教えてください。

例;GUIアプリ、JSP、サーブレットとか



759 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:27:08 ]
自分が欲しいものを作る。

760 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:40:35 ]
コンポーネントにフォーカスを設定するのってどうすればいいんでしょうか?
どこかのサイトでみたのですが、
// TextBox1 にフォーカスを設定する
this.textBox1.Focus();

// Button1 にフォーカスを設定して、成功した場合はその旨を表示する
if (this.button1.Focus()) {
MessageBox.Show("Button1 がフォーカスの取得に成功しました");
}
これってあってますかね?このとおりやってみてもエラーなんです...

761 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:04:40 ]
それなんていう言語?


762 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:07:37 ]
>>760 はスレタイ 100 回読み直して腹を切って死ぬべき

763 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:07:56 ]
ん〜javaって書いてあったんですけどやっぱ間違いですよね。。。
あの、、どなたかやり方教えていただけませんでしょうか?

764 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:12:38 ]
MessageBoxつー名前が出てくる時点でMSの言語っぽい気配が濃厚なので、
たぶん.Netの何かじゃない?


765 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:17:04 ]
とりあえずjava.awt.Component#requestFocusとisFocusOwnerを調べよ。


766 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:17:08 ]
もしかしてJ#とか?

767 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 04:07:25 ]
同じような質問なんですが、Enterキーを押したときに
そのフォームに記入されている値をチェックし、
次のフォームに移動(TABを押したように)したいんですがどうやればいいんでしょうか?


768 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 04:15:30 ]
Web 作成か WebProg 板逝け



769 名前:767 mailto:sage [2008/05/03(土) 04:19:44 ]
transferFocusでできました。すいませんありがとうございました。

770 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 04:24:28 ]
3次元ベクトルを扱いたいのですが、Vector3Dクラスですと値がintのみになってしまいます
doubleも扱える3次元ベクトルクラスは無いのでしょうか?

771 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 09:41:24 ]
>>770
org.apache.commons.math.geometry.Vector3D でも使えば?

772 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 11:57:36 ]
Java3Dのjavax.vecmath.Vector3fやVector3dを使えばいいはずだが、
Vector3Dとは何ぞや。


773 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 12:52:31 ]
>>771
>>772

javax.vecmath.Vector3dで目的のものが出来ました。
私が見ていたVector3Dはnttdocomoの特殊なものだったようです。

774 名前:デフォルトの名無しさん [2008/05/03(土) 13:14:16 ]
NetBeansで.jarファイル(Javaアプリケーション実行ファイル)として出力するにはどうすれば良いのでしょうか?

775 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 14:54:02 ]
>>774
NetBeansスレへ

776 名前:デフォルトの名無しさん [2008/05/03(土) 14:56:19 ]
d.hatena.ne.jp/javastudy/

こういうことになりかねますか?

777 名前:デフォルトの名無しさん [2008/05/03(土) 15:25:34 ]
はじめまして。
自宅にネットがつながっていないのですが、javaがつかいたいんです。
ネットカフェに来てUSBにダウンロードをして自宅で使用したいのですが、やり方がわかりません。
どなたか教えていただけませんか?

778 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 15:45:17 ]
大嘘つきはふしあなしてからにしろ



779 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:19:13 ]
ネカフェに1日行かなければ1ヶ月ネットが使えるよw

780 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:48:24 ]
おまいら ADSL すらまだ使えない田舎や離島のことも配慮しろよ。

781 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:53:04 ]
そんな田舎にはネカフェなんかないだろ

782 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:57:08 ]
そこまで田舎じゃなくてもブロードバンドが普及しない離れ小島状態はけっこうある。
そうかと思えば基地局遠すぎて利得損失が大きいからADSLはダメで
いきなり光が来ることもある。

783 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:01:11 ]
街まで出てネカフェという状況も想像できないゆとり

784 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:37:06 ]
>>780,782,783
だったら777に手取り足取り教えてやれよ

785 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:46:52 ]
今JAVAの勉強中で置換をやっているんですが、先頭の文字だけ置換するのはどうやったらいいのでしょうか。
charAt(0)で取得すると変数は"先頭の文字"としてじゃなくて1つの文字とみなされ他の文字まで置換されて困っています。


786 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:13:55 ]
ゆとりの逆切れ炸裂

787 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:16:47 ]
意味不明
先頭文字置換なら、charAtで取得して、replaceFirstでOK

もしくは、他の置換とかもあることが多いので、StringBuilderに格納してすべての置換処理を行い、toStringで置換後のStringを取得する。
StringBuilderの方が、文字列操作のクラスだけあって、色々やりやすいメソッドが多い

788 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:20:58 ]
>>785
String s = "hoge";

t = "m" + s.substring(1);
とか
u = s.replaceFirst(".", "m");
とか




789 名前:デフォルトの名無しさん [2008/05/03(土) 19:16:29 ]
50枚ぐらいのJPanel(その上にも色々なコンポーネントを乗せて10)
見たのですが、CardLayoutで切り替えしているのですがどうも重たいです。
このぐらいの量だとベースのパネルにJPanel をくっつけて削除
した方がいいのですかね?その時に気をつけなければならないことは何ですか?
教えてください。宜しくお願いします。

790 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:22:19 ]
CardLayoutで50枚ってユーザは全部使うの?
使用頻度の低いPanelは開かれたときに初期化するなど工夫すればいいと思う。

そもそも、CardLayoutを勘違いして使っていると思うぞ。
例えばRPGでオープニング画面とフィールド画面と戦闘画面と町の画面をCardLayoutで切り替えるとかやっているんじゃね?

791 名前:デフォルトの名無しさん [2008/05/03(土) 19:31:13 ]
>>790
どうもです。
作成して初期化するっていう感じでいいですかね?
作成するときにどれだけかかるかにもよりますが・・・
一応50枚のパネルは共通のインターフェース使っているので、
よく使う物は最初にロードしておいて定数ぽく使って、後は生成するというパターンが
いいですかね?baseのパネルから貼り付けたりremoveしたりでOKですかね?

ちょっと勢い余ってかなりの量のコードを組んでしまったので・・・Javaでこれだけ組むのは
初めてです。
なんだかグラフィックのリソースを食いまくっていて他に影響が出そうです

792 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:41:14 ]
Java以前に、50枚切り替えとか常識的に考えて設計がおかしいだろ

どういう手段を実現したいのかではなくて、どういう目的を実現したいかを説明してみ

793 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:45:10 ]
業務アプリとか作ったことないのか…

794 名前:790 mailto:sage [2008/05/03(土) 19:45:29 ]
>>791
作成して初期化するって意味が解らん
新しい画面を表示するときにnewした所で一瞬
792も言っているが、まずは何をしたいかを説明した方がいい

795 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:46:17 ]
>>787>>788
有難うございました。本を見ながらなんとか出来ました。結城さんもうすこし分かりやすく書いてよ・・
StringBuilderとかまだ分からない言葉もありましたが助かりました。

796 名前:デフォルトの名無しさん [2008/05/03(土) 19:53:13 ]
>>792
詳しいことは省きますがあるアプリケーションを作っていて本当に様々な
操作をするのに50枚いるのですが、メニュー画面から親JPanelは50枚以上かな・・・
その上にももちろんJPanel載っています。そしてメニュー画面のボタンを押すと切り替えていっています。
そしてデータなどの入力・編集・印刷処理などをさせています。今現実的にうまくは動いているのですが、
ただ重たくて・・・できるだけ簡単に改造できればと思っています。
プログラムをロードするときに全部作っていてCardLayoutでばんばん貼り付けていました。
それをmediatorパターンで中央管理していたのですが・・・おそらくそこでJPanelを生成するクラスを作って
管理すればいいですかね?


797 名前:デフォルトの名無しさん [2008/05/03(土) 19:58:27 ]
>>793
その通りですw
言語処理系でプログラムをやっていたんですが急に業務用のアプリを速攻で作りましたw
Windowを使ってプログラムを書くのは初めてです。

>>794
インスタンスを作るという意味ですinit()やexit()をcallしています。
インスタンスを作ってあるものを。今はCardLayoutで切り替えて共通のインターフェースでinit()で
データの初期化やロードをしたりexit()メソッドを呼んだりしています。

798 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:55:24 ]
>>793
確かに業務アプリには糞設計のGUIが散見されるな



799 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:56:32 ]
m9(^Д^)

800 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:59:10 ]
>>796
重くなっている原因がJPanelの数って話は推測ですか、実測した結果ですか?
また、起動パラメータやJavaのバージョンをあげるなど、ソースに手を入れずに出来る対策はされましたか?

ちなみにSwingであれば、大雑把に1.4から5.0にすると2倍、5.0から6にすると1.5倍くらいのパフォーマンスアップが見込めます。
起動時のヒープ確保量のデフォルトも大きくなっています。

801 名前:デフォルトの名無しさん [2008/05/03(土) 22:09:01 ]
>>800
どうもです。
残念ながら推測です。ただグラフィックの資源を食いつぶしているのではないかと
感覚的にしかつかんでいません。今5.0 を使っていますが、6.0にするとそれだけの
パフォーマンスがアップするんですか・・・ちょっと考えて見ます。
実行時のパラメータはメモリ関係の方はかなりあげています。

もうかなりの人間が使っているのでソースはいじりたくないですからね。
何せ、今回GUIでWindow自体の開発は初めてでデザインパターンやJavaの本を短期間で
読みあさりどんどん書いていってしまったのでここに相談させていただきました


802 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:10:10 ]
>>798
質問している人間ではなく50枚も作るのかと言っている人間じゃないのか(笑)

803 名前:デフォルトの名無しさん [2008/05/03(土) 22:19:58 ]
教えてください、今ホームページを作っていてHTMLのsubmitボタンを押したときの
時間を取得するのは可能ですか?
昔本呼んだswingかなんかの処理ではたしかイベント処理があったと思うんが
HTMLのボタンでもイベント処理とかできるんですか?
初心者なんで可笑しなこと聞いてたらすみません

804 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:22:49 ]
Javaは関係なさそうな・・・
フォームとJavaScriptでいけるんじゃね?

805 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:11:19 ]
>>804
すいません、今Javaを習っていて
web3構築を使ってホームページを提出しなきゃいけなくて
どーしても押された時間によって処理したいことがあって
ちなみにJavaScriptはまったく分かりません
swingもまだ習ってないんですけど
たしか昔本で読んだことがあって



806 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:14:20 ]
>>805
Submitを押された時間ではなくて、Servletでリクエストを処理した時の時間ではダメなのか?
多少の誤差は出るが、十分な気がするけど。
むしろ、クライアント側の時刻なんて各マシンの時刻だから信用できるものでもないし。

807 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:14:33 ]
よくわからんけど課題って習ったことを使えばできることなんじゃないの?


808 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:15:23 ]
>>806
>Servletでリクエストを処理した時の時間ではダメなのか?
そういう方法もあるんですね、十分だと思います
ていうかDateクラスで得られる時間って
自分のパソコンに設定されている時間だってことに気付かされました
ありがとうございました
>>807
ショッピングサイトならなんとか作れそうなんですけど
落ちこぼれなんで、皆と違うものをと思ったんですけど
自分で調べろ的な学校だし
大人しくショッピングサイトのほうがいいかもしれません



809 名前:デフォルトの名無しさん [2008/05/04(日) 01:51:50 ]
例えばArrayListなどのインスタンスを、メソッドに引数として渡し、
メソッドの中で、そのインスタンスに対して操作を行うことは、
Javaのマナー的に、やらない方がいいのでしょうか?

810 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 01:55:56 ]
モジュール結合度が上がる (共有結合になる) のであまり良くはない。
まぁクラス内に閉じていて private 宣言されているようなユーティリティメソッドとかなら良いんじゃないの。

811 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 02:37:03 ]
ケースバイケース
禁忌ではない

812 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 04:19:14 ]
むしろ、弄られないことを想定している場合は
(そのメソッドが継承できるように公開されている場合は)
呼び出し側でコピーを作って渡すべき

813 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 05:13:28 ]
操作を行うって書いてあんじゃん。
それにコピーなんか作らなくても Collections#unmodifiableList() で十分。

814 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 08:00:49 ]
>>812
呼び出し側でコピー作るのか?
普通は呼ばれた方(コンストラクタ等)でコピーを作るんじゃね?
ArrayList(Collection col) とかそうだろ?

815 名前:809 mailto:sage [2008/05/04(日) 17:29:19 ]
>>810
>>811
どうもありがとうございます。
禁忌じゃないけど、あまり良くないという感じでしょうか。
ケースバイケースで考えてみます。

816 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:45:08 ]
>>814
コンストラクタでコピーするのは、
生成されたインスタンスが内部に保持するフィールドを防御するためで、目的が違う。

それにコンストラクタは、明示的にクラスを指定しなければいけないから
何をするべきかは、ドキュメントをみて決定していいと思う。

>>813
unmodifiable〜で十分なのは、ごもっともで

817 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:56:07 ]
>>815
むしろ、何が行われるかをドキュメントに書くことが重要
外見は同じでも、

/** ソートしたリストを返す。元のリストはそのまま */
List sort(List list)

/** 引数の list を破壊的にソートした後、そのリスト自身を返す */
List sort(List list)

の2つじゃ、使う側のどきどき感が違う

818 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:19:44 ]
ドキュメントは重要は同意
設計の方針としては、どんな使われ方しても自分のバグにならないように保守的にするのが良い。
コンストラクタの中でのコピーはそういう観点でもある。



819 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:11:25 ]
>>818
でもそれを徹底し過ぎると、メモリを無駄に馬鹿食いする危険性も。
Objectに変更可否フラグがあれば良かったのかもしれんが……。


820 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:13:37 ]
たいしてつかわねーよw

821 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 23:05:10 ]
>>819 それがドキュメントであり、設計なのでは?
シャローかディープのコピーでも違いがあると思うけど。

822 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 23:51:52 ]
そんなふうに色々考えているうちに、頭のCPUがフル稼働して、自分が何に悩んでいるかすら忘れ、結局は一番簡単で手抜きの設計に落ち着くわけです

823 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 00:13:50 ]
まさにYAGNIの原則。


824 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:24:07 ]
防御コピーは徹底しろ。それが嫌な奴はオブジェクト指向言語など使うな。
どうせ、「オブジェクトを作ると遅くなる」とか言い出すのだろうし。

825 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:29:29 ]
極論バカが来ました

826 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:42:13 ]
防御コピーが極論か。
オブジェクト指向がこの世に出てから半世紀近く経っているのにな。

827 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:50:24 ]
オブジェクト指向覚えたての社会人 2 年目かよw
でも経験少ないから適材適所のような程度問題が判断できないんだよな。

828 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 03:09:17 ]
全てのオブジェクトをイミュータブルにしてしまえばいいんだよ
停止し結晶化した世界は美しいぜ



829 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 03:11:13 ]
吟遊詩人が現れた

830 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 04:22:00 ]
>>828
それ何てErlang? まぁErlangだとI18N/L10Nが絶望的なので、実用を考えるなら
Scalaでありとあらゆるオブジェクトをvalで宣言するのが良さげ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<244KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef