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


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

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



1 名前:デフォルトの名無しさん [2008/03/01(土) 18:16:51 ]
プログラミング言語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質問・相談スレッド112【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1202467704/

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

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

252 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:17:45 ]
乱数に限定した話なら乱数シードを外から渡すようにすれば良いだけの話。
再現性が保てない設計は失敗と言っていい。

253 名前:239 [2008/03/07(金) 18:20:36 ]
>>252
再現性が保てない設計は失敗なんですか。
確かにぼくもこれではテストが出来ないではないかと
すごく不安になってました。
乱数シードを外から渡してみます。

もしぼくが設計者だったら大火事でしたね。

254 名前:239 [2008/03/07(金) 18:22:40 ]
コーディングの段階からjavadocに基準した
コメントを書いておくべきですか?
みなさんはどうなされていますか?

255 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:22:41 ]
>>249
イニシャライザが何か初期化してても、とりあえずそれを無視して、
テスト用の盤面に書き換えてからテストすればいいんじゃないか

256 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:35:59 ]
>>254
場合による。

ライブラリとかみたいにドキュメントはきっちりしてた方がいい場合もあるし
アプリケーションで要求変更がばしばしくる案件なんかではドキュメント書いても
次の日には書き換えなきゃいけなくなったりで割に合わない場合もある。

257 名前:239 [2008/03/07(金) 18:36:36 ]
>>255
それが可能な設計ではないという事です。
でも、これは具体的な話ですが、
initBoard(int i, int j, int[][] bombBoard)
とかいう風にします。
今は
initBoard(int i, int j, int bombNum)
としています。これは爆弾の数から内部で爆弾が配置されたボードを弾いて、それを使って
Boardをinitializeしようという設計だからです。
でもこれは爆弾ボードの生成で乱数を使ってしまうので、再現性がありません。
しかし、上記のメソッド定義だと、ユーザが好き勝手なテーブルを引数にしてしまいます。
これはユーザに使い勝手がいいとは言えない気がします。
例えばもし縦横の配列数が違った場合は、Exceptionを出して処理を終了させればいいのでしょうか?

258 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:43:02 ]
>>257
>initBoard(int i, int j, int[][] bombBoard) 
>とかいう風にします。 
>今は 
>initBoard(int i, int j, int bombNum) 
>としています。

それ両方あればいいじゃん
ユーザは使い勝手の良い方を選んで使えばいい

259 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:44:47 ]
initBoard(int width, int height, int bombNum, long seed) で良いじゃん。

260 名前:239 [2008/03/07(金) 18:45:50 ]
>>258
なるほど、オーバーロードがありましたか。
その発想は気づきませんでした。
確かにJavaAPIにある多くのライブラリには複数イニシャライザが設定されてるものがありますね。
でも書き直しですね。このままだとDRYに反する。



261 名前:239 [2008/03/07(金) 18:54:11 ]
>>259
seedを引数にするという発想は正常ですか?
自由な配列を入れさせてもし大きさが違っていたら
Exceptionを発行して弾くというのは
少し感覚的におかしい気がします。
「型が違う」「クラスが違う」という弾き方は正常かと思いますが、
配列の大きさが違う、という事で弾かれるのは、
外から見てる人が、引数に対してすでに設定したBoardの大きさを意識して
入れなくてはいけない事になります。
これは使い勝手がいいとは言えないし、
おそらく正しい設計に基づいているであろう
GUIのライブラリがそういうものがあったかどうか考えても
なかったように思えます。
(もしあったら教えてください)

262 名前:239 [2008/03/07(金) 18:55:17 ]
あ、でもそれじゃseedがどういう時にどんな配列が出来るか
は予想がつかないのでテストケースが書けないですね・・・

263 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:58:04 ]
>260
DRYだろオーバーロードは基本的に。
void a(int i) と void a(int i, int j)
があったとすれば、前者の実装は
a(i, 0)
のように記述するだろ?

264 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:01:00 ]
>>261
乱数のシードを渡すくらいなら Random オブジェクトを渡した方がいいと思う
そうすれば SecureRandom を使うこともできるし (セキュアな盤面が必要な状況なんかないだろうけど)、
テスト目的に Random を継承してランダムでない値を返すようにしたオブジェクトを渡すこともできるし

265 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:10:59 ]
>>235
言語仕様的には strictfp が付いてなければ IEEE754 に従っている保証はない
ちなみに、IEEEの倍精度は精度は53桁だけど仮数部は52ビットだった気が

266 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:14:07 ]
優秀でない人が実装すると設計が無駄になる

267 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:19:17 ]
>>264
Random を継承してランダムでない値を返すくらいなら、
単に、数値を返すメソッドを持ったインタフェースを渡した方がいいと思う


268 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:22:29 ]
>>254
コメントはテストケースにしっかり書いた方が良いよ

269 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:27:09 ]
>>262
どういうシードを渡した時にどういう配列が出来るかは、どういう乱数が発生するかと等価だから
乱数生成ルーチンのテストにしかならん。除外可能。でなければ乱数生成を自前でやる必要が
出て本末転倒な事になる。異なるシードを与えたときに異なる配列になることが確認できれば十分
(もちろんその整合性も)。

というかホワイトボックステストがしたいのかブラックボックステストがしたいのかはっきりせれ。

270 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:29:13 ]
つうか、そこまでするんだったら、
interface InitBoard {
int width();
int height();
boolean bomb(int x, int y)
}
などというインタフェースを渡せばいいやん



271 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:41:35 ]
>>265
>>235の例だけでいえば定数式だから strictfp ついてなくても
0 だったり true だったりは言語仕様で保証されてる。

272 名前:239 mailto:sage [2008/03/07(金) 19:41:41 ]
>>270
インターフェイスを使うメリットが分かりません。
インターフェイスは、そこに書いてあるメソッドに実装を強要するだけであり
なぜこの場面で使わないといけないのかが分かりません。

273 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:42:49 ]
「エンジニアリング設計の基準を実際に満足することのできる唯一のソフトウェアドキュメントはソースコードだけだ」
と Jack Reeves 様が言っております。
ソフトウェアで巷で言われている「設計」などというものは
他の工学では単に設計の骨組みに過ぎないのです、たぷん

274 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:44:13 ]
上にもいろいろ書いてあるだろ?
インターフェイス使えば同じ機能でも別の実装が可能になるんだって。
もう少し自分でいろいろ試行錯誤するべきだと思うよ。

275 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:46:44 ]
マインスイーパーのマス程度にポリモーフィズムはいらんだろw
必要になったとすればもうそれは別のゲームになってるから設計からやり直したほうがいい。

276 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:57:15 ]
javaじゃなくて設計の話になってるな。

277 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:04:12 ]
>>272
インターフェースを使わないメリットが分かりません。
そこに書いてあるメソッドを呼び出せれば Board の実装が可能なのに
なぜこの場面で使うといけないかが分かりません。

278 名前:デフォルトの名無しさん [2008/03/07(金) 20:14:08 ]
JavaのClass.getDeclaredClasses()の使い方について質問させてください。
あるクラスで宣言されているクラス名を獲得しようとしているのですが、思うように動いてくれない状況です。
以下のようなテストコードを作ったのですが、

public class Hello {
public String message=new String("Hello");

public static void main(String[] args){

Hello hello=new Hello();
Class helloClass=hello.getClass();
Class[] classes=helloClass.getDeclaredClasses();

System.out.println("Num of Classes "+classes.length);
for(Class cls:classes){
System.out.println(cls.getName());
}
}
}

自分の想定では

Num of Classes 1
java.lang.String

という表示が出ることを期待していたのですが、実際の出力は

Num of Classes 0

となってしまい、クラス名の配列を獲得できません。
ドキュメントを読んだりネットを検索しても理由が分からず、お知恵を拝借したい次第です。
ちなみに、JDKは1.6.0_04を利用しています。

279 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:22:54 ]
>>278
getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
メンバーとして宣言されたクラスおよびインターフェイスを得る。

よーするに、
public class Hello {
 public static class Foo{}
 public static void main(String[] args){
  System.out.println(Hello.class.getDeclaredClasses().length); //->1
  System.out.println(Hello.class.getDeclaredClasses()[0]); //->class Hello$Foo
 }
}

280 名前:278 mailto:sage [2008/03/07(金) 20:31:08 ]
>>279
>getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
>メンバーとして宣言されたクラスおよびインターフェイスを得る。

さっそくのご回答ありがとうございます。
理解しました。なるほど、そういうことだったのか…

私がやりたかったのは前者だったのですが、
あるクラスのメンバとして宣言されている(has a関係の)クラス名を取得する方法という方法は
あるのでしょうか?




281 名前:デフォルトの名無しさん [2008/03/07(金) 21:22:44 ]
突然ですがすみません。
最近VistaのBasicにJava6update5をインストールしてから、
Yahooオークションの詳細な残り時間が表示されなくなるばかりか
ブラウザが固まってしまいます。
私だけでしょうか。
help.yahoo.co.jp/help/jp/auct/bid/bid-24.html
このヘルプ通り設定してもダメでした。

282 名前:デフォルトの名無しさん [2008/03/07(金) 21:29:20 ]
あなただけです

283 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:37:06 ]
内部クラスについて教えてください。
public class Class2 {
  public static void main(String args[]){
    new Class2().sub2();
  }
  int a = 100;
  public void sub2() {
    new Class3().printPrintln();
    new Class4().printPrintln(this);
  }
  class Class3 {
    void printPrintln() {
    int a = 1000;
    System.out.println(a);
    //System.out.println(this.a);
    }
  }
}
class Class4 {
  public void printPrintln(Class2 variableClass2) {
    System.out.println(variableClass2.a);
  }
}
のコメントアウトされている行で、Class2のaを取り扱いたいのですが、
不可能でしょうか?thisのような何かは存在しませんか?

284 名前:デフォルトの名無しさん [2008/03/07(金) 21:39:08 ]
存在します

285 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:54:29 ]
>>280
> あるクラスのメンバとして宣言されている(has a関係の)クラス名を取
> 得する方法という方法はあるのでしょうか?

java.lang.ClassのAPIリファレンスを眺めて、それでもわかりませんか?



286 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:58:48 ]
>>281
うちでも出た。IE7 + Java6u5。Javaコンソールに
java.lang.ClassFormatError: Incompatible magic value 1011373133 in class file default
って出て、リロードすると固まる。
Operaだとちゃんと表示されるんだよね。IE用Java Plug-inの問題かも。
つうか、ヤフオクのアプレットのclassファイル、古くない?version 45.3 ってjava1.1かよ…

287 名前:278 mailto:sage [2008/03/07(金) 22:00:51 ]
>>285
すいません。分からないです。

当初はgetDeclaredClasses()じゃなくてgetClasses()使ってたんですが、
それでうまく行かなかったのでgetDeclaredClasses()を使って、やはりダメで…という状況です。


288 名前:デフォルトの名無しさん [2008/03/07(金) 22:04:12 ]
>>286
そうですか。
さきほどアンインストールしたら直りました。
失礼しました。

289 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:11:39 ]
Javaプログラムのデプロイとアップデートについて質問させてください。
ローカルの*.classファイルが新しいものかどうかをチェックするには
どのような方法があるでしょうか?

ファイルのタイムスタンプでよいかと思ったのですが、ユーザがタイムスタンプを
書き換えるようなアーカイバを利用していた場合に対処できません。

.classファイルに外から見てわかるような内部バージョン番号をつけることはできるのでしょうか?

290 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:17:40 ]
JAR にしてマニフェストに書く。



291 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:21:39 ]
>>287
getFields?

292 名前:278 mailto:sage [2008/03/07(金) 22:37:12 ]
>>291
そうか、その手があったか!

import java.lang.reflect.Field;

public class Hello {
public String message=new String("Hello");

public static void main(String[] args){

Hello hello=new Hello();
Class helloClass=hello.getClass();
Field[] fields=helloClass.getFields();

System.out.println("Num of Classes "+fields.length);
for(Field fld:fields){
System.out.println(fld.getType().getName());
}
}
}


で、実行

Num of Classes 1
java.lang.String

必要な結果が得られました。ありがとうございました。

293 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:53:16 ]
>>290
おお、Jarでまとめるのもひとつの手ですね。タイムスタンプ署名もつけられるようですし。
ただその場合、アップデート時にはJarごと更新する必要がありますよね?
あまり大きなJarだと問題が出そうです。

更新されているclassファイルのみ更新する方法がないものでしょうか・・・

294 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 23:36:29 ]
問題が出るような大きなJarって何Gくらいなの?

295 名前:デフォルトの名無しさん [2008/03/08(土) 00:18:32 ]
3メガぐらいで十分大きいんじゃん

296 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:40:41 ]
>>295
GBクラスではないです。大きくても100MBいかないぐらいまででしょうか。
でもクライアント数が多いとまるごとアップデートは現実的ではないと思いまして。

297 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:44:05 ]
クラスファイル等のリソースを設計、実装、運用などに合わせて分類し、それを元にjarを分ける

298 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 02:52:26 ]
Javaこそ、このあたりの自動更新機構/ツールが備わっていてもよさそうなものだが

299 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 03:05:43 ]
つ Java Web Start

300 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 08:12:22 ]
Propertiesを継承して俺俺Propertiesを作っています
getProperty(key)をオーバライドして取得した値がnullの時
exceptionを投げたいのですがPropertiesにthrowsが無いからダメと怒られます

こんな時どうすればいいですか?




301 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 08:14:14 ]
RuntimeException を投げる

302 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 08:18:37 ]
RuntimeException又はそれを継承したExceptionを投げる

303 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 08:31:43 ]
nullチェックした方で任意の例外投げる

304 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 08:35:56 ]
>>301-303
ありがとうございます。
なるほど、UserExceptionを継承したのを投げてたのですが
RuntimeExceptionを継承したのを投げたらいけました。




305 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:00:19 ]
>304
それはあまりよくない設計
PropertiesをラップしたMyPropertiesを作る方がいい
継承はほどほどにな

306 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:11:26 ]
>>305
それは考えたのですが
カバーするメソッドが多くなるので
どうかなと思ってやめました

307 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:13:35 ]
>306
そんなに多いか?
利用側に関してはgetProperty くらいでしょう使うのは。

初期化とかは内部で閉じるから、余計なパラメータ等を設定されるのも防止できるぜ。
不要なものまで公開しない方がいい。

308 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:33:46 ]
>>306
ふむ…確かに多いが、eclipse なら、delegate対象を選択して、
メニュー:Source > Generate Delegate Methods...
で、必要なメソッドを選んで一発終了ですがな。

309 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:28:26 ]
重い以前に回線が切れるのは何でですかね?
ダウンロードした瞬間切れるんですが・・・。

310 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:22:39 ]
>>308
それっぽいのがあるなーと思ってはいたのですが
使い方解らず・・・
そっちに変更します

ありがとうございました



311 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 15:44:39 ]
今までC#をやってきて、似てると噂を聞いたことのある
Javaに手をつけてみようかと思い、とりあえず
Java SE 6とEclipseをインストールしてみました。

あと何か入れておいたほうが良いものとかあります?

312 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 15:50:42 ]
>311
C#でGUIとかやっていたならば、NetBeans6を使ってSwingをいじった方が感覚的に近いかも知れん
後はWebアプリを作りたいのか、GUIアプリを作りたいのか、ちょっとしたCUIアプリなのかで入れるものは変わる
CUIならEclipseで十分。

313 名前:311 mailto:sage [2008/03/08(土) 15:56:31 ]
Webアプリを作ってみたいですね。

Webアプリを作るには何がいるんかな

314 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:04:37 ]
「Webアプリ」つっても >>311>>312 で抱いているイメージが違いそうだな

315 名前:デフォルトの名無しさん [2008/03/08(土) 17:25:50 ]
java で作ったプログラムを配布したいんですけど、
.jar の状態で配布するのが普通なんですかね?

画像を大量にあつかうプログラムなので
-Xmx500m -Xms500m とか指定させて動かすのが普通なんですけど、
こういう場合ってバッチファイル起動させるようにする形でいいんでしょうか

アドバイスお願いします。


316 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:41:32 ]
バッチとかシェルスクリプトとかネイティブな実行形式でラップするとか
まあ、実行時引数渡すだけならバッチかスクリプト

317 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:02:41 ]
マニフェストに記述できないの?
いや、よくしらんけど

318 名前:315 [2008/03/08(土) 19:02:55 ]
>>317
マニフェストファイルに実行時引数やメモリオプションなどを記述できるんですか?
よく知らないもので、、

319 名前:デフォルトの名無しさん [2008/03/08(土) 19:29:59 ]
www.ibm.com/developerworks/jp/java/library/j-diag0911/

320 名前:デフォルトの名無しさん [2008/03/08(土) 22:04:37 ]
すみません質問です。

log4jを使ったjarを作っているのですが、
どうにもクラスパスを認識してくれないようです。
java -classpath /usr/share/java/log4j.jar -jar hoge.jar
でorg/apache/log4j/Loggerがないと怒られます。
開発PCはWindows(Eclipse)、実行(プレ本番)PCはFedora8です。
Windows側では正常に動作します。



321 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:06:09 ]
スレッドを止める方法(破棄する)ってどうしたらいいですか?
「ボタンAを押すと画像を動かし始め(スレッドを開始)、ボタンBを押した時に画像を止め(スレッドを止める)、
またAを押すと画像は動き始める」っていうものなんですが・・・
Interrupt()を使ってもとまらないしsleep()を使うとボタンが押せなくなるんです…

322 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:16:04 ]
>>281
私もUpdate4にした頃からアプレットが固まるようになったけど、
別スレで、
コントロールパネル > Java の
Javaコントロールパネル から
基本 > ネットワーク設定 の ネットワークプロキシ設定を
直接接続 に変更しろ

ってあったのをみて
試したら動作するようになったよ

323 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:16:31 ]
>>320
-jarオプションを付けると、オプション-classpathや環境変数CLASSPATHは無視され、
MANIFESTファイルのClass-Path属性に記述されたもののみが有効になる。
ちゃんとMANIFESTファイル書け。

324 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:40:57 ]
>>321
sleep を使うとボタンを押せなくなるようなスレッドを止めたいのなら、
アプリケーションを終了させると止まるヨ

325 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:01:24 ]
>>323 MANIFESTって外部のJarも書けるのは初めて知りました。
おかげで無事動作しました。サンクスです。これで家に帰れます orz

326 名前:283 mailto:sage [2008/03/08(土) 23:43:32 ]
お世話になります。
283なのです。

>284
ありがとうございます。
あるということで、、今日一日探してみたのですが、見つけられませんでした。
私の持っている本には見つからず、Webページでは、記述のある場所を見つけられませんでした。

Webページで参考になる場所を教えてもらえませんか。

327 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:03:06 ]
>>326
java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.4

要は、クラス名.this と書く。


328 名前:デフォルトの名無しさん [2008/03/09(日) 00:04:55 ]
>>326
仕様にズバリ載ってるだろうが・・・

329 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:06:07 ]
あ、thisの話じゃなかった。


330 名前:283=326 mailto:sage [2008/03/09(日) 15:36:43 ]
>327
ありがとうございます
確認できました。
教科書とか、入門レベルの本には載ってないのですね…。

>328
仕様書読んだことありませんでした。
参考書に沿って勉強していて気になっていた感じでした。

>329
=327ですよね?
いえ、thisの話が知りたかったのです。
Class2のaを見たいのではなくて、
最終的には、Class2 のインスタンスそのものを見たかったので、Class2.thisですね。
これが最も知りたかったことです。
ありがとうございます。



331 名前:デフォルトの名無しさん [2008/03/09(日) 17:52:45 ]
java.lang.*;
はimportしなくても初めからされているのはなぜですか?
importするときはどんなときですか?
String s="うんこ"
みたいなふうなようなことを自作するにはどうやりますか?
おねがいします。

332 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:56:21 ]
>はimportしなくても初めからされているのはなぜですか? 
その方がべんりだから
>importするときはどんなときですか? 
java.lang以外のとき
>みたいなふうなようなことを自作するにはどうやりますか?
できません

333 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:59:50 ]
>>332
ありがとうございました。
最終結論としてjava.langをimportするときはありえないという理解で
よろしいでしょうか?

334 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:43:12 ]
書いてもいいけど無駄ではある。
どのクラスを使っているか明示するために*なしで1個1個のjava.lang以下の
クラスをインポート宣言する流儀はありえる。


335 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:45:31 ]
インスタンス化するときの、
フィールドを定数で初期化する方法として、

クラスの記述のときに、フィールド宣言と同時に初期化の値を記述してしまう方法と、

コンストラクタで実行させる、
方法をとれるみたいですが、
1の方法はとらない方がいい、といった考え方はありますか?
(1の後に2が実行されるようで、1を2で上書きできることは確認してみました。)

どのコンストラクタでも同じことをしたいならば、便利だと思ったのですが、
初期化はコンストラクタでやるべきかなとも、思いました。
こういった考え方をいろいろ教えているサイトってありませんか?

336 名前:デフォルトの名無しさん [2008/03/09(日) 18:57:18 ]
テストについて質問です。

例えば
Class A{
A(){
methodA();
}
public methodA(){};
}
のようなクラスをテストするとします。
methodAをテストする前にインスタンスが作られますが、
そこではテストしていないmethodAが発動します。
この問題はどうすれば解決しますか?

337 名前:デフォルトの名無しさん [2008/03/09(日) 19:11:58 ]
java sound apiがダウンロードするばしょが見つかりません
日本語マニュアルつきでおねがいします。

338 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:44:26 ]
>>336
Javaでおk

339 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:48:32 ]
>335
ケースバイケース
可読性を考えるとフィールドの宣言と同時に初期化する方がいいかもしれない
また、初期化忘れも気づきやすい

コンストラクタはあくまでインスタンスの初期化の最後のプロセスと考えるといいかもしれない。
他にも(非staticな)イニシャライザで初期化する方法もある
private int num;
{
  num = 10;
}
のような感じ
これはほとんど使わないけど

340 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:49:21 ]
>336
methodAがpublicである事がバグの一種



341 名前:デフォルトの名無しさん [2008/03/09(日) 20:05:25 ]
java.sun.com/j2se/1.5.0/ja/docs/ja/guide/sound/programmer_guide/contents.html
を圧縮形式でダウンロードできるホームページをおしえてください

342 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 20:12:15 ]
>>331
おまえには
import *;
が似合ってる

343 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 20:29:18 ]
>>340
privateでもいいですけど。
では解決策があるんですか?

344 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:06:23 ]
java soundってコアに入ってから関連ドキュメントもJDKに含まれなかったか?

345 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:20:41 ]
>>342
Javaのパッケージを理解してから出直してこい

346 名前:デフォルトの名無しさん [2008/03/09(日) 22:00:07 ]
72.5.124.55/javase/ja/6/docs/ja/
のホームページと同じ、avasdkがダウンロードできるところに
あるダウンロードできるドキュメントのページが、vistaのIEで開くと空白になって
何もみえないんですけど。
解決方法おしえてください。

347 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:06:58 ]
>>341
ttp://java.sun.com/j2se/1.5.0/ja/download.html
[J2SE 5.0 ドキュメント] -> [ダウンロード] (一式全部有るけど)

>>343
何のためにテストを行うのか。

インスタンスを生成した後、一度も呼ばれていないメソッドを呼ぶテスト?
何が起きても起こり得ない状況をテストするの?
それらはテストをする価値があるの?

348 名前:342 mailto:sage [2008/03/09(日) 22:27:13 ]
>345
いいですけどって何様?

コンストラクタで呼ばれるメソッドは原則としてコンストラクタの一部
言い換えれば初期化処理の一部であって、インスタンスの生成が完了する前に実行される特殊なメソッド
これをprivate以外にするとオーバーライド時など予期せぬ問題を生じる可能性がある

で、テストする内容はインスタンスの生成で何か問題あるのか?
そのメソッドが単体でテストしなければならないほどのロジックを含むというならば、別クラスに抽出するべきだろう

349 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:39:06 ]
import *;
import *;
import *;

・・・プ

350 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:49:26 ]
>>348
オーバーライドされて困るからprivateにするってどんだけー
それなら普通finalメソッドにするもんじゃないのか?
import *;といい少しjavaの復習をしたほうがいいかと。



351 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:54:33 ]
swingのJTabbedPaneについて教えてください。

JTabbedPaneのインスタンスに、addTabすると、
タブが追加されます。タブのインデックス(題名がついているところ)に、
MouseListenerを設置して、クリックを検出したいのですが、
できません。
どなたか、私に助言くださいませんか。

352 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:26:04 ]
>>351
タブ選択は ChangeListener で検出します。
マウスの位置はどうなんだろう…






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

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

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