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


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

★★Java質問・相談スレッド135★★



1 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 22:36:21 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    ttp://pc11.2ch.net/hp/
Webプログラミング ttp://pc11.2ch.net/php/
をご利用下さい。

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

前スレッド
★★Java質問・相談スレッド134★★
pc12.2ch.net/test/read.cgi/tech/1258793926/

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

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

82 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:26:51 ]
>>81
は?
同じメソッド名なのに、引数違うだけで戻り値違うとか頭おかしいだろjk

83 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:35:28 ]
ググりながらもブロック崩しの雛形みたいなものを作りましたが、疑問があります。
ttp://www1.axfc.net/uploader/File/so/37222

Ball、RacketクラスでMainPanelクラスのオブジェクトを作っていないにも関わらず、
MainPanel.HEIGHTのようにMainPanelクラスのフィールドを参照できるのは何故でしょうか。

自分で調べた結果staticだからではないかと結論に至りましたが、自信が持てないため質問させていただきました。
どなたかご教示下さい。

84 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 19:07:24 ]
>>82
おまえ使い方理解してないでしょ
ポリモルフィズムの恩恵は特徴を抜き出し、
共通して使える処理のメンテナンスを容易にすることにある。
C言語でいうとこのqsortに使うコンペア関数なんかと同じ。

共通して使えない処理は公開しないように作るからむしろバグは減る。

85 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 19:50:35 ]
>>83
その通り
static がついたクラスメンバ変数は、オブジェクトに依存しない

86 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:08:36 ]
JTextArea上にtxtファイルの内容を表示させるにはどうすればいいですか?

87 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:24:34 ]
>>78脳には多態勢という用語があり、それはいわゆるオーバーロードを意味する言葉である。

88 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:25:58 ]
JTextArea・・・コンストラクタでもappendでもinsertでもお好きな方法で。

89 名前:83 mailto:sage [2010/01/11(月) 20:41:09 ]
>>85
ご回答ありがとうございました。

90 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:41:30 ]
それ以前にtxtファイルの読み方が分からないという気もするな・・・
BufferedReader in = new BufferedReader(new FileReader("input.txt"));
文字化けするなら
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("input.txt"),"UTF-8"));
と文字セットを指定。



91 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:50:28 ]
>>88>>90
ありがとうございます。Filereaderでテキストファイルを読み出してやろうとしていたのですが、そのあと
ストリームを開いてJTextAreaに書き出すのがよくわからないのです。
重ね重ね申し訳ありません。よろしくお願いします。

92 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:55:29 ]
コンパイルとビルドって同じ意味ですよね?

93 名前:デフォルトの名無しさん [2010/01/11(月) 21:01:27 ]
>>84
メンテがしやすいっていうのはわかってる
これが重要だということもわかってる
(そりゃメンテする人間なんて、
 メンテするまでソース見たことないようなやつらばっかだろうから、
 そういう特徴があれば間違いなくやりやすいさ)
ただ、メンテのことまで考えて、きちんと多態性を理解してソース組んでるJavaプログラマが
どれだけいるかが疑問なんだよ
曖昧なまま、多態性なんて言葉使ってソース組んでも、わかってないやつがどっかで絶対バグ出すだろ
(要は多態性の恩恵を受ける側じゃなくて、与える側の問題)

>>87
いわゆるオーバーロードが多態性を示す一番の特徴だと思ったから引用しただけだボケ

94 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:11:34 ]
勘違いしとるのー。
オーバーロードの無いVBAでも多態性使えるんだぜimplement文で。

95 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:17:06 ]
>>93
フレームワークを書く人とビジネスロジックを書く人のスキルが同じである必要は無いよ。
業務ルールとしてある共通クラスを継承してから、ガイドに沿ってコードを書いてねって指示するだけ。

96 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:22:52 ]
>>95
まぁその辺の分担がしっかりしてて、各担当が後々のこと考えて設計してりゃ大丈夫だとは思うけどさ
実際、それだけのスキル持ってるやつっている?

97 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:22:59 ]
>>95
あっそ

98 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:23:16 ]
異なる処理を共通化されたインタフェースで扱えるのが多態性の特徴
異なるインタフェースを同じ識別子で扱うオーバーロードじゃ逆だハゲ

99 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:29:56 ]
なんという正論
世の中のJava入門書の著者にも言ってやってくれ

100 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 22:46:26 ]
オーバーロードと多態性って関係なくね?



101 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 22:52:00 ]
関係なくね?


102 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 04:58:15 ]
くね?

103 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 05:48:37 ]
なくなくね?

104 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 06:15:39 ]
     しばらく くねくねでお待ちください。

             ヽ)∵)ノ
             (  (
              )  )

105 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:48:17 ]
嫌です

106 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:57:58 ]
             ヽ)'A`)ノ
             (  (
              )  )

107 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 11:00:11 ]
SJC-WC取ったからサーブレットでサーバしてみたいです><

レンタルホームページと同様で、作ったファイル(WAR)を
レンタルサーバに転送するだけで動くの?

108 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 14:37:31 ]
>>107
Tomcat インスコすれ

109 名前:デフォルトの名無しさん [2010/01/12(火) 15:19:13 ]
>>64
ありがとうございました

110 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:05:10 ]
>>109
御礼禁止



111 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:50:37 ]
JEditorPane とかいつの時代か分からないような古い HTML ソース吐くんだな。
xhtml 作ってくれれば使えるのに。。

112 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:59:56 ]
www.koiroha.org/xmllib/
その HTML を HTML パーサに食わせて、その DOM から <font> なんかを適当に置き換えてやればおk

113 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:17:41 ]
swingのコード(JDK)を読んでいると、firePropertyChange("document", old, doc);みたいに
firePropertyChange()がよく出現します

addPropertyChangeListener()とfirePropertyChange()は対になっていると思うのですが、
firePropertyChange()しか使われていません

firePropertyChange()どこにイベントを通知していのですか?

114 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:22:31 ]
addPropertyChangeListener() の対になっているのは removePropertyChangeListener()。
firePropertyChange() はプロパティの変更を誰かに通知するためのものだから Swing 内で使っている。
その通知を受けたいプログラム (Swingの利用者) が addPropertyChangeListener() でリスナを登録する。

115 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:40:37 ]
Javaでジェネリックなツリーが使いたいんだけど
英語圏ぐぐっても独自実装のものしか出てこない
どうしてJDKに実装されてないの?

116 名前:デフォルトの名無しさん [2010/01/13(水) 00:56:45 ]
【IT】人気プログラミング言語ランキング…PHPがC++を抜く 1位はJava [10/01/12]
anchorage.2ch.net/test/read.cgi/bizplus/1263298235/

117 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:33:03 ]
ジェネリックなツリーといわれても
javax.swing.tree.DefaultTreeModel とか org.w3c.dom.Document は?

118 名前:デフォルトの名無しさん [2010/01/13(水) 13:24:39 ]
読み込んだファイルがEUC-JP,Shift_JIS,UTF-8のいずれでもUTF-8にする
ってJavaでどうやれば出来ますか?

String.getBytes("UTF-8");
を使うと、もとからUTF-8の場合に文字化けしてしまいます

119 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 14:13:52 ]
独習Javaって本は何年発行だコラ

120 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 14:42:36 ]
>>118
> 読み込んだファイルがEUC-JP,Shift_JIS,UTF-8のいずれでもUTF-8にする
> ってJavaでどうやれば出来ますか?

それは、読み込むファイルのエンコーディングがどれかわからないということ?
JISAutoDetectはUTF-8に対応してない気がするし、自分で判定コードを
書くしかないのでは。

> String.getBytes("UTF-8");
> を使うと、もとからUTF-8の場合に文字化けしてしまいます

それで得られるのはUTF-8のバイト列なんだから、UTF-8対応の環境で見
ないと化けるよ。






121 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 15:51:20 ]
ちょっと混乱しているのですが、
スーパークラスなどで定義したクラスをサブクラスでインスタンス化するまでは
分かったのですが、そのサブクラスを配列して要素数で参照できる様にするには
どうすればいいのでしょうか。

122 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 15:55:35 ]
[ ]つけて定義すればOK

123 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 15:55:53 ]
>>121
SuperClass[] array = new SubClass[100];
SuperClass obj = array[3];

という意味?

124 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 16:10:18 ]
>>123
1行目と2行目の間にオブジェクトを作らないとだめ
array[3]=new SubClass();
が必要。

125 名前:121 mailto:sage [2010/01/13(水) 16:49:26 ]
ご回答ありがとうございます。
しかし、私は勘違いしていたみたいで、サブクラスはextendsなどでスーパークラスをオーバーロードして
具現化しそれをfor文などで配列に入力するのだと思っていました。

そこで、申し訳ないのですが以下のスーパークラスの場合はサブクラスの定義と
インスタンス化はどうすればいいのでしょうか?
class hani{
String kantaiName;
int Xaxis;
int Yaxis;
int Xwide;
int Ywide;
String Media;
}

126 名前:デフォルトの名無しさん [2010/01/13(水) 16:55:09 ]
>>125
サブクラス定義は
class SubClass extends SuperClass{}
インスタンス化は>>123-124参照

127 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 17:13:28 ]
>>125
クラス名は大文字で始めて、変数名は小文字から始めた方がいいよ
あと、class Hani のコンストラクタが何にもする必要がなくても
protected Hani(){} 位は入れておいた方がいい。
で、サブクラスで
class SubClass extends Hani {
public SubClass(){super();}
}
とする。

128 名前:121 mailto:sage [2010/01/13(水) 17:15:18 ]
僕のイメージが間違っている様な気がするので確認させていただきます。

class SubClass extends SuperClass{}でサブクラスをインスタンス化して

その後、サブクラスを配列に以下のように入力すればいいのでしょうか?

SuperClass[] array = new SubClass[100];
for(int i=0; i<100; i++){
array[i]=new SubClass();
SuperClass obj = array[i];
}

ご面倒をお掛けして申し訳ありません。

129 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 17:17:52 ]
>>128
クラス定義では絶対にインスタンス化はできない。
あと、for 文中の SuperClass obj = は無意味なので、
これでいいか悪いかは判定不能。

130 名前:121 mailto:sage [2010/01/13(水) 17:27:00 ]
>>129
すみません、以下のような感じでサブクラスのインスタンス化をしようとしています。
class kanji extends Hani{
String kantaiName = "円";
int Xaxis = 60;
int Yaxis = 40;
int Xwide = 120;
int Ywide = 50;
String Media = "radio";
}



131 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 17:33:55 ]
>>130
Hani instance = new kanji();
instance.kantaiName = "円";
instance.Xaxis = 60;
/* 中略 */
instance.Media = "radio";

ってことをやりたいのか?

132 名前:121 mailto:sage [2010/01/13(水) 17:37:37 ]
大変申し訳ありません。インスタンス化とサブクラス化を
サブクラス化したものを具現化することをインスタンス化と思い込んでいました。
正しくはクラスを定義した時にインスタンス化してそれを配列に出来ないかという質問をすべきでした。
皆様、本当にすみさせんでした。

133 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 20:03:25 ]
>>132
ひょっとしてこう?
class A {
public A(){}
private static A[] a = generate(100);
private static A[] generate(int n){
A[] result = new A[n];
for(int i=0; i<n; i++){
result[i]=new A();
}
return result;
}
}

134 名前:113 mailto:sage [2010/01/13(水) 21:09:58 ]
>>114
thx

135 名前:デフォルトの名無しさん [2010/01/13(水) 21:43:35 ]
>>133
それはインナークラス

136 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:02:56 ]
public static void main(String[] args)
public static void main(String args[])

2通りの書き方を見かけますが、どちらを使うべきでしょうか?
単純に好みの問題ですか?

137 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:08:58 ]
>>136
前者

138 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:13:16 ]
>>137
ありがとうございます。前者を使うことにします。こっちの方がわかりやすいですね。

139 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:16:35 ]
>>135
インナークラスって
class A {
class B{
}
}
とかいうのじゃないの?

140 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:20:10 ]
>>138
後者で統一しないと怒られる古臭い会社もある
CがJavaより偉いと思ってる人達



141 名前:デフォルトの名無しさん [2010/01/14(木) 00:00:28 ]
>>140
えらい云々より変化について行けない人達って言ったほうが近いかも

142 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 00:30:25 ]
>>141
java入門書にはString args[]って書いてあったのでそのまま憶えた。違いの理由教えて!

143 名前:121 mailto:sage [2010/01/14(木) 00:36:14 ]
皆様ありがとうございました。

144 名前:デフォルトの名無しさん [2010/01/14(木) 00:41:58 ]
>>142
ただ単に慣れから脱しきれない人が書いた本てだけの話

145 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:51:00 ]
解答者がアホ過ぎ…

146 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 08:38:01 ]
>>145
具体的に指摘できない無能な方は黙っていていただけないでしょうか?
貴方がいるだけで迷惑です。

147 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 08:56:38 ]
>>145
もう一度言いますが、無能な方は黙っていていただけないでしょうか?
貴方がいるだけで迷惑です。

148 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:09:10 ]
>>145
何度でもいいますが、無能な方は黙っていていただけないでしょうか?
貴方がいるだけで迷惑です。

149 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:28:34 ]
>>142
ツールでソース解析するときに String[] args のほうが、微妙に簡単な気がする。
ほんとに微妙な差ではある。

150 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:52:42 ]
>>149
ほへ?



151 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:14:16 ]
String[] args は型、 String args[] はシンタックスシュガー(キリッ

152 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:41:07 ]
javax.swing.text.AbstractDocument#putProperty(Object key, Object value)
javadocを読んでみましたが、putPropety()がどのような働きをするのかわかりません
ひとまず、改行関係でputPropety()を使っているな〜程度のことはわかります
ヒントをください

153 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:51:08 ]
>>152
簡単なプログラムを組んでテストしてみるとか

154 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:06:25 ]
>>150
解析ツール側での正規表現。

155 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:19:39 ]
String[] args → 「文字列型の、配列の、args」

String args[] → 「文字列型の、args、は配列要素でしたプギャー」

156 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:11:31 ]
自前実装したPaintインスタンスをGraphics2D#setPaint()で与えると極端に重くなるようです。
何か解決策はあるのでしょうか?自分で書いたことがある人などいらっしゃいましたらよろしくお願いします。
よくわかりませんが、アンチエイリアスOFFと組み合わせると遅くなるようです。(ONだと速かった)
コードは下記になります。sdk 6

ttp://codepad.org/exP0Y1C3

157 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:12:38 ]
※グロ注意です

158 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:50:51 ]
>>155
同じもので初期から許されてはいたんですけどね

結局グループで作ることを前提にしてるかどうかの違いですよね

159 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 01:27:05 ]
>>146-148
なにこの煽り?笑ってしまった 
機会があったら使ってみたい

160 名前:デフォルトの名無しさん [2010/01/15(金) 03:00:50 ]
>>145
迷惑です。



161 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:22:56 ]
楽しいか?

162 名前:デフォルトの名無しさん [2010/01/15(金) 09:07:53 ]
これでfalseって出るんだけどどういう可能性が考えられる?
ソースファイルはutf-8

Pattern pattern = Pattern.compile("H");//UNICODE_CASE指定してもfalse
Matcher matcher = pattern.matcher("Hello World.");
System.out.println(matcher.matches());

163 名前:162 mailto:sage [2010/01/15(金) 09:18:34 ]
自己解決

164 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:52:30 ]
>>156
そういうものです
元々Java2Dは遅かったのですが、特定の状態 (特定のStroke、特定のPaint、特定のComposite等) の場合は
本来のJava2Dパイプライン (Stroke#createStrokedShape, Paint#createContext, PaintContext#getRaster, Composite#createContext, CompositeContext#composite等)
をすっとばして直接描画を行う最適化がなされ、ハードウェアアクセラレーションも効いて速くなります
自作のクラスに対してはそのような裏技を使えないので、従来通りの処理が必要になり、遅いままです
別のBufferedImageに描いてからそれをTexturePaintするとか、円形のクリッピング領域を設定してdrawImageするとか、
自作のクラスを使わずに済む方向を模索した方がよいです

165 名前:デフォルトの名無しさん [2010/01/15(金) 10:55:10 ]
解決経緯を書けやゴルァ!

166 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 11:15:02 ]
>>162-163
自己解決してるがfindを使えと

167 名前:162 mailto:sage [2010/01/15(金) 12:00:35 ]
".*H.*"
にしたら見つかりました
いくつかの解説サイトでは"H"だけで見つけれるみたいに書かれてますが
解決手段が見つかったのでこれ以上考えても仕方ありません。

168 名前:デフォルトの名無しさん [2010/01/15(金) 12:08:09 ]
interfaceでメンバ変数作ると、static finalだからinterfaceですぐ代入しないといけませんよね?
つまり、実装クラスでinterfaceで定義されたメンバ変数に代入する事は出来ませんよね?
あと、interfaceでstaticなメソッドを宣言(staticなアクセサを作りたい)する事は出来ませんよね?

要するに、interfaceにstaticなフィールドを作りたいんだけど、
値は実装クラスによって異なる。(一度定義すれば変わらない)
interfaceにstaticなアクセサか実装クラスから代入出来るstaticなフィールドを宣言したい。

これが可能なのかどうか、代わりにどんな手段があるのか教えて下さい。

169 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:09:15 ]
>>167
だから、findを使えと

170 名前:168 [2010/01/15(金) 12:12:07 ]
追加で状況説明。

絶対に変わることの無い定数が各実装クラス全てにあって、
定数だからstaticなアクセサ(あるいはフィールド直)で参照したいんですが、
同時に各実装クラスにあるんだからinterfaceにまとめたいんです。
staticにしなければ可能ですが、その定数を取得するためだけに実体化はめんどくさい。



171 名前:sage [2010/01/15(金) 12:13:22 ]
>>156
例えば、createBufferStrategy(3)とか、
createBufferStrategy()の引数を変更してみては?

それにカスタムPaintをテストしたいだけなら、
Paintのテスト自体には不要なBufferStrategy等の
余計な処理をしないで、paint系メソッドをオーバーライドした
JComponentを使用してみては?

paint系メソッドをオーバーライドしたJComponentで
同等のコードを試したら、さくさく動きましたよ。

172 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:25:24 ]
>>168
もうちょっと詳しく。
interface A {}
class B implements A { static final int X = 10; }
class C implements A { static final int X = 20; }
のようにAの各実装クラスごとに値の異なる定数があって、この2つのXをなんとかしてAにまとめて
class D {
public static void main(String[] args) {
System.out.println(A.X);
}
}
のようにstaticにアクセスしたいってこと?

173 名前:168 [2010/01/15(金) 12:31:10 ]
>>172
YES!

今試してるんですが、interfaceで定義したstatic変数は、
実装クラスの同名static変数と同一で、
片方の値を変えればもう片方も変わります。
staticだから当然ですが。

実装クラス毎に異なる値で、でも全ての実装クラスが同じ名前でアクセス出来るstatic変数を持ちたい。
interfaceにまとめないのなら話は簡単ですが、
まとめれないとなると、interface型で実体化して参照したコードでそのstatic変数は使えない事になります。

ちなみに出来ればアクセサを介したい。

174 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:32:18 ]
質問です。
今、ミニゲーム集のタイトル画面のようなものを作成しているのですがゲームの選択のところで悩んでいます。
「タイトル画面内のゲーム名の書かれたボタンを押す」→「そのゲームを起動する」のような処理を行いたいのですが、どういった方法があるでしょうか?
理想としてはボタンのアクションにjarファイルの起動を関連付けられれば一番良いのですが・・・。

もし、これらの方法を知っている方がいらしたら教えていただけないでしょうか?
よろしくお願いします。

175 名前:168 mailto:sage [2010/01/15(金) 12:36:48 ]
>>172
あ、1箇所訂正があります。
参照するコードは、
A.Xだけではなく、B.X 、 C.X もありえます。

176 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:52:13 ]
なんでstaticでアクセスしたいんだ?

177 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:52:55 ]
>>168
staticってことは、何も実体化してなくてもアクセスできるわけだけど
その場合、何が得られることを期待しているのでしょうか
つまり、何もnewせずにmainでいきなり
public static void main(String[] args) {
System.out.println(A.X);
}
ってやると、何が出力されることを期待しているのでしょうか
10? 20? それとももっと何か別のもの?
あるいは、何もnewしないうちは0で、BかCをnewした時点で値が確定してほしいとか?

178 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:54:24 ]
static finalなフィールドって実装クラスで上書きできねんだっけ?

179 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:06:56 ]
オブジェクト型ならfinalって参照先の固定でしょ?
初期値がnullなら一回だけnewやらを許可しないんだっけ?
今試せないから知らないけど。

プリミティブ型なら無理そうだけど。

180 名前:168 mailto:sage [2010/01/15(金) 13:10:03 ]
>>177
class B,Cでstatic finalな変数Xをそれぞれ定義します。
class B,Cをインスタンス化して参照するクラスがあります。
class Aを期待して参照するメソッド(以下RefAメソッド)もあります。

RefAに対しては、RefAの該当メソッドを利用するクラスが、
BとCどちらのオブジェクトを渡すか選べる事になります。

もしmain()からいきなり呼ぶとすれば、
B.XかC.Xになります。(mainは他からメソッドとして呼び出されないため)
このときB.XとC.Xは同時に利用する可能性がありますが、
異なる値を設定出来ない問題が発生します。

同じ名前で実装クラス毎に異なる値を持ちたいと言う事です。
そうすれば、BでもCでもどちらでも渡せるメソッドを書く事が出来ます。
そういう値をstaticにする事は可能なのかな、ということです。

現状のアイデアとしては、
Aにはstaticなフィールドを作らずに非staticなアクセサだけを定義しておいて、
B,Cにstaticなフィールドを定義し、同時に非staticなアクセサも実装する事です。
こうすればA型を期待したコードもかけるし、
B,Cに対してstaticな参照も出来ます。

と言うかこれが答えで良いかもしれません。



181 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:27:55 ]
public interface I {

public static final int a = 100;
}

public class C1 implements I {

public static final int a = 200;

}

public class C2 implements I {

public static void main(String[] args) {
System.out.println(C1.a);
System.out.println(C2.a);
}
}

実行結果
200
100

これでええんかな?

182 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:33:45 ]
interfaceのstaticフィールドとかenumが無かった頃の遺産でしょ






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

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

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