ネタ心者歓迎!今更ながらにJava相談室 その4
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNG|| ̄ ̄| ∧_∧
||Java| ( ) ∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
||__| ( ○ ) ( ) < 俺達の旅はここから始まる。
|| │ | │ / | \___________
((二二)) .(_(__)〜(___ノ
( ゚Д゚) < カキコする前に>>2-10をチェックしとけゴルァ!!
>>2 過去スレの一覧
>>3 Javaの基礎と よくある質問 (初心者はここをチェック!)
>>4 Java関連スレいろいろ
>>5 Javaを撲滅させたい方、死滅を心配してる方、Cとの違いを知りたい方はこちらへ
* 諸般の事情により、リンクがずれる事もあります。
0159デフォルトの名無しさん
NGNGそんな質問の仕方なら>>158が正解
0160デフォルトの名無しさん
NGNGいざちょっと大きいアプリケーションを作ろうと思ったら
どう作ったら良いのかかなりとまどったりしてます。
デザパタ本も一通り読んだしちょっとしたクラス設計位はなんとかできそうに
思うんだけど、大きなアプリケーションになるとパッケージ構成やクラス構成
とかってどーいう風にするのが良いのかサパーリわからん。
とか思っている漏れにお薦めな本とかサイトってなんかないですか?
0161デフォルトの名無しさん
NGNG1万行くらいの簡単なアプリとか。
あとはJDKのソースとか見てると、それなりにパケージの作り方とか
分かってくっぺ。
0162
NGNG1万行が簡単なのか? と煽りに乗って見る。
0163日下部圭子 ◆ib749tYo
NGNG> 1万行が簡単なのか?
力自慢のプログラマのなら、一日数千行くらいは珍しくありませんよ。
陽一さんも5000行とか書いてましたし。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0164デフォルトの名無しさん
NGNG「同期」と「非同期」の意味が分からないんだけど、
やさしーく説明してもらえないでしょうか?
0165デフォルトの名無しさん
NGNGサーバー行為禁止されてるプロバイダなんです。
この場合、通信できませんか?NetMeeting等はIPで接続できるけど…
0166デフォルトの名無しさん
NGNGたった数行でも美しいコードもあれば、数百万行費やしてもクソなコードもある。
要は「思想」だ。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGjava HelloWorld
として実行しても、
Exception in thread "main"java.lang.NoClassDefFoundError:HelloWorld
というエラーが出てしまいます。
CLASSPATH環境変数の設定に . がないのが原因らしく、
java -classpath . HelloWorld
とすればうまくいきます。
CLASSPATH環境変数の設定をどうやって、どのようになおしたらよいでのでしょう?
教えてください。よろしくお願いします。
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG環境変数の設定方法はOSによって違う。
0171168
NGNG0172デフォルトの名無しさん
NGNG例えばあるメソッドがある処理を担当している時、
その処理が終わったらメソッドコールから帰ってくるのが「同期」
「処理しておいてね」「あいよー」でメソッドコールから返ってきて、
いつ実際に処理されるかは保証しない(多分、いつかは処理されるけど)
のが「非同期」。
普通のメソッドコール=同期。
非同期で依頼した場合、処理終了を通知してもらうメカニズムが、
普通は必要。「コールバック」とか呼ばれるやつ。
非同期処理は、普通マルチスレッドまたはプロセス間通信などの機構に
よって実現されるので、やろうと思ったらちょっと勉強が必要。
だから暗記から入るなと・・・。
その上、一万行もの他人のコードをサンプルにしたら挫折するってば。
0175デフォルトの名無しさん
NGNGリファクタリング本片手に作っては直すを1000回くらいやると吉。
0176デフォルトの名無しさん
NGNGまず、「イベントドリブン」から勉強すべし。
0177164
NGNGThanks, 非常に分かりやすかった。
0178デフォルトの名無しさん
NGNGCLASSPATHに.を追加したらいいだけ。
0179165
NGNG0180デフォルトの名無しさん
NGNG防火壁とかないなら。
0181160
NGNG>>161
行数多そうで、参考になりそうなソースコードってそんないろいろ見つかるものすか?。
クライアントサイドなアプリで。
>>175
丸暗記で勉強したわけでもなくて、ちっこいプログラムなら結構たくさん書いたけど意味無いのかな・・・。
>>175、>>176
リファクタリング、イベントドリブン、どっちもなんとなくのイメージはあるけど
具体的に取り組むとなるとどうするのかはわからない・・、今度調べてみます。
0182デフォルトの名無しさん
NGNGJDK添付demoのSwingSet2でどうよ。
0183デフォルトの名無しさん
NGNGclass hoge {
Foo foo = new Foo();
hoge() {}//コンストラクタ
}
と
class hoge {
Foo foo;
hoge() {
foo = new Foo();
}
}
どっちが良いっていうのはあるんですか?
0184デフォルトの名無しさん
NGNGフィールド初期化は、コンストラクタメソッド起動より前に初期化されるということ、
それからコンストラクタは、サブクラスでオーバーライドが掛かる可能性があると
いう考慮をせよ。それが望ましいことならコンストラクタで、望ましくないなら
フィールド初期化=コンストラクタメソッド起動以前の初期化にせよ。
OK?
0185183
NGNG>>いう考慮をせよ。
ああ、これは納得です。たしかにそうですね。即レスどうも。
0186デフォルトの名無しさん
NGNGいまだに使い方が判らん。というかサンプルが動かない。
コンパイルにコツがいるのか実行にコツがいるのか。
ポイントはクラスパス?
0187184
NGNGデフォルト値で必ず初期化される。
オブジェクト参照ならnull、プリミティブ値なら0(false)。
…ねえ、だからいちいちnull突っ込むのやめましょうよ、リーダ。
0188184
NGNGjava.util.Propertiesなら、newして、プロパティファイルの
フルパス名でload()すればいいだけじゃないか?
あとの使い方はMapみたいなもんでしょ。
0189デフォルトの名無しさん
NGNGわかっててインスタンスフィールドをnull等で初期化してる人も多いみたいだけど、
そういう人は敢えて代入しないと気持ち悪いんじゃないかな。
感覚的な問題だと思う。別に害はないのでほっとけばいいのでは?
>java.util.Properties
日本語通らないんだったっけ?
オーバーライドも何も、そもそもコンストラクタは継承されないし、
子クラスのコンストラクタは、親クラスのコンストラクタを
必ず呼ぶのでは??
0192184
NGNG>わかっててインスタンスフィールドをnull等で初期化してる人も多いみたいだけど、
言語仕様で保証されていても、それを知らないボケプログラマに揚げ足取られて
面倒な思いをするような隙を与えないようにするという意味があるのかもねー。
同僚や外注がどうやら口煩いだけのアホらしい時は、おいらもやるさ。
知ってるけど?
君は何かコンストラクタについて誤解をしてる気がする。
0195184
NGNG単に「サブクラスのコンストラクタから呼ばれるかもしれないし、呼ばれない
かもしれない」ということだな。
>呼ばれないかもしれない
絶対に呼ばれるよ。
0197189
NGNGPropertiesって自分は全然使ってないんで、はっきり覚えてませんでした。
>言語仕様で保証されていても、それを知らないボケプログラマに揚げ足取られて
それはあるかも。
ただ、ローカル変数と混同している人もいそうですね。
コンパイラに怒られた経験から変数はすべて明に初期化してるとか。
0198デフォルトの名無しさん
NGNGおせぇ〜て
0199184
NGNGちゃうちゃう。サブクラスが、親クラスの複数のコンストラクタの中の
どのコンストラクタを呼ぶかはサブクラス実装者の責任になるという話っすよ。
どれか(明示しなければデフォルトコンストラクタ)が呼ばれるのは
確かに絶対間違いないけど。
0200デフォルトの名無しさん
NGNGimplements Cloneable
0201184
NGNGそれから、日本語が含まれるプロパティをつかうのなら、
PropertiesよりはPropertyResouceBundleを使うべし、だな。
JVMランタイムが自身が実行されえいる環境のlocaleによって、実際
に使われるプロパティファイルのファイル名を分岐してくれるから、
国際化対応が楽。
>>198
なにが聞きたいんだか良くわかんないけど、ディープコピーがしたい
っつうなら、こんな感じでどうかね。
class Hoge{
private Hage hage;
///…
public Object clone(){
Hoge dst = super.clone();
if(this.hage!=null)
dst.hage = this.hage.clone();
return dst;
}
}
コアAPIのソースでも眺めてみた方がはやいかもよ。
0202184
NGNG0203161
NGNG>166で指摘されているように、もちろん1万行あればいいってわけじゃなくて、
当然「まともな」アプリケーションを探すべきだと思いますが、
「1万行」と言った意味は、
アプリケーションがそれなりの規模であり、通常力技だけでコーディングしていると
破綻しかねない量だと思うので、「破綻せずに」メンテナンスされているコードなら、
きちんと中身も整理されているんじゃないかと思ったわけです。
もちろん個別に例示されて「破綻してるじゃねぇかゴルァ!!」ってのはあるとは思いますけど。
で、そうでなければ、JDKのソースとか見てみるのもいいかもよ、と言ったわけです。
>>181
とりあえず、Windowsの小さなフリーソフトとかを移植してみれば?
そうすると、いろいろ煮詰まると思うし、クラスがボコボコでき始めると、
パッケージ化したくなるし、実践的なことはやっぱ手を動かして覚えるしかないと思う。
ちなみに、オイラは
app.core.*;
app.core.event.*;
app.gui.*;
app.gui.event.*;
app.test.*;
みたいにパッケージ化してたりする。我流なので汚いとは思うけど。やってみないと分からんし。
呼ばれて困るコンストラクタなんて、そもそも有り得ないよ。
呼ばれたコンストラクタでフィールドを初期化してなくても、それはその
コンストラクタを書いた人が希望しての事だから、特に問題は無いはず。
だから「コンストラクタは呼ばれない事も有る」と言うのは、根本的にオカシイと思う。
それは「呼ばれて困るコンストラクタを書くなよ」とアドバイスするのと同じだと思う。
>>183の話に戻すと、フィールドをその定義時に初期化するのは、
「この値はコンストラクタで動的に初期化することはないですよ。
どのコンストラクタが呼ばれようとも、最初は必ずこの値ですよ。」
という意思表明であるべきではないかな。
だから、必要も無いのにフィールドにnullを入れるのも良くないと思う。
それが絶対にnullで初期化され、コンストラクタで変更される場合が無い場合なら問題ないけれど、
nullを代入しているにも関わらずコンストラクタや初期化節で別な値を入れるのは、
これはプログラマとしての信義を問われるのではないか。
0206デフォルトの名無しさん
NGNGこいつ、分って言ってのか?
0207デフォルトの名無しさん
NGNGMS意外で、Lunixなもんで、
0208デフォルトの名無しさん
NGNGIBMの奴とか?
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG>サードパーティー製のJavaVMってあるの?
>>208
URL知らん?
0211デフォルトの名無しさん
NGNG0212209
NGNGなんかPS2Linuxでも動くようだ。ふーん
>210
http://www-106.ibm.com/developerworks/java/jdk/linux130/?dwzone=java
>こいつ、分って言ってのか?
お前、日本語が分かって言ってるのか?(w
0214デフォルトの名無しさん
NGNGストリングが空かどうか調べるときがかったるいんで、アレなんだけど
if ( str != null && str.length() != 0 )
{
空みたいな、アレ
}
else
{
詰まってそうな、アレ
}
みんなどう、アレしてんの?
if ( str =="" )
っていうふうにしてくれや
漏れは、Stringにnullは入れないで””を入れるように、アレしてみようかと、
思ったり、思わなかったり。。。
0215デフォルトの名無しさん
NGNGすっこんでろな。
0216デフォルトの名無しさん
NGNG速いんだべか?
0218デフォルトの名無しさん
NGNG人に聞く前に自分で試せ
0219デフォルトの名無しさん
NGNGここでは対象外と言うことで。
0220デフォルトの名無しさん
NGNGいいから、もう、しゃべんなって。
0221デフォルトの名無しさん
NGNGそうでもない。
0222デフォルトの名無しさん
NGNGなんで、誰もこの人に突っ込まないの?
0223デフォルトの名無しさん
NGNGじゃ、おまえがつっこんで下さい。
0224デフォルトの名無しさん
NGNGみんなが放置しているのに、一人で騒いでいる自作自演野郎発見
0225
NGNGとりあえず、文字列の比較に"=="を使うなよな。
と教えてあげる優しい人は俺だけですか!?
0226デフォルトの名無しさん
NGNG空かどうかのみで分けるなら
if ("".equals(str)) {
// 空文字だけどどうよ
}
0227デフォルトの名無しさん
NGNG0228227
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG私はアイアプリのjava機能を最新機能だと思っていますが、何か?
0231デフォルトの名無しさん
NGNGwrite onceはどこへやら。
全てのJVMで共通に使えるのって文字列に関するクラスぐらいじゃないの?
0232デフォルトの名無しさん
NGNGトリッキーな・・・。つうか動くのか?
0233デフォルトの名無しさん
NGNGそっちの方が綺麗だな・・。
0234
NGNGiアプリ>>>>>>>>>>>>>>デスクトップアプリ
0235デフォルトの名無しさん
NGNGトリッキーなのか、あれ?
0236
NGNGが標準。
0237
NGNG0238デフォルトの名無しさん
NGNG常にfalseになるよ
0239デフォルトの名無しさん
NGNG話題があったっけなぁ…
傍観してる分には面白かったけど。
0240
NGNGんなこたあない。
0241
NGNG0242デフォルトの名無しさん
NGNG違うだろ!
ネタ
0243214
NGNGどうアレしたらいいかね、
""かnullって感じになると思うんだけど、
あ、例外無しって事で、
ところでさ、
if ( str == "" )
ってやると、何を比較してんの?
で、その結果は何かに役立つアレなわけ?
0244
NGNG既知外ですか?
0246デフォルトの名無しさん
NGNG例外は「返る」とは言わんか。
0247
NGNGバカ!
NullPointerExceptionがあるだろ!
0248デフォルトの名無しさん
NGNG0250
NGNGif( str==null ){
ダタヨ
逝ってきます
0251デフォルトの名無しさん
NGNG参照の同一性を検査していることになる。
同値性の検査にはならない点に注意。
0252デフォルトの名無しさん
NGNGいや、ないと思うけど。多分。
0253デフォルトの名無しさん
NGNGEffective Javaに書いてあたヨ。
つか、読まなくても分かってると思うけど。
ArrayOutOfRangeException(だっけ?)でループから抜ける処理って
初めて見たヨ。
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNGやっぱ、普通は例外処理には頼らないよね。
0256デフォルトの名無しさん
NGNGwrite(byte[],int,int) とかで
範囲チェックしなかったのは俺です。
0257デフォルトの名無しさん
NGNG0x100逃した‥‥。
0258214
NGNG結局何にも使えないって事?
■ このスレッドは過去ログ倉庫に格納されています