トップページ⇒tech
1001コメント341KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/11/27(日) 19:24:09
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・内部クラスから外部クラスのローカル変数は使えない。他の方法を考えろ。

前スレッド
【初心者】Java質問・相談スレッド75【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1131860937/


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

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりでお願いしまする。
0159デフォルトの名無しさん2005/11/29(火) 22:10:23
super.clone() を呼んだ時に、どのような動作がどのような順番で行われるのか詳しく教えて下さい。
0160デフォルトの名無しさん2005/11/29(火) 22:35:28
ソース嫁
01611112005/11/29(火) 22:44:04
>>112
ちょっとよくわからないのですが、最終的には2つのHTMLページが必要なのです。
どうすればよいのでしょうか?
0162デフォルトの名無しさん2005/11/29(火) 22:48:57
>>161
>>113くらいよめ
01631112005/11/29(火) 22:56:25
>>162
すいません。
レスアンカーが無かったので気づきませんでした。

フレーム内のWebページはJSPなどにして、そこで表示するデータは
セッションから取得するって感じですかね?
確かにそれでいけそうな気がします。
0164デフォルトの名無しさん2005/11/29(火) 22:59:42
StringWriterって速度的にはどうなの?
StringBuilderと互角?
0165デフォルトの名無しさん2005/11/29(火) 23:01:47
用途が違うだろ・・・
0166デフォルトの名無しさん2005/11/29(火) 23:02:31
いやべろしちーのはなしがでてたからさ
0167デフォルトの名無しさん2005/11/29(火) 23:21:00
継承を前提としたクラスのフィールドを protected で宣言するのは
オブジェクト指向(カプセル化)の観点からは望ましくないですか?
0168デフォルトの名無しさん2005/11/29(火) 23:24:20
final ならばそうでもない。
0169デフォルトの名無しさん2005/11/29(火) 23:39:55
serialVersionUIDってどう設定すればいいですか?
0170デフォルトの名無しさん2005/11/30(水) 00:34:19
>>151
彼の目的はRMIじゃなくてチャットを作ることだけなら
別にRMIもなにもって感じだと思うのだが。
0171デフォルトの名無しさん2005/11/30(水) 00:36:15
>>158
なんで全部のノードにTomcatを載せる必要があるんだ?
一つのサーバにTomcatをいれて

クライアントサイドのブラウザからチャットすればいいだけの
話だとおもわれるンだが。
0172デフォルトの名無しさん2005/11/30(水) 00:38:18
>>164
BufferとBuilderとの違いもわからんのか。
おまけにWriterと間違えてるし

Javadocちゃんと嫁よ

0173デフォルトの名無しさん2005/11/30(水) 00:38:48
>>169
Eclipseに任せて設定できればいい。
0174デフォルトの名無しさん2005/11/30(水) 00:40:34
>>167
>>168のいうとおりfinalなら問題なし
だがfinalではないなら、
インスタンスであるばあい、private
にするのが望ましいだろう。

フィールドを継承することは望ましくない。
面倒なことになる。
privateつけてアクセッサメソッドを実装した方がいいだろう。
0175デフォルトの名無しさん2005/11/30(水) 00:45:42
>>172
お前こそちゃんと読めよ
StringWriterも知らんのか
0176デフォルトの名無しさん2005/11/30(水) 00:55:01
StringBuilderとStringWriterとが
比較できるものだと思ってるの?
0177デフォルトの名無しさん2005/11/30(水) 01:08:47
>>171
対等の立場でやりたいものなんじゃないの?
あとはコマンドラインベースかGUIベースあたりかと

WEBアプリでの話ならそういったほうがはやいし
0178デフォルトの名無しさん2005/11/30(水) 01:12:51
別のスレで聞いて反応が芳しく無かったので
ここでお聞きします。
アホな質問かも知れませんけど
インターフェイスで
swingのボタンアクションはactionPerformed(ActionEvent e)を実装して
使いますよね?
まぁスレッドでも良いですが
でもインターフェイスは本来は何にも実装は無いんだからボタンアクションを
起こすのは何か別のクラスとかで定義されてるって事ですよね?
インターフェイス振る舞いを定義して使う人が実装するから便利なのは
分かるんですけども。
自分で作ったインターフェイスにこの様な挙動を持たせるには
どんな風なクラスを書くのか気になって。
それともインターフェイスはやっぱり再利用するだけのモノ
何でしょうか・・・・?
0179デフォルトの名無しさん2005/11/30(水) 01:21:27
趣味でJavaを使って2Dゲームを作ろうと思うのですが、
JFrameに直接描画するのとCanvasに描画するのでは違いはありますか?
下のサンプルではCanvasを使っているようですが、
自分が持っている本では直接JFrameに描画しています。
速度や容量などを考えた場合、どちらの方が良いですか?

http://www.fk.urban.ne.jp/home/kishida/kouza/block/block.html
0180デフォルトの名無しさん2005/11/30(水) 01:22:28
>>177
それって1対1のツーショットチャットかい。
それはなー、よく昔使われていたperlのゆいちゃっと
と比べるとチャットって気がしないぞw
0181デフォルトの名無しさん2005/11/30(水) 01:24:21
>>178
interfaceについて知りたければ
結城浩の『Java言語で学ぶデザインパターン入門』
を読むと良く分かるだろう。初心者にもわかりやすいし
喩え話を使って丁寧に説明している。


0182デフォルトの名無しさん2005/11/30(水) 01:25:28
>>179
JFrameのような希ガス

CanvasはJFrameをはみ出してもかまわず(ry

するやつかとオモタ
0183デフォルトの名無しさん2005/11/30(水) 01:29:35
JFrame直書きはできんだろ
1.4.2はうごくけど5.0は消えるはず

普通はBufferStrategyをつかう
0184デフォルトの名無しさん2005/11/30(水) 01:32:04
SwingにAWT混ぜると動作保障外
細かいことはJavaのゲーム開発のスレに行ったほうがいいかも

そこで見かけた
http://shin.cside.com/product/pw/index.htm
はジョイスティック以外はPureJavaらしい
01851792005/11/30(水) 01:47:19
レストンクスです
BufferStrategyとか色々調べてみます
0186デフォルトの名無しさん2005/11/30(水) 01:51:52
>>178
>それともインターフェイスはやっぱり再利用するだけのモノ
>何でしょうか・・・・?

インタフェースはその名の通り、インタフェースを定義するものです。
コーディング時にインタフェースのみ定義しておくだけで、
具体的にどのクラスがその実装を行い動作するのかを知らなくても良いのが長所です。

再利用云々は、的外れだと思います。
0187デフォルトの名無しさん2005/11/30(水) 02:05:43
>>186
ってかその理屈は分かるんですけど
インターフェイスって自分で定義して書くよりも
ライブラリーで使う方が多いと思うし
例えば何でRunnableインターフェイスのrun()の実装した
内容がスレッドになるのか・・・・ってのが
まぁjavaVMがそのメソッド名を実装してるクラスは
自動的にする様に定義されてるクラスが有るんでしょうけど
それで納得して使った方が良いのかな。
0188デフォルトの名無しさん2005/11/30(水) 02:08:22
インターフェイスは、文字通りインターフェイスを定義するんだよ。

インターフェイスだけコミットしておいて、中身は後付けででとか、
てきとうにマルナゲとか、現実でもよくやるでしょ。そういうのに
使うのよ。
0189デフォルトの名無しさん2005/11/30(水) 02:13:16
そっか
普通のクラスはそのものに実装も有って。
インターフェイスは実装は使うクラスに任せて
それを実装したかどうか判断する第三者(javaVM)に
判断させて黒幕のスレッドを動かすクラスも存在する
って考えれば
インターフェイス=抽象メソッドで何も挙動しない
って考えるよりもライブラリー使う分には納得出来ますね。

この認識でとってもヤバイ間違いを犯す可能性が無いなら
これでやって行きたいんですが・・・・

0190デフォルトの名無しさん2005/11/30(水) 02:17:24
>>188
javaとUMLで学ぶオブジェクト指向の考え方
と
オブジェクト指向でなぜつくるのか
を図書館や友達に借りて詠んでるんですが
もっと勉強しなおして出直してきます。
結城って名前良く出るからこれも詠むしかないっぽいですね。

失礼しました。
0191デフォルトの名無しさん2005/11/30(水) 05:28:30
今日メモリ4GBにしてみたけどやっぱりJAVAはメモリ
食うだけ食って遅い能無し言語だと言うことが解った。
なんでこんな言語を必死に使おうとしているのか
理解に苦しむ
0192デフォルトの名無しさん2005/11/30(水) 05:30:28
Windows でしか動かない C# (≒ .NET) よりマシですからね
0193デフォルトの名無しさん2005/11/30(水) 05:56:17
>>191
君のコードがウンコちゃんだからなのでは
メモリ4GBも乗せる金は有っても
頭がアレではアレ?だろう。
何でもwindowsって時代でも無いだろう。
でも金は無いのでjavaでxpで作ってますけど・・・・
習得の苦労さへ厭わなかったら商用と変わらん品質のモンが使える。
Java Studio Enterprise 8やJava Studio Creatorもフリーだし
sunも何処に行くんだろうって思うけど。
ってか.NETって確かに楽しそうなイメージは有るけど
MSの株価の為にaspから.netになってまた突然変わったりして
windowsでは.netが良いだろうけどunix系でも稼働出来る様にしたら
金の卵のwindows使う人が減るから絶対しない(筈)
大体javaを叩くのはC,C++,C♯使いじゃなくてvisualbasicの人が多い。
どうでも良いけど。
0194デフォルトの名無しさん2005/11/30(水) 06:13:26
言いたいことがいっぱいあるのは分かったが
もう少し整理してから書いた方が良いと思う
0195デフォルトの名無しさん2005/11/30(水) 08:32:18
メモリ4GにしてもXmxオプションで指定しないと64Mしかつかわんよ
0196デフォルトの名無しさん2005/11/30(水) 08:42:22
>>191=>>114
0197デフォルトの名無しさん2005/11/30(水) 09:22:52
>>191
それをCで作ったらどうなるか報告求む
0198デフォルトの名無しさん2005/11/30(水) 09:46:39
あるサンプルソースをeclipsで動かそうとしています。
コンパイル時に

private SessionManager mngrSession;

という宣言で「型SessionManagerは使用すべきではありません」
とだけエラーが表示され理由も何も表示されません。
何が悪いのでしょうか?
0199デフォルトの名無しさん2005/11/30(水) 10:36:53
またエスパー召喚かよ。
そのSessionManagerってのが何者なのかはオマエしか知らんわけだが
それのドキュメントでも読んでみたらどうだ。 deprecatedなんじゃねーの?
0200デフォルトの名無しさん2005/11/30(水) 13:40:14
>>187
> >>186
> ってかその理屈は分かるんですけど
> インターフェイスって自分で定義して書くよりも
> ライブラリーで使う方が多いと思うし
> 例えば何でRunnableインターフェイスのrun()の実装した
> 内容がスレッドになるのか・・・・ってのが
デザインパターンの一つ、Template Methodパターン
について読んでみれ。
ソースコードサンプルを読めばああなるほど、とわかるはずだ。
あれは抽象クラスではあるが、Threadクラスのrun()メソッドと同じ。
start()メソッドの内部でrun()メソッドを呼び出す命令がかいてあるから、
オーバライドしたrun()メソッドを書くだけでスレッドとして動作できる。
0201デフォルトの名無しさん2005/11/30(水) 13:43:00
>>191
おまいの作ったまたは拾ってきたJavaプログラムが
古いコンパイラで動く駄目なものなのか
おまいが動かしているVMが糞なんだな。
それかもしくはおまいのCPUが300MHz以下の糞マシンであるか
もしくはおまいの使ってるOSに糞サービスが大量に
常駐してJavaを使う前から4GBのメモリをすべて占有しているとかなw
0202デフォルトの名無しさん2005/11/30(水) 13:47:11
>>193
> >>191
> 君のコードがウンコちゃんだからなのでは
> メモリ4GBも乗せる金は有っても
> 頭がアレではアレ?だろう。

>>191は頭が馬鹿だからメモリ4GB載せてもJavaは遅いとか言ってるんだよw
>>191の頭にメモリ4GB積んだほうが>>191のためになるわなw

> ってか.NETって確かに楽しそうなイメージは有るけど

.NETは仕事もプロダクトもAPIもろくになくて何も楽しくないなw

> MSの株価の為にaspから.netになってまた突然変わったりして

M$はC#を推してるかと思ったらVB.NETのほうを強く推してるしw

> 大体javaを叩くのはC,C++,C♯使いじゃなくてvisualbasicの人が多い。
ワラタ。なんでだろーねw
VB.NETやC#がJavaにそっくりでJavaのような文法を覚えさせられる
ことが気に入らないのかねw
0203デフォルトの名無しさん2005/11/30(水) 13:58:05
javaに挑戦して挫折したVBユーザーとか(w
押し入れにはVJの箱が入ってるとかさ。
0204デフォルトの名無しさん2005/11/30(水) 15:00:02
vj は正直要らんと思うぞ。
0205デフォルトの名無しさん2005/11/30(水) 15:16:22
JFreeChartを使ってグラフを書こうとしたのですが、スプライン補間をしてくれそうなクラスが
見当たりません。

点の数が少なくても適当な補間を行ってくれる、グラフのライブラリってありますか?ff
0206デフォルトの名無しさん2005/11/30(水) 15:27:21
>>109
> JVMのソースコードが公開されたのは
> Java SE 6 Mustangになってからだぞ。
http://www.sun.com/software/communitysource/j2se/java2/download.xml
ライセンス違うけど、1.2の頃からソースは見れるようになってるよ。
0207デフォルトの名無しさん2005/11/30(水) 15:49:09
>>205
XYPlotかな?
XYItemRendererを好き放題に実装して使ったらいいよん
0208デフォルトの名無しさん2005/11/30(水) 16:40:11
class Super {
    public String getKey() { return "super"; }
}
class Sub extends Super {
    public String getKey() { return "sub"; }
}

この getKey を、Super またはそれを継承したインスタンスを一切作らずに実行することって出来ないですよね?
リフレクションでも出来ないし……(´・ω・`)
0209デフォルトの名無しさん2005/11/30(水) 16:48:05
エスパー募集!
0210デフォルトの名無しさん2005/11/30(水) 16:51:13
class Super {
  public String getKey()
0211デフォルトの名無しさん2005/11/30(水) 16:52:31
class Super {
  public static String getKey() { return "super"; }
}

class Sub extends Super {
  public static String getKey() { return "sub"; }
}
0212デフォルトの名無しさん2005/11/30(水) 16:54:34
インスタンス化せずにインスタンスメソッドを使うとはこれ如何に?
02132082005/11/30(水) 17:03:06
>>212
いや、やりたいことは
[1] インスタンスAから、Aが属するクラスと対応した文字列を取得したい
[2] 一部の処理では、Class オブジェクトから直接 [1] の文字列を取得したい

だから……素直に getKey を static にして、リフレクション使って [1] を実現するメソッド新たに作るです (´・ω・`)
なんだろう。『一部の処理』 のために全体が複雑になってる気がする……。
0214デフォルトの名無しさん2005/11/30(水) 17:06:20
読み込んだjpg画像(黒で4つに区切られた画像・・・田んぼの田みたいな感じ)を黒の中の色情報を得たいのですが、良い方法教えてください。
画像の周りは白です。
白白白
白田白
白白白
こんな感じです。もちろん田の中は何ピクセルかは決まってません。田の中の4つの色情報を得るには、左上から1ピクセルづつrgbの値を読みこむのは出来るのですが、黒の中の色情報を得るのが難しいです。
意味不明な質問かもしれないけど、お願いします。
0215デフォルトの名無しさん2005/11/30(水) 17:08:46
その画像に黒いラインとかは絶対に存在しないの?
0216デフォルトの名無しさん2005/11/30(水) 17:13:29
>>213
class.newInstance().getKey()
ではアカンの?
0217デフォルトの名無しさん2005/11/30(水) 17:18:18
>>213
設計が間違ってるんじゃね?
0218デフォルトの名無しさん2005/11/30(水) 17:24:29
>>215
完全に黒の部分は田の線の所だけです。この田は2×2ですが、5×5でも、取り合えず田の線の中色情報(RGB値)を得たいのです。
02192082005/11/30(水) 17:29:06
>>216
引数なしコンストラクタ作っとけば良いんですけど……引数有りで全体組んじゃったんで(´・ω・`)

>>217
間違ってると思いたいけど、やりたいことは間違ってない。・゚・(ノД`)・゚・。
0220デフォルトの名無しさん2005/11/30(水) 17:30:21
>>218
やってみてなぜ出来ないと思ったの?
紙にアルゴリズムでも書いてみた?
0221デフォルトの名無しさん2005/11/30(水) 17:39:58
>>220
田の線無しの4つの画像のRGB値を得る事が出来ていないんです。
赤青
黄緑
(正方形で1色のピクセル値は例えば50×50)
簡単で当たり前ですが、1ピクセルなら読み込むことが出来ます。
が、ピクセル数が多すぎると、どういう風にすればいいのか分かりません。
0222デフォルトの名無しさん2005/11/30(水) 17:43:06
>>219
適当だけどこんなんはどう?
getKeyをstaticにすると駄目な所が出たりしない?

public class Hoge {
public static void main(String[] args) {
System.out.println(getKey(Super.class));
System.out.println(getKey(Sub.class));
}

public static String getKey(Class<? extends Super> c) {
try {
return (String) c.getField("KEY").get(null);
} catch (Exception e) {
return null;
}
}
}
class Super {
public static final String KEY = "super";
public String getKey() { return KEY; }
}
class Sub extends Super {
public static final String KEY = "sub";
public String getKey() { return KEY; }
}
0223デフォルトの名無しさん2005/11/30(水) 18:01:01
>>207
しこしこがんばります。ありがとうございます。
0224デフォルトの名無しさん2005/11/30(水) 18:18:56
>>222
ありがとうございます。getKey が各クラスにコピペされるのがちょっと違和感あるですが、
何とかやってみます(`・ω・´)
0225デフォルトの名無しさん2005/11/30(水) 18:39:50
>>224
もともとgetKeyてつかってないの?
だったら public String getKey() { return KEY; } は要らないよ。
0226デフォルトの名無しさん2005/11/30(水) 18:40:06
軽い初心者なのですが、javaでコマンドライン以外で実行するって事できるんですか?
(例えば、exeをクリックすると実行するとか)
教えてください
02272252005/11/30(水) 18:41:21
> [1] インスタンスAから、Aが属するクラスと対応した文字列を取得したい
を忘れてたorz
0228デフォルトの名無しさん2005/11/30(水) 19:00:32
>>225 >>227
ん?ちょっと良く分かんないですが、私が気にしたのは 「全く同じコードが随所にある」 ってことです。
今回の getKey は短いですから、気にしなければ良いだけなんですけどね。
0229デフォルトの名無しさん2005/11/30(水) 19:10:48
>>228
なるほど、そういうことですか。
instance.getKey()が少し遅くても大丈夫ならこれでも良いかも。

class Super {
public static final String KEY = "super";
public final String getKey() { return getKey(getClass()); }
public static final String getKey(Class<? extends Super> c) {
try {
return (String) c.getField("KEY").get(null);
} catch (Exception e) {
return null;
}
}
}

class Sub extends Super {
public static final String KEY = "sub";
}
0230デフォルトの名無しさん2005/11/30(水) 19:25:22
>>229
警告を表示する際に数回実行する程度なので、それで大丈夫そうです。
本当にありがとうございます。
0231デフォルトの名無しさん2005/11/30(水) 19:32:50
clone() の中で super.clone() を呼ぶのが正しい手続きらしいのですが、
super.clone() を呼んだ時に、どのような動作がどのような順番で行われるのか詳しく教えて下さい。
0232デフォルトの名無しさん2005/11/30(水) 19:59:32
>>226
jar
0233デフォルトの名無しさん2005/11/30(水) 20:03:21
>>226
それで軽い初心者だと思ってるのかよ・・・重症だな
0234デフォルトの名無しさん2005/11/30(水) 20:25:01
>>232>>233
どうも
単なる圧縮形式だとおもてました笑
0235デフォルトの名無しさん2005/11/30(水) 20:40:34

超初心車です。
RandomAccessFileを使わずにseekってできるのですか?

テキストファイルの先頭から任意の位置にSeekしたいのです。
テキストファイルをreadLine()見たいなメソッドで一行づつ処理をするプログラムです。

RandomAccessFileを使用すれば希望する動作はします。
ただ・・・・遅すぎて現実的には使用不可能です。
0236デフォルトの名無しさん2005/11/30(水) 21:11:07
>>235
はーいせんせー。遅いのには別の理由があると思いまーす。
0237デフォルトの名無しさん2005/11/30(水) 22:33:59
iアプリで遊べるアクションゲームを開発中なんですが、操作キャラの移動処理ってどんな風に作ればいいですか?
0238デフォルトの名無しさん2005/11/30(水) 23:18:31
http://www.saturn.dti.ne.jp/~npaka/apptsuku/
0239デフォルトの名無しさん2005/11/30(水) 23:50:52
>>236
正解です
0240デフォルトの名無しさん2005/12/01(木) 00:56:20
volatile修飾子を実験してみたのですが、
以下のコードを実行すると、毎回必ず[1000]が出力される事を期待しているのに
何回か実行を繰り返していると、1000未満の数値が出力されます。
これは何故でしょうか?環境はjava1.5.0_5です

public class ThreadTest {
static volatile int c;
public static void main(String[] args) throws Exception {
Thread t0 = new MyThread();
//この間にt1〜t8もnewする
Thread t9 = new MyThread();

t0.start();
//この間にt1からt8もstart()する
t9.start();

t0.join();
//この間にt1からt8もjoin()する
t9.join();

System.out.println("[" + c + "]");
}
}
class MyThread extends Thread {
public void run() {
for (int i = 0; i < 100; i++){ThreadTest.c++;}
}
}
0241デフォルトの名無しさん2005/12/01(木) 01:03:45
volatile と synchrionized って無関係だよ。
0242デフォルトの名無しさん2005/12/01(木) 01:06:26
>>241
コメント有難うございます。

volatileは変数へのアトミックなアクセスを行うための修飾子であると
理解していたのですが、それは誤りだということでしょうか?

volatileの修飾子を使う事により、どのような効果があるのでしょう?
0243デフォルトの名無しさん2005/12/01(木) 01:08:48
>>242
volatile 使って劇的に結果が変わるコードを書いたことがない (-∀-;

ちなみにアトミックな方は synchronized で、volatile は変数のキャッシュを抑制するはず。
volatile は無視されるという話も聞いたことがあるが……正直どうだったか。
0244デフォルトの名無しさん2005/12/01(木) 01:10:14
超手抜き版Hibernate作りたいんだがいい資料ないですか?
大体10クラス程度、8000ステップぐらいで納めたいのですが
どんなもんでしょう?
0245デフォルトの名無しさん2005/12/01(木) 01:12:33
>>240
volatileはスレッドで行なった変数書き込みがちゃんと反映されることを保障するだけ。
だからそのコードでは100以上になれば正しい挙動。
0246デフォルトの名無しさん2005/12/01(木) 01:15:19
>>244
Hibernateじゃいかんのかい?
0247デフォルトの名無しさん2005/12/01(木) 01:17:28
>>243
なるほど、無視される可能性があると言う事ですか。
実装はVMに依存されていると言う事なのかな・・。

>>244
一番簡単なテストプログラムならば
Entityを1つ、それとMainクラスを1つの2クラスで十分だと思います。

Java5を使うならば、Annotationを使う事をオススメします。
それならば、あとはhibernate.cfg.xmlを1で合計3つのファイルだけでOKだと思います。

サンプルは
http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/
を参考にすれば大丈夫だと思います。

簡単に書く為には、Entityのクラス名とプロパティ名はテーブルと全く同一にし、
classに@Entity、pkのプロパティに@IdをつけるだけでOKです。
あとはDBにあるデータをSelectしたり、Updateしたりするだけのコードでも書けば
資料としては十分ではないでしょうか。

0248デフォルトの名無しさん2005/12/01(木) 01:21:05
パフォーマンス気にするような排他制御にはsynchronizedではなくLockつかえよ
0249デフォルトの名無しさん2005/12/01(木) 01:27:35
>>245
>volatileはスレッドで行なった変数書き込みがちゃんと反映されることを保障するだけ。

私のテストプログラムでは、10あるスレッドがそれぞれ変数cを100インクリメントしています。
なので、インクリメントが必ず反映されるならば、cの値は1000になると推測しました。

しかし、1000未満の値になる場合があるので、これはスレッドで行った変数書き込みが
他のスレッドに反映されていないケースがあるのだと理解しました。

これは私の理解に誤りがあるのか、プログラムに問題があるのか・・。

ちなみに、volatileは単なる興味でテストしてみただけで、
実際に使う事は永遠にないとは思います。
0250デフォルトの名無しさん2005/12/01(木) 01:29:44
>>245
volatileとインクリメントの併用は間違えやすいポイントだよ
c++はワンステップで行われるわけでは無く
1)cのロード
2)c += 1の実行
3)cのストア
の3ステップがある。この場合タイミングによっては、
スレッド1  スレッド2
1) c = 10  1) c = 10
2) c += 1  2) c += 1
3) c = 11 をストア
       3) c = 11 をストア
となる事がある
volatileは各1)2)3)をアトミックにしてくれるだけ
意味無いじゃんと思うかも知れないが、longやdoubleでは意味がはっきりするよ
0251デフォルトの名無しさん2005/12/01(木) 01:30:20
まちげーた>>249だ
0252デフォルトの名無しさん2005/12/01(木) 01:31:01
>>248
>>240 の場合はAtomicIntegerで良いんじゃない?
0253デフォルトの名無しさん2005/12/01(木) 01:31:12
volatileは可視性だけ
syncronizedやLockのatomicとは違う
02542502005/12/01(木) 01:32:29
ごめん間違えた。2)はアトミックにしてくれない
0255デフォルトの名無しさん2005/12/01(木) 01:33:37
>>252
たまたまカウントが分かりやすいから例に出しただけとおもわれ
当たり前だけどatomicは融通が利かないしね

一般のアプリでソースにatomicでてきたらぶちころすかも
0256デフォルトの名無しさん2005/12/01(木) 01:34:03
>>250
なるほど!そういうことだったのですね!
ご回答有難うございました。謎がすっきりしました。

longやdoubleが何故はっきりするかが判りませんが
それは自分で調べてみます。
0257デフォルトの名無しさん2005/12/01(木) 01:43:47
>>247
無視されてるというよりは
同時に書き込まれてるんでない?
0258デフォルトの名無しさん2005/12/01(木) 01:47:52
>>200
自分が結城先生の本を立ち読みしてちょっと考えたのは
インターフェイスとは
public interface Understandable {
void implCode();
}
class User implements Understandable {

public void implCode() {
System.out.println("実装コード");
    }
}

class X_interface {
public X_interface(Understandable code) {

//此処にスレッドなり、ボタンアクションなりの挙動を書く。
//このコードが複雑でも再利用が可能。例えば
for(;;){
code.implCode();
}
}
}
でスレッドとかはjavaVMに何か仕掛けが有ってX_interfaceを呼び出すとか
考えました。
まぁインターフェイスの使い方とかはこんな感じと思うですけど
■ このスレッドは過去ログ倉庫に格納されています