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


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

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



1 名前:Javaが初心者 mailto:sage [2008/05/12(月) 03:05:27 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

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

前スレッド
【初心者】Java質問・相談スレッド114【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1207385614/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

671 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:26:24 ]
JAVAにはOpenCVのような画像処理を扱うAPIはありますでしょうか。
OpenCVの移植があれば最高なのですが、ぐぐっても出てこないということは無いのですかね。。


672 名前:デフォルトの名無しさん [2008/05/31(土) 17:29:21 ]
駆け出しのプログラマなんだけど、休日とか、書類作成メインの日とか、コーディングしない日があるのが怖い
コードを書かないと実力が落ちそう

そこで、将棋でいう「詰め将棋」みたいに、シンプルなプログラミングの問題を掲載したサイトとか本とか無い?

673 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:32:29 ]
>>672
っ pc11.2ch.net/test/read.cgi/tech/1212085079/

674 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:33:58 ]
>>652
そのVectorに関しての質問です。
cloneで生成したインスタンスから、clone元のインスタンスを操作する方法を教えてください。
よろしくお願いします。

675 名前:デフォルトの名無しさん [2008/05/31(土) 17:39:38 ]
Vectorの質問というよりもJavaコレクションフレームワークの全体像から勉強しなおした方がいいんじゃないの?

676 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 17:41:34 ]
>>674
?

677 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 19:31:14 ]
wisdom.sakura.ne.jp/system/java/swing/swing2.html
ここを見て勉強していたのですが、
awtでは描画処理をpaint()をオーバーライドして行っていたのに、
swingではpaint()のオーバーライドは推奨されていない、と書かれています。
何故使ってはマズいのかということと、
swingでGraphicsクラスのオブジェクトを得て描画処理するのはどういう風にやるのが普通なのか教えて下さい。

678 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 19:41:32 ]
>>677
paintは、そのコンポーネント自身だけでなく、ボーダーや子コンポーネントも描かないといけないのだけれど、
オーバーライドするとそれが行われなくなってしまうのでマズイ。
swingでは、代わりに protected void paintComponent(Graphics g) をオーバーライドしてください。

679 名前:678 mailto:sage [2008/05/31(土) 19:53:30 ]
あぁ、ただし JApplet には paintComponent はありません。
paintComponent を持ってるのは JComponent の子孫だけ。
JApplet に直接描きたい場合は paint をオーバーライドするしかない。
普通は中に swing コンポーネントを配置したいから JApplet を使うのであって、JApplet に直接描くのはあんまりしないと思う。



680 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:10:30 ]
じゃ、なんでJAppletをswingのパッケージに入れたんでしょうか。混乱しませんか?

681 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:16:11 ]
javax.swingパッケージにはコンポーネント以外のクラスもいっぱい入ってるよ
ActionとかTimerとかSwingWorkerとか
↓みてみ
java.sun.com/javase/ja/6/docs/ja/api/javax/swing/package-summary.html

682 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:08:23 ]
Cよりjavaから先に勉強した方がいいの?

683 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:18:08 ]
>>682
初心者のためのプログラミング言語ガイド Part9
pc11.2ch.net/test/read.cgi/tech/1210941509/

684 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:19:38 ]
興味がある言語からやればいい

685 名前:デフォルトの名無しさん [2008/05/31(土) 22:15:20 ]
JFrameにJAppletをaddすべきかどうかいつも悩むんですけど・・
AWTでは全く問題ないのにswingはpaint関連を知っていると、少し変な設計なんですがどう思いますか?

686 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:55:57 ]
>>685
まぁ別にいいんじゃない?
気になるならFrameの上にJAppletを置けば

687 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:59:36 ]
てか、JAppletの上にJPanelを引いてなにかするべきだろ?
そうすれば同じようにJFrame上でも動作可能になる。

688 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:05:56 ]
>>686
そうするとSwingのUIから外れちゃいませんか?

689 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:11:27 ]
JPanelにLinkedList<JLabel>を配置したい場合はどうしたらよいでしょうか?



690 名前:689 mailto:sage [2008/05/31(土) 23:13:42 ]
スイマセン、やっぱりもうちょっと自分で考えてみます。

691 名前:689 mailto:sage [2008/05/31(土) 23:16:52 ]
自己解決しました。スレ汚し&連投失礼致しました。

692 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:32:25 ]
>>688
そういう細かいことが気になるんなら、687 の言うように JPanel 上にすべてを構築して、
アプレットの場合はそのパネルを JApplet の中に置き、
アプリケーションの場合はそのパネルを JFrame の中に置くようにすればいいよ

693 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:32:43 ]
正規表現を使ったプログラムを作っているのですが、
pattern = Pattern.compile("^Java.*");
matcher = pattern.matcher("JavaでHello World");
boolean b = matcher.matches();
System.out.println(b);
pattern = Pattern.compile(".*World$");
matcher = pattern.matcher("JavaでHello World");
boolean c = matcher.matches();
System.out.println(c);
このとき同じ文字列に1回1回compileとmatcherを使ってしまいます
この場合ならPattern.compile("(^Java.*|.*World$)");とまとめれば済みますが
これをもっと多数(50とか60とか)に増やすときにはものすごく長くなってしまうと思います
なんとかスッキリまとめる方法はないですか?

694 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:39:28 ]
正規表現はそれだけで1冊の本が出るように別の言語と思え

695 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:09:19 ]
50個追加していき
"ab"+"cd"+"ef"...
とやればよい。

そのUIってのは、Menuとかがswingらしくなくnative依存という事だと思うんだけど。
で、>>687はそういうことを言ってたのか。オレの強力なエスパー使っても分からなかった・・

696 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:16:22 ]
>>695
つまりPattern.compile("^Java.*"+".*World$");というように記述すればいいのですか?

697 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:48:02 ]
>>693
その質問内容だと、「愚直に|で繋げ」、としかアドバイスできないと思
う。長い正規表現の記述が長くなるのは当たり前。

やりたいことをもっとハイレベルに書けば、正規表現とは違ったスマー
トな解決方法もあるかもしれない。



698 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:16:19 ]
>>693
ふと思ったのだが、文字列を1行にしようとしてないか?
 "(^Java.*"
+"|.*World$)"
って2行にして書いてもコンパイル時にまとめられるから"(^Java.*|.*World$)"と同じ事だぞ。

699 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:46:22 ]
用途を拡張したいということだろ
ただつなぐだけなら誰でも分かる話



700 名前:693 mailto:sage [2008/06/01(日) 02:18:15 ]
やりたいのはテキストファイルを読み込んで1行ごとにパターンマッチしてるかを
判定していくプログラムですね
ただ、パターンが大量にあるのでそれをソースコードの中に全部書いていくのは
無駄が大量なのではないかと疑問に思ったしだいで
チェックしたいパターンを別のファイルに記述しておいて
そのファイルを読み込むという方法も考えましたが、改行文字の処理が面倒そうですし

701 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 02:20:24 ]
>>700 for ループでぶん回せば?

702 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 02:56:43 ]
ほとんどの場合に最初の方のパターンでマッチするから、後のパターンは無駄になる事が多いって事かな。
なら、
>チェックしたいパターンを別のファイルに記述しておいてそのファイルを読み込む
でもいいと思うけど。配列にした方が早いかも知れんが。

>改行文字の処理が面倒そう
これが良くわからん。BufferedReader#readLine()で1行ずつ読むだけだと思うのだが、何かまずいのか?

703 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:04:30 ]
そこまで考えてやることもないだろう。

704 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:08:40 ]
>>702
1行ごとに
^Java.*
みたいなのを書いていったファイルを読むと考えていますが
readline()は改行文字を読まないんでしたっけ?
それなら1行呼んでそれに+していく方法に問題は無いんですが

705 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:11:50 ]
APIドキュメントを読むのは基本
基本が出来ないやつはいつまでたっても馬鹿

706 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:19:06 ]
>>705
申し訳ございません
このような愚行でスレを汚してしまったことを深くお詫びします
>704は無視していただいて構いません

707 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:35:11 ]
ファイル名とかは含まず、画像内容そのもののダイジェストを求めたくて、
↓作ったけど、もうちょっと最適化できないでしょうか?
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=30326

ファイル名とかパスを除くための、
特に46〜50行目ぐらいの↓が無駄な気がするけど、いい案が思い浮かばないです。
// (1)Normalize
BufferedImage bimg = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_3BYTE_BGR);
Graphics g = bimg.createGraphics();
g.drawImage(icon.getImage(), 0, 0, null);
ImageIcon normalize_icon = new ImageIcon(bimg);


708 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 04:33:04 ]
パス or URLが示す(画像)ファイルに含まれるデータのハッシュを使わない理由は?

709 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 04:49:01 ]
>>708
圧縮形式の違いは無視したい。
PNGやBMPとか、クリップボードから取り込んだイメージとかとか

デコード済みの画像から作りたいです。



710 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:08:05 ]
どういう最適化を望んでいるのかによる。

711 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 09:55:50 ]
無駄なコードや、性能とか

ImageIconからシリアライズ可能なイメージ情報だけ取得したり
できないのかなと思ったのだが、無い?

712 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 10:18:26 ]
>>709
java.awt.image.PixelGrabber つかって画素データ取り出してから
画素データのハッシュ値計算すりゃいいんでは?

713 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 12:16:44 ]
>>707
これでどう

static byte[] getImageHash(String path) { return getImageHash(ImageIO.read(new File(path))); }
static byte[] getImageHash(URL url) { return getImageHash(ImageIO.read(url)); }
static byte[] getImageHash(BufferedImage image) {
 int[] pixels = new int[image.getWidth() * image.getHeight()];
 image.getRGB(0, 0, image.getWidth(), image.getHeight(), pixels, 0, image.getWidth());
 return MessageDigest.getInstance(HASH_ALGORITHM).digest(pixels);
}

714 名前:デフォルトの名無しさん [2008/06/01(日) 13:50:51 ]
型変換についてなんですが
スーパークラスA, それを継承しているサブクラスBがあるとして
明示的なキャスト変換以外に
型をスーパAからサブBに変換する方法はありますか?

715 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 13:58:25 ]
>>714
Visitorパターン、またはダブルディスパッチ

716 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 18:45:11 ]
>>713
その手があった。サンクス
Officeサンプル画像のBlue hills.jpgで50回ほどベンチマークしてみたけど
(JDK 1.6.0_05-b13)で比較したら、new int[];BufferedImage.getRGBのほうが
残念ながら、2割ほど遅かった。
(new int[]とそこへのコピーがオーバーヘッドになっちゃうのかな?)

sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=30328

>>712
PixelGrabber、考えて見まつ



717 名前:デフォルトの名無しさん [2008/06/01(日) 23:26:06 ]
testフォルダをルートとして
その中にtestaとtestbのフォルダを作って
testaフォルダの中にあるjavaファイルから
testbのフォルダの中にあるファイルデータaa.textを
ロードする場合の指定は
testb/aa.textでいいでしょうか?
実行すると
java.lang.NullPointerException
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
という例外が出るんですが

718 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:35:26 ]
フォルダ云々じゃなくてまずはパッケージの概念と実行する時のクラスパスに関して勉強して来い
お前の質問じゃ、それでもいいともそれではダメともどちらでも取れる

719 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:11:45 ]
>>717
釣りなのか?なんか笑える



720 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:32:34 ]
>>717 説明の文章だけ読むと ../testb/aa.txt

721 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 03:38:56 ]
     * Returns a shallow copy of this <tt>ArrayList</tt> instance.  (The
     * elements themselves are not copied.)

    public Object clone() {

        ArrayList<E> v = (ArrayList<E>) super.clone();
        v.elementData = Arrays.copyOf(elementData, size);

これ、ディープ・コピーじゃないんですか?
以前のソースがないので分かりませんが、clone()の実装がバグってるんでしょうか。

722 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 05:41:04 ]
>>721
6のArrayListの実装?
どうみてもシャローコピーなんだが。
super.clone()
は継承元ではオーバーライドされていないからObject#clone()呼び出しと同義だし、
v.elementData = Arrays.copyOf(elementData, size);
は単に各要素への参照値をクローンしたArrayListの方にコピーしているだけでしょ?
コメントにも要素自身はコピーされないって書いてあるやん。

723 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:56:08 ]
v.elementData = Arrays.copyOf(elementData, size); 

これでしょ問題なのは。

v.elementData = this.elementData

シャローコピーといえば、普通はこうじゃないの?
オブジェクト(クラス)がArrayListだから、クラスの意味からすれば
オブジェクトのフィールドにある配列の内容の方もコピーするってのは分からなくもないけど、
シャローコピーは配列の参照だけコピーで内容はやんないんじゃなかったか。


724 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:57:04 ]
> v.elementData?=?this.elementData
>
> シャローコピーといえば、普通はこうじゃないの?

コピーになっとらんがな。

725 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:05:34 ]
>>723
そもそも
> * Returns a shallow copy of this <tt>ArrayList</tt> instance.
をわざわざ引用していたり
> clone()の実装がバグってるんでしょうか
などと言っているところからみて
> ディープ・コピーじゃないんですか?
は配列のコピーうんぬんの話でなく
ArrayList#clone()のことを質問してるんじゃないの?

726 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:08:25 ]
>>724
要素が変更されたらおかしくなるし、確かにコピーになってない。
そうするとコレクションに限っては、cloneの仕様を満たすのは、やっぱこれでいいじゃないの?

727 名前:デフォルトの名無しさん [2008/06/02(月) 08:10:54 ]
これだとコンストラクタと同じだし、cloneを実装したSUNの意図がイマイチわからん。
継承しても、cloneを再実装しようかどうか迷うじゃん。

728 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:17:41 ]
>>727
インスタンスメソッドである事に意味があるんじゃね?

コンストラクタは型わかってないと呼べないし。

729 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:25:07 ]
>>728
インスタンスなら、キャストしないといけないから結局はキャスト先の型がわかんないとダメでしょ。
リフレクト使うのもいいけど、そうれなら全て継承元の(ArrayList)のキャストになってしまう。
型分かってんなら、継承していてもいなくても、ArrayListのコンストラクタでいいでしょ。
イマイチわかんないな。
cloneが実装されている標準のクラスはあまりないから馴染みないけど、どういうときに使うんだ?




730 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:41:41 ]
>>729
(T)arraylist.clone() のキャスト先の型Tは
T extends Cloneable & List みたいちょっとだけでも抽象化できる。
コンストラクタ呼ぶ時ほど具体的な型名は必要ない。

731 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:58:55 ]
>>727
配列の clone() と似た動作を目指しただけだと思うが。

片っ方を変更したら、もう片方も変更されるようなものが欲しければ
List#subList(int, int) 使えって言われるだろうし。

732 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:58:40 ]
インスタンスメソッドでArraylListであることは最低限保証できるってことだと思う。
それなら、cloneじゃなくてdupとか別の名前でもいい気がしたけど
Vectorのころにcloneを実装しちゃったからその名残かな。

733 名前:デフォルトの名無しさん [2008/06/02(月) 15:10:46 ]
Appletが起動したらTextFieldにカーソルが点灯している状態にしたいのですが
教えてください。FrameやWindowはつかってません。


734 名前:デフォルトの名無しさん [2008/06/02(月) 15:53:18 ]
>v.elementData = this.elementData 

シャローコピーならこれでコピーされてるでしょ。
どうせコピー元が変更されたり追加されて内部の配列の参照が変更されても、
コピー先はその時点での状態がコピーできればいいんだし。
コピーになってないとかいって、意味わかんないな。

v.elementData = Arrays.copyOf(elementData, size);  

でも実質同じだから冗長と言えなくもない。


735 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 16:21:15 ]
>>733
検索した
ttp://www.alles.or.jp/~torutk/oojava/maneuver/1998/swing/swing_ja.html
>また、フォーカスを持つコンポーネントをプログラム中から指定することもできます。JComponentクラスのメソッド、requestFocus()です。

これでいい?

736 名前:デフォルトの名無しさん [2008/06/02(月) 17:24:05 ]
sample.jsp

<%@ page contentType="text/html;charset=Shift_JIS" %>
<%! String a=""; %>
<%
//↓これを書くとjsp:paramで何故かエラー
request.setCharacterEncoding("JISAutoDetect");
a=request.getParameter("nam");
%>
<html>
<head>
<title>sample</title>
</head>
<body>
<jsp:include page="include.jsp">
<jsp:param name="param" value="<%=a %>" />
</jsp:include>
</body>
</html>

737 名前:736 [2008/06/02(月) 17:26:02 ]
include.jsp
<div align="right">
<%= request.getParameter("aaa") %>
</div>


実行結果:
org.apache.jasper.JasperException: An exception occurred processing JSP page /sample.jsp at line 16
(16行目は<jsp:include page="include.jsp">の行です)


何故かjsp:includeでUnsupportedOperationExceptionになるんですが。
<jsp:include page="include.jsp" />と閉じると何事も無く実行され、
request.setCharacterEncoding("JISAutoDetect");をコメントアウトしても実行できます。

なぜでせう?

738 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:15:28 ]
>>734がすごいことを言っている件

739 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:24:31 ]
super.clone();使ってるから
v.elementData = this.elementData 
の代入すら必要ないんじゃないの?



740 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:28:47 ]
何かアプリケーションを作りたいと思ってJavaで開発用エディタを作ったのですが、
これを個人毎に文字の色とかコンパイラのURIとかの各種情報を保存して
起動時に設定するようにしようかと思ったのですが、
こういう設定の保存ってどういう形式で行うのが普通なのでしょうか?
「設定.txt」とかいう形で保存するのも何か変な気がします。

741 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 18:54:04 ]
サンプルプログラムでは、*.propertiesが多いね

742 名前:デフォルトの名無しさん [2008/06/02(月) 19:11:39 ]
そのclone()についてなんですけど、java.lang.NumberやStringなどはclone()実装されてないのがよく分からないんです。
コレクションの方はclone()あるのに、値の方はなんでないんでしょうか。

それもthis用のコンストラクタとでも言うのか、それ用のコンストラクタすら用意されてないのもあり、
もしコピーするならかなり遠回りな操作をしなければならないですよね。
イミュータブルだとしても、classもfinalのも多く、設計上に意図としてはインスタンスのコピーはするなってことなんですか?

743 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:22:01 ]
> イミュータブルだとしても、classもfinalのも多く、設計上に意図としてはインスタンスのコピーはするなってことなんですか?
Immutableなオブジェクトのコピーとって何したいの?

744 名前:デフォルトの名無しさん [2008/06/02(月) 19:31:05 ]
内部が変更できるかどうかじゃなくて、インスタンスのコピーの話なんですけど、ごっちゃにしてませんか?

745 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:33:23 ]
何したいとかじゃなくて、そもそもそのAPIがないなら何も出来ないでしょw

746 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:40:30 ]
>>740
サラッとスゴい事をおっしゃる。

747 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:47:31 ]
>>742
cloneを実装してないのは、たぶんイミュータブルなインスタンスをコピーできても、うれしいことが特に無いからじゃないかな
finalは、イミュータブルな性質を維持するために必要なことだから、仕方ない

748 名前:デフォルトの名無しさん [2008/06/02(月) 20:02:07 ]
>finalは、イミュータブルな性質を維持するために必要なことだから、仕方ない 

こういうこと平気で書いちゃうあたりが、イミュータブルとかextendsとかを分かってないんだろうね。
インスタンスとcloneも同じく、ごっちゃにしてるんだろうw

749 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:02:09 ]
>>742
もし仮にNumberやStringをコピーできるとしたら、それがどんな場面で役に立つ?



750 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:04:22 ]
>>741
ありがとうございます!
propertiesをキーワードにググって実装してみたところ出来ました!

>>746
すいません、やっぱり.txtで保存するのはおかしいですよね;
直感的に変なのは分かるのですが、テキストファイルだとデータと値の関係がないとか、
そういうことが.txtを用いない理由なんでしょうか?

751 名前:デフォルトの名無しさん [2008/06/02(月) 20:29:52 ]
>>749
仮にも何も、もう設計上出来ないんだよ。
まあ書いてもいいんだけどね(笑)
インスタンスをコピーするってことはどういうことなのかをよく理解すればいいんじゃないの?

752 名前:デフォルトの名無しさん [2008/06/02(月) 20:30:47 ]
>finalは、イミュータブルな性質を維持するために必要なことだから、仕方ない  

こういうこと平気で書いちゃうような人だしなぁw

753 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:58:23 ]
>>751
俺がバカだからか、よくわからないので教えてほしい。
インスタンスをコピーするってことはどういうことなんだ?
コピーなんかせずに同じインスタンスを使えばいいじゃないか?

754 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:00:45 ]
>>750
いや、スゴい事ってのは
>Javaで開発用エディタを作ったのですが、
の部分。
質問するより答える立場の人でしょ。

755 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:01:58 ]
>>721に戻ると、
・これは普通shallow copyと言わないのでは?

という話だよね。たしかに「オブジェクトのshallow copy」とは言えない。
フィールドにぶらさがったものを複製しているからね。
でも、「(このオブジェクトが表している/保持している)配列のshallow copy」ではあるでしょ。
参照の羅列としての配列を複製しているだけで、配列の要素をいちいち複製していないから。
〜 完 〜

てことじゃないのかい

756 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:04:53 ]
> 配列の要素

配列にぶらさがっているオブジェクト
と言った方がいいか

757 名前:デフォルトの名無しさん [2008/06/02(月) 21:21:20 ]
clone()したくローン先の方で変更したら、クローンもとのオブジェクト
でも変わる事が期待されるでしょ。
o2=(...) o1.clone ();
o1.set (1,val)
シャローコピーって書いてあるなら、このときo2, o1の保持してるvalは同じであってほしいよね。
今さらだから、APIドキュメントの方をそう書き直せばすむんじゃないの?
確かVector.clone()の記述はそんな風に書いてあった(jdk 1.5だけど)。
ドキュメントにうそ書いてあると、実装するとき困るんだよ。

758 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:25:47 ]
>>757
> clone()したくローン先の方で変更したら、クローンもとのオブジェクト
> でも変わる事が期待されるでしょ。

クローンを殴ったらクローン元も痛みを共有するわけですね、わかります

759 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:43:53 ]
>>721
> (The elements themselves are not copied.)

って但し書きの意図を汲めば、まー、まず迷わないと思うんだけどどうよ。
でも、ここで「elements」を「参照」ではなく、「参照先のインスタンス」だと解釈しなければならないってのが、
微妙といえば微妙なのかな。ふつうわかるんじゃね?名前を書き写さずに何が名簿のcloneなのかっていう。

>>757
> シャローコピーって書いてあるなら、このときo2, o1の保持してるvalは同じであってほしいよね。

全然思わない。(一応言っておこうw)



760 名前:デフォルトの名無しさん [2008/06/02(月) 21:58:51 ]
ああ、わりい。飯食ってた

>clone()したくローン先の方で変更したら、ローンもとのオブジェクト 

気がつかなったかけど笑えるね。たぶん自己破産の相談なのかな?

>全然思わない。(一応言っておこうw) 

長年使ってると、全然思うのが、まあ普通なんだけどw
その挙動がArrayListにふさわしくないなら、clone実装すんなってこと。もしくはAPI DOCのバグを書き直せ。
どうせ翻訳の人も見てんだろうしSUNに言っといてよ。頼むよ。

761 名前:デフォルトの名無しさん [2008/06/02(月) 22:03:40 ]
>>754

>Javaで開発用エディタを作ったのですが、 

実はTextAreaをaddしただけでも、偉そうに言えばこうもいえるんじゃないの?
どう凄いのかわかんないんだけど。

762 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:25:02 ]
>>760
一応言うだけ言ってみるけど、トリップつけてくれないかな

763 名前:デフォルトの名無しさん [2008/06/02(月) 22:27:39 ]
なんで?

764 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:28:17 ]
無視したいから

765 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:34:36 ]
>>760
>長年使ってると、全然思うのが、まあ普通なんだけどw

悪いけど風呂入ってくるから、全然思わないにもう一票入れておいてよ

766 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:39:21 ]
>>754,>>761
開発用「エディタ」なので、ホントIDEみたいに立派なもんじゃないです><;
インテリセンスとかキーワード色分けとかオートインデントとか
IDEの中で自分が欲しい部分だけ取って軽く書きたいときに使う用に作った程度です。

普段はC/C++畑でJavaは全然なので、勘違いさせてすいません。。

767 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:56:37 ]
質問です。
Component.createImage(int width, int height);
でcreateImageしたのですが、これに透過色を設定したgifファイルをdrawImageすると透過される(ハズ)の部分が白で塗りつぶされた状態になってしまいます。
試しにcreateImageを使わないでただgifファイルをdrawImageすると透過はされていたのでgifファイルには問題がないように思います。
また、createImageしたImageにgifファイルを書き込まずImageをdrawImageしても白で塗りつぶされてしまっています。


768 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:06:34 ]
>>767
component.getGraphicsConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
でイメージを作って、gifを乗せる前に
((Graphics2D)g).setComposite(AlphaComposite.Src);
するといいよ

769 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:17:10 ]
>>757
> clone()したくローン先の方で変更したら、クローンもとのオブジェクト
> でも変わる事が期待されるでしょ。
期待されない。

> 確かVector.clone()の記述はそんな風に書いてあった(jdk?1.5だけど)。
書いてない。
> Returns a clone of this vector. The copy will contain a reference to a clone of the internal data array,
> not a reference to the original internal data array of this Vector object.



770 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:20:26 ]
>>768
ご丁寧にどうもありがとうございます。
無事透過したまま書き込むことができました。

それにしても他のソースで使ってるコードなのに突然動作が変わるなんてなんだか怖いです。
精進します・・・。

771 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:25:59 ]
>>757 
> clone()したくローン先の方で変更したら、クローンもとのオブジェクト 
> でも変わる事が期待されるでしょ。 
それをしたいなら、o2=o1;でいいよーな。






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

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

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