[表示 : 全て 最新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あたりで。

231 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:14:32 ]
(゜д゜) はぁ?

232 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:22:24 ]
javadocよく嫁

233 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:23:29 ]
言い忘れた
byte型の昇格じゃなきゃ特に演算時に気を付けることはない。

234 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:27:46 ]
嘘八百を並べた悪徳スレ

235 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:43:59 ]
>>216
>>226でもいいけど、long が 64ビットなのに対して double の仮数部は 53ビットしかない。
だから例えば
System.out.println(Double.compare(0x20000000000000L, 0x20000000000001L)); //=> 0
System.out.println(0x20000000000000L == (double)0x20000000000001L); //=> true

逆に言うと、あらかじめ精度が必要ない事が判っていれば
Double#compare(double, double) で構わない。

236 名前:226 mailto:sage [2008/03/07(金) 14:55:25 ]
>>235
なるほど。これはお勧め出来なかったですね、申し訳ない。

Long.MAX_VALUE と (double) Long.MAX_VALUE
==> 9223372036854775807
==> 9.223372036854776E18

// int と double についての方も、こういうことなのでしょうか?

237 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:58:14 ]
>>236
int と float だと、float の方が精度低いので問題起きる可能性がある。

238 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 16:36:10 ]
(・д・)

239 名前:デフォルトの名無しさん [2008/03/07(金) 16:54:44 ]
MVCモデルについて質問です。
現在、MVCを使ってマインスイーパを作ろうというプロジェクトを行っています。
Mでは、m*nのテーブルを裏返したり、フラグを変更させる動作を持たせる事にします。
ここで問題なのですが、
この配列をVに描写してもらう時に、渡すのは数字の入った2次元配列です。
これを例えば1なら1と表示させるというようにすればいいように思えますが、
Vを作る人は、Mがどういう仕様かを知ってはいけないと思います。
つまり、Mで、1という数字を100という風に書こうが31という謎の値で書こうが関係ない設計にしなければならないと思います。
この場合、私の考える中で唯一これを満たす方法は、
Mに描画のメソッドを実装して、Vで委譲させる方法ですが、
MVCの原則として、Mは描画や出入力を行ってはいけない事になっています。
そもそも、View側でもm*nで待っていてくれている保証はないわけですが、
MとVの独立性を保つためにはどのように設計すればよいのでしょか?



240 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:07:46 ]
>>239
>Vを作る人は、Mがどういう仕様かを知ってはいけないと思います。 

いやいやいや。
ビューはモデルの仕様を知っている。
でなければ、何を描くのかすらわからんではないか。
ツリーモデルをマインスイーパービューに渡してどうしろというんだ。
ツリービューはツリーモデルを描く。
マインスイーパービューはマインスイーパーモデルを描く。
interface MinesweeperModel {
 int getWidth();
 int getHeight();
 boolean isFlagSet(int x, int y);
 boolean isOpen(int x, int y);
 boolean hasMine(int x, int y);
 void addChangeListener(ChangeListener l);
 void removeChangeListener(ChangeListener l);
}
こんなのでいいかと。
これをどう実装するか(二次元配列?)は、モデルの実装の詳細であって、ビューはそれを知る必要はない。
これをどう表示するか(JTable?)は、ビューの実装の詳細であって、モデルはそれを知る必要はない。
ただし両者とも、そのインタフェイス (MinesweeperModel) の仕様は知っている。

241 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:13:31 ]
MVCってjava関係ないじゃん。
ゲーム作ってるならこっちの方が適切。

ttp://pc11.2ch.net/test/read.cgi/gamedev/1155209226/l50
ゲームにおけるデータ構造・クラス設計・パターン

242 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:15:00 ]
クリックされたら配列に入力され、その後配列と対応する場所に四角を書きたいんですが
うまくいきませんorz
どこがだめなんでしょうか?
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/*
<applet code="proto" width=200 height=200></applet>
*/
public class proto extends Applet implements MouseListener{
Point p;
boolean bl[][] = new boolean[20][20];
public void mouseClicked(MouseEvent me) {
p = me.getPoint();
bl[p.x/10][p.y/10] = true;
repaint();
}
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void paint(Graphics g){
for(int x=0;x<20;x++){
for(int y=0;y<20;y++){
if(bl[x][y] == true){
g.fillRect(x*10,y*10,10,10);
}}}}}

243 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:18:48 ]
>>242
addMouseListener

244 名前:239 [2008/03/07(金) 17:22:15 ]
>>240
プログラムが出来たら、うpするので
その時に評価してもらおうと思います。
いろいろ考えると難しくて。実装じゃなくて、設計が。
設計やさんは優秀じゃなきゃ出来ませんね。
設計が腐ってるとすべてが終わる。
設計がしっかりしてれば
実装なんか中卒だろうが高卒だろうが
理系だろうが文系だろうが
関係なしに出来るのではないかと思えてきましたが、
実際のプログラミング現場ではやはり設計というのは一番優秀な人がするものなのでしょうか?


245 名前:242 mailto:sage [2008/03/07(金) 17:26:33 ]
うわ・・恥
>>423どうもありがとうございました

246 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:32:36 ]
実装をなめんなよ

247 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:38:34 ]
>実際のプログラミング現場ではやはり設計というのは一番優秀な人がするものなのでしょうか?

そういう話題はマ板向き

248 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:51:19 ]
設計する人が優秀とは限らないが、優秀でない人が設計すると火事になる

249 名前:239 [2008/03/07(金) 18:02:27 ]
今、ぼくは
「クラスが独立であるとは、クラスが単独でテスト可能である事と同値である」
という持論に基づいてプログラムしています。
これが正しいかどうかは置いといて、
テストが不可能、例えば乱数に寄ってしまっている設計はいけない設計ですか?
例えばマインスイーパなら、爆弾を仕掛けると思いますが、
爆弾を仕掛けるのを乱数に頼って、イニシャライザに組み込んでしまうと、
動作ごとにどこに爆弾が仕掛けられたか分からず、
「ここを押せばこういう状態に遷移する」
といったテストが行えません。
今作ってるプログラムはまさにこうなのですが、
これは失敗した設計ですか?



250 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:06:26 ]
>>240の書いているようなモデルインターフェースを作っていれば、そんなものいくらでも実装で変更できると思うんだけど。

251 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:13:59 ]
>>249
乱数を元にしないNonRandomMinesweeperModelを使ってテストすればいいだけだ

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="うんこ"
みたいなふうなようなことを自作するにはどうやりますか?
おねがいします。






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

前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