まさかリフレクション?
CMあけました〜
Class#newInstanceはリフレクションのコンストラクタオブジェクトからインスタンスを作ってるしな。
_. -─── -.、
_.イ . : : : : : : : : : : : : \
/ . : : : : : : : : : : : : : : : : \
/ ./ : : : /: : : : : : : : : : : : : : : : ヽ
/. : / . : : :/: :/: : : : : : : : : : : : : : : : :',
/. . :/.: : : : :/_..ム:l . : :|: __|ヽ: : :| : : : ハ
/ : : __.イ: : : : .:/: :ノ ヘ : : : :ト、: | ̄\!: : : : :.!
__ レ´ /| : : : : :{_厶=ミ 人:. : :|_ィ=x、/|: : : : :.|
_// ヽ | | : : : : イfて:::カ \:| fて: カヽ|: : : : :.|
/´| (_/l } | |: :{\{ 弋z_ソ 弋_zノ !/): :,'
. /´| ! |二二|ト、 | l /vヘ」 , /ノ: : :/
〈 | {_ソ ̄f⌒ー} \{ ヘ、 _ _ /:/|/
ヽ ヽ_) \丿 个:: 、 _. イ〃
>>1 乙です
|〈\ノ ー‐r' ___ .>┤>- < レ'´
/|:::\__ィ:::| _/ ̄Y:::::::::`ー ´::::::ノ ├-- .、
/ ヽ:::::`ー─ ´:!∨ Y::::::::::::::::::::::/| \::::::::\__
. 〈 ー──< } Y ::::::::::::: /:::| /::::::::::::W ヽ ツモ
. ________ ____________________ __
│一│ │ │一│ |二│三│四|伍|六│七|八|九|九│九| |七|
│萬│ │ │萬│ |萬│萬│萬│萬|萬|萬|萬│萬|萬|萬| |萬|
.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄
インスタンスの生成にClass.newInstanceやConstructor.newInstanceを使ったとしても、 コンストラクタが既に生成されたオブジェクト(割り当てられたメモリ)に対して初期化処理を行うことには変わらない。 あと、997は998と全く矛盾していないんだけど、一体何を主張したかったんだろうか。 「メモリの割り当てにnew演算子が必須」とはどこにも書いていないのに。
そういう屁理屈はいいから。
10 :
デフォルトの名無しさん :2010/02/08(月) 00:13:17
要するにnewしてんだろ?
java入門初心者です。 javaで3Dゲームを作って、市場に投売りにしてやろうと思いjavaを勉強して、初心者用の本を一冊読みきりました。 本当に基本的なことしか学んでいませんが、java3Dに入っていくためにどこにこれから向かうべきでしょうか? サイトを見ても、基本から抜け出した後は平原の様にどうしていいか分からず・・・ 方向性を決めるためのアドバイスのようなものを、出来ればお願いします。
まずは2Dでゲームを作ってみるべき
北へ
2Dゲームはサンプル感覚で作ってみました。 擬似3Dを表現することが出来て、必要な処理は出来ると思います(まだ試していませんが・・・) javaを教科書一冊で進めているので、教科書を買うか、すぐにでもjava3Dをダウンロードしてコードを作るべきかどうかを考えています。
15 :
デフォルトの名無しさん :2010/02/08(月) 00:53:51
そのまま東へ32歩
あんたみたいなタイプは遠回りせずにいきなり3D始めたほうがいい。 必要な本は後から立ち読みでもしてから選べばいい。
thisを全部につけるのって何かマズイことってある? たとえば class MyClass { int k=0; void setValue(int v) { this.k=v; } void print() { System.out.println("k="+this.k); } void addprint(int ad) { this.k+=ad; this.print(); } } みたいな感じ
setterにはthisを付けるようにしてる。 これはsetterのローカル変数と名前が被る時の予防になる。 例) this.field = field; getterやメソッド呼び出しは特に拘らない。
19 :
デフォルトの名無しさん :2010/02/08(月) 01:38:02
ごめん 東へ42歩だった
レス有難うございます。<<11 です。 風呂の中で考えていました。 そしてjava3dをインストールする方法、自分でGraphicsクラスを立体用に改造する方法を考えていることに気がつきました。 もうちょっとだけGraphicsクラスを使用してみたら、java3Dに移ろうと思います。 <<12さん、<<16さん、レス有難うございました。 必ず、有効活用してみます。
>>17 とくに問題はない。
>>18 にあるように付ける必要があるケースがあるので、
一貫性を持たせて常に付けると言うのは悪くない。
タイプ量が増えて面倒ではあるけど。
23 :
デフォルトの名無しさん :2010/02/08(月) 02:50:50
もしたどり着けたらそこで靴下を脱ぎます
ふーん
lim n→∞ (√2^2n - √2^2n-2^n)を試行回数を1000回で解を推定するプログラミングを作っていますが、 for(int x =0;x<=1000;x++) { double a1 = Math.pow(2,2*x); double a = Math.sqrt(a1); double b1 = Math.pow(2,x); double b3 = a1-b1; double b2 = Math.sqrt(b3); double ans = a-b2; if(x%100==0)System.out.println(x + "回目の試行の解は" + ans + "です。"); } このfor文で書いても結果が 100回目の試行の解は0.0です。 200回目の試行の解は0.0です。 300回目の試行の解は0.0です。 400回目の試行の解は0.0です。 500回目の試行の解は0.0です。 600回目の試行の解はNaNです。 700回目の試行の解はNaNです。 800回目の試行の解はNaNです。 900回目の試行の解はNaNです。 1000回目の試行の解はNaNです。 としか出ず困っています。おかしい箇所を指摘していただけないでしょうか?
>>25 doubleは有限の有効桁数しか持たない。
xが大きくなるとaやb2の大きさに比べて両者の差が相対的に小さくなり精度が悪化する。
精々x=50くらいで十分収束するからx=50までについて100ずつでなく1ずつ表示してみろ。
傾向を見るだけならx=10くらいまで出せば何に収束するかすぐ分かる。
数値計算は反復回数をむやみに増やせばいいってものではない。
使用している式の性質とコンピュータ内での表現を踏まえたうえで計算する必要がある。
それと有効桁数が有限というだけでなくdoubleは絶対値として2^1000程度までしか表せないから、 Math.pow(2,2*x)をx=1000まで計算すればその結果は無限大になる。
すまん、反復回数うんぬんはこの場合無関係だね。100回とかの「回」につられてしまった。 ついでに、x=500までが0でそれ以降がNaNになるのは、 xが100から500では有効桁が有限なのでaもb2も同じになってその差が0になり、 x=600以降は2^2xがdoubleの範囲を超えて無限大になるのでaもb2も無限大になりその差はNaNになるから。
29 :
デフォルトの名無しさん :2010/02/08(月) 10:01:36
北に22歩進んでください
30 :
25 :2010/02/08(月) 10:20:22
>>26-28 doubleの桁の範囲を超えていたんですね・・・初歩的なミスでお恥ずかしい限りです
丁寧な解説までつけていただき本当にありがとうございましたm(_ _)m
前スレ922です。
>>923 なるほど!port0指定でbindすればよかったのか・・・
>>929 >>931 実際はクラスタリングされてるサーバで、LoaclIPとVirtualIP持ってます。
NICが6枚だか8枚刺さってるサーバです。
自系がパッケージActiveになった時、自動connectだとVIPを優先して取ってしまうので、
ActiveだろうとOfflineだろうとLocalIPで固定したかったんです。
そのテストに、開発PCでNIC2枚刺してIP(というかNIC)選べるようにしてました。
>>932 神!!
これがしたかったんです。
なるほど、connect()とbind()でInetSocketAddressを別にすればよかったのか・・・
見てみたらごく普通ですが、思いつきませんでした。
うまくいってます。
助かりました、ありがつおです!
ServletのfilterでHttpServletRequestWrapperのgetMethodを以下のように変更して、 全てPOSTリクエストに強引に変えて、 tomcatではservletのdoPostが問題なく呼ばれたのは確認しました。 public String getMethod() { return "POST"; } 分けあってServletにはPOSTで渡さないといけないという仕様があって、 こんなことをしております。 GETでPOSTにを呼び出す改修をしてもらえれば一番いいのですが、 政治的判断で止められています。 アプリが問題なく動作してますが、破たんするような落とし穴はあるでしょうか?
33 :
デフォルトの名無しさん :2010/02/08(月) 11:36:54
南に23歩です
>>34 これに一票!
問題あればfinalになってるはず。
なので言われる覚えはないってこと
socket通信でコネクション成功→リスエスと送信→ソケット読み込みしているとき リクエストが全く帰ってこなかった場合のタイムアウトってどうなるのでしょうか? タイムアウトなんてなく永遠に待つ? タイムアウトはある。その値はシステムによる?
settimeoutしないかぎり永遠に末んじゃなにの?
>>32 リクエストの Content-Type や Content-Length を見ている奴がいるかもしれない。
やるならちゃんと POST 仕様を満たすようにやれ。
>>40 なんとなく知ってる単語を並べてみただけの人
HTTP 仕様知ってるくらいでそう見えるって、いまどきどんだけ低レベルなんだよ…
HTTP 仕様知ってるなんてずいぶんレベル高いスレだな
仕様知ってるだけで高レベルになれるのなら、あなたもすぐに高レベルになれますよ RFC読むだけで
しようのないひとたちですね。
GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames() で表示されるフォントにIPAフォントを追加するには、どのに設定すればよいのですか? ちなみにwinodws環境です。
47 :
デフォルトの名無しさん :2010/02/08(月) 18:14:34
>>287 CakePHPは便利だよ。
とりあえずプログラミングレスでCRUDはできる。
48 :
287 :2010/02/08(月) 18:15:28
誤爆した。 すいません。
まずは落ち着こう
次にパンツを脱ごう
jspiderとかoss系のアプリにxdocsと言う形式のドキュメントが同梱されているのですが これはどうやって見るんですか?
ここのスレッドであっているのか分らないのですが javaと質問で検索した所、このスレが引っかかりましたので質問させてください 当方XPのESETスマートセキュリティでJAVA6のバージョン18なのですが一部のペイントチャットに入ろうとすると そのまま接続されずにページが見つかりません、と表示されます 他の方は入室できているのでサーバーが立っていないというのは無いと思うのですが 何か原因や対処法についてアドバイスがいただけたら幸いです スレ違いでしたら申し訳ありません、スルーしてください
板違い
54 :
デフォルトの名無しさん :2010/02/08(月) 22:03:43
>>54 どうやって実行しようとしたのかと、
その時出力されたエラーメッセージなどは?
マルチだめ。ぜったい。
>>53 すみませんでした、もう一度捜しなおしてみます
58 :
17 :2010/02/08(月) 22:34:47
59 :
デフォルトの名無しさん :2010/02/08(月) 22:39:12
>>55 コマンドプロンプトで
java DentakuFrame
と入力したところ、なんかいっぱいエラー出ました…
今実行できる環境じゃないんでその時のエラーは書き出せないです…
>>54 >package dentaku;
>public class DentakuFrame extends JFrame {
ここを自分の環境に合わせたか?
61 :
デフォルトの名無しさん :2010/02/08(月) 22:43:14
>>5 上のpackage Dentaku;
を消したところ、
Exception in thread "main" java.lang.NoClassDefFoundError
が出たような気がします…
62 :
デフォルトの名無しさん :2010/02/08(月) 22:46:08
>>60 すみませんpackageがそもそも分からないです…
自分の環境に合わせるとは?
>>62 パッケージってのは簡単に言うとフォルダの事だよ
>package dentaku;
このクラスは、dentakuってフォルダに属していますよ〜って宣言してる
1.IDEでプロジェクトを作る(名前はなんでもいい。例:HogeHoge)
2.パッケージを作る(パッケージの名前は「dentaku」)
3.クラスを作る(クラスの名前は「DentakuFrame」)
4.コピペする
64 :
デフォルトの名無しさん :2010/02/08(月) 23:12:53
JAVA勉強中級?者です。あるファイルにスレッドで書き込みしながら、そのファイルを別スレッドで読み出していく。 そういう事JAVAでできるでしょうか?VCだとメモリマップドファイルというのがあるのですが、 JAVAはどうでしょうか?解決方法をご教授願います。
65 :
デフォルトの名無しさん :2010/02/08(月) 23:18:02
>>63 つまり、リンク先で図示されていることをやればいいのでしょうか?
packageを使わずに作ることは可能でしょうか…?
66 :
デフォルトの名無しさん :2010/02/08(月) 23:23:15
>>65 >java.lang.NoClassDefFoundError (クラスパスに必要な設定が無い場合のエラー)
IDEをインストールした時に環境変数の設定をしないとダメなんだけど、
その設定をした?(俺は自動でやってくれるlinuxを使ってるから、やったことないけど)
コピペをして動かすことも重要だけど、ある程度文法を知らないと挫折するよ
68 :
デフォルトの名無しさん :2010/02/09(火) 01:58:45
longからbyte[]に変換する方法を教えてください。
卵はどっちからで?
>>68 long x = 0x0123456789abcdefL;
byte[] y = new byte[8];
java.nio.ByteBuffer.wrap(y).putLong(x);
for (byte b : y) System.out.printf("%02x ", b);
バイトオーダーを変えたいならorderで変更
SJC-Pを取得したので、基本情報JAVAに手を出したけど メンバ変数が多くて読めない みんなどうやって読んでるのか不思議
>>64 なぜメモリマップドファイル?
ファイルである必要がなければPipedOutputStream/PipedInputStream
どうしてもメモリマップドファイルがいいならMappedByteBuffer
toByteArrayは?
eclipse(ver3.5)で、mainメソッドがあるのにメイン型がないというエラーメッセージ。
初めまして、JAVAを勉強中で今現在は例外処理あたりを学習中です。
JAVAと並行してeclipseも学ぼうとして、インストール→日本語化までは無事に完了し、
早速↓を参考に[hello world]の文字列を出力するプログラムを作ろうとしました。
http://www.atmarkit.co.jp/fjava/rensai3/eclipsejava02/eclipse02_2.html しかしバージョンが違うためかメニューが変わっており、代わりにver3.5で近い選択肢の
実行→実行→Javaアプリケーションを試してみたのですが、
[エディターにはメイン型が含まれていません]
とメッセージが出力され、コンパイルできません。
しかしeclipseのエディター上にはちゃんとmainメソッドもあり、DOS画面からのjavacなら
ちゃんとコンパイルされました。
eclipseでコンパイルするためには他にどのようなことをすればいいのか、どうかご教示を
お願いします。
>>76 訂正
一行目に[質問内容]という一文を追加
うちは日本語化してないから英語ですまんけれど Project Explorer で .java ファイルを右クリック → Run As → Java Application でどうかな
79 :
78 :2010/02/09(火) 14:44:39
× Project Explorer ○ Package Explorer でした どっちでもいいけど
>>78 アドバイスありがとうございます。
おそらく同じ手順の
パッケージエクスプローラーでjavaファイルを右クリック→実行→JAVAアプリケーション
で試してみました。残念ながらダメでした。
またアイコン○に右向き△のクリックも同様にダメです。
staticが抜けてるとか
問題ビューに何かメッセージが表示されていない?
>>76 main が無いだけでコンパイルできないってありえないので、
信用できないんだよなぁ
「実行」のことを「コンパイル」とか名前つけて呼んでるんじゃないのかなぁ
アドバイスありがとうございます。
以下にコメントを除いたソースを貼り付けます。
-----------------------------------------------------------
public class Print {
public static void main(String[] args) {
System.out.println("hello world");
}
}
-----------------------------------------------------------
>>81 誤字もありません。入ってます。
>>82 空欄でした。
>>83 御指摘ありがとうございます。
eclipseでコンパイルと実行は別物なのでしょうか?
コンパイルというメニューがないので、てっきり実行=コンパイル→実行をするものだと
考えていました。
とりあえずワークスペースフォルダにDosのjavacでつくった.classのほうをばら撒いて 実行してみましたが、やはりダメでした。 当面、色々といじくったり検索してみてもダメだったら、再インストールしてみようと思います。
正常なら .java ファイルを保存した時点で自動的にコンパイルされ .class ファイルが生成される (Package Explorer 上では非表示なので他の手段で確認してください) 何らかの理由でコンパイル出来てないとか .class ファイルが生成されてないとか・・・ Java プロジェクトじゃないとか、デフォルトパッケージ以外のところに .java ファイルを置いてるとか、 .class ファイルが出力されるはずのフォルダが書き込み禁止に・・・なってるわけないとは思うけど
この糞コテって人間だったのか
レス飛びまくり 糞壁でも来てんのか
文法の質問です。 DataLine.Info info = new DataLine.Info(SourceDataLine.class, format); こんな一文を見つけたのですが、インタフェースであるSourceDataLineに.classがついているというのはどういう文法なのでしょうか DataLine.Infoのコンストラクタはドキュメントによると DataLine.Info(Class<?> lineClass, AudioFormat format) こうなっています
クラスもインターフェースもそのメタタイプを示すのは Class クラス。 <クラス/インターフェース名>.class というのはそのクラス/インター フェースの Class オブジェクトを示す。
92 :
90 :2010/02/09(火) 22:56:02
なるほど。。 回答ありがとうございます
93 :
90 :2010/02/09(火) 23:21:17
もう一つ質問します。 SoundSample1.class.getResourceAsStream("voice.wav") こんな一部分で、これはClassクラスのgetResourceAsStreamメソッドを使っているようなのですが、 「クラス名.メソッド」というのは文法がおかしいのではないかと思っていて混乱しています staticならそれもありだと記憶しているのですがstaticでもないようです 回答よろしくお願いします
SoundSample1.class というのは Class クラスのオブジェクトだから、Class クラスのメソッドが呼べる
>>95 非ブロックではないけどスレッドを延々と入力待ち状態にしたくないだけなら
Socket#setSoTimeout() でタイムアウトを設定。
>>93 Class<?> clazz = SoundSamle1.class;
InputStream in = clazz.getResourceAsStream("voice.wav");
分解すればこれと同じ。<クラス名>.class ってのは Class.forName("SoundSample1");
の省略表記のようなものだから。
iReportでバーコード付のレポートを出力したいのですが、 linux上で出力するとバーコード画像の縞々の下についている文字が消えてしまいます。 何か設定が必要なのでしょうか? ちなみにBarbece、Barcode4jどちらでも起こるようです。
>>94 嘘をおしえるな。
getResourceAsStreamはインスタンスメソッドだ。
クラスリテラルはそのクラスのClassインスタンスを返す。
だからSoundSample1.classの戻り値の型はClass<? extends SoundSample1>になる。
Class<? extends SoundSample1>インスタンスなのでClassクラスのインスタンスメソッドを使える。
関連してgetClass()はそのClassクラスのインスタンスを返すが実体はイレイジャ(ジェネリックのパラメタが消去されたObject型)なのでコンパイラにはObject型とみなされる。
SoundSample1.class.getResourceAsStream("voice.wav")はSoundSample1.classをロードしたクラスローダーの権限でgetResourceAsStream()を呼ぶ。
だから場合によっては特権コードで実行する必要がある。
101 :
デフォルトの名無しさん :2010/02/10(水) 01:10:22
ジャバ試験のために頑張って勉強したんですよ〜
この話のどこにイレイジャや特権が関係してんだ? 勘違いの独り言か?
103 :
デフォルトの名無しさん :2010/02/10(水) 01:19:45
くやしいのうwwww
104 :
90 :2010/02/10(水) 01:31:41
>>94 >>97 >>100 回答ありがとうございます
>>100 とても参考になりました。混乱の原因はクラスリテラルというものを知らなかったことでした
classメソッドがあるのかとか、クラスは変数に入れられるのかとかずっと考えていました
助かりました。
>>104 余談だが、プリミティブにもクラスリテラルがあったりする。
int.class とか void.class とかも正しい式だったり。
>>100 って
>>94 に蛇足説明加えてるだけなんだが
何でそんなことで得意げになってんだか分からない。
>>106 論破されちゃうのってそんなに悔しの?(笑)
・結果 無事、コンパイルできるようになりました。ご意見を下さった皆様、本当にありがとうございます。 自分が誰かと勘違いされているようなので、先にそちらを。 おそらく名前欄にある『[―{}@{}@{}-]』がコテと思われたのだと思いますが、これを書き込んだ時は 名前欄は空欄で書き込んでいます。確証はありませんが、自分がp2から書き込んでいることが起因で 起きている現象だと思います。 ・結果までの経緯 最初のeclipseを削除し、再度解凍。今度は日本語化せずそのまま。されど同症状。 次にエクリプス日本語化のサイトにある日本語セットをダウンロード、解凍。されど同症状。 ここまでが先日。今日はなんとなく今まで同じワークスペース、ファイル(Print)を使っていることが 悪いのではないかと思い立ち、削除。新規に↑とは別のプロジェクト、クラスを作成。無事コンパイル。 エラーになっていた最初のPrintクラスも何故か(当然?)コンパイル。 原因は不明ですが、>87様が仰っていたようにファイル/フォルダから何らかの理由が起きていたようです。
すれちがい
―{}@{}@{}-をコテと勘違いしたアホがいたと聞いて
JSPとServletだけで作ったらすげー気持ちいい
112 :
デフォルトの名無しさん :2010/02/10(水) 14:15:51
初歩的な質問ですみません String s[]を初期化するときは、 String s[] = null; で大丈夫ですかね?
>>112 HTML5 が従来の HTML と違うのは、定義を DOM でやっているところ。
Java や Javascript など、プログラミング言語にべったりです。
115 :
デフォルトの名無しさん :2010/02/10(水) 14:43:06
グーグル中毒乙
116 :
デフォルトの名無しさん :2010/02/10(水) 14:43:45
>>113 それはnullで初期化している。
String s[] = new String[5];
でも初期化
String s[] = {"い", "ろ", "は"};
でも初期化
あと
String s[]
は
String[] s
と書くことをお勧めする
117 :
デフォルトの名無しさん :2010/02/10(水) 15:26:16
なんで?
118 :
113 :2010/02/10(水) 15:33:05
最初に何を格納しといても大丈夫ということですね ありがとうございます。
119 :
デフォルトの名無しさん :2010/02/10(水) 15:39:09
String str; String型の変数strを宣言 String[] s; 配列型(String)の変数sを宣言 型 変数名 という規則にのっとると、 こっちの方が統一感があるから。
String s[]; はC/C++から来た人向けの代替手段で非推奨
tomcatを使用していますが、 web.xmlの設定だけで、*.vbsを404のNotFoundにさせることはできるでしょうか?
>>112 えっ
javascript+html5 vs. flash
じゃないの?
jdkのソースでも普通にString s[];とかしてるけど? ま、社会のカスには難しすぎる問題なのかもね。
参照先を固める必要が無ければ、nullによる初期化でも変数名の宣言だけでも同じだ
125 :
デフォルトの名無しさん :2010/02/10(水) 17:51:50
>>124 同じじゃない。
String str;
System.out.println(str);
だとコンパイラではじかれる。
クラスのプロパティは暗黙的に初期化してくれてるだけ。
>>121 /*.vbs を存在しないサーブレットに割り当てる (500 になるかも知れんが)。
import java.swing.*; インポートで*を使うデメリットは何かありますか?
名前が重複する場合に困る java.util.Timerを使いたくても単にTimerと書いたらjavax.swing.Timerになってしまうので いちいちjava.util.Timerと書かなければならない
>>128 サンクス
ということは、まとめてインポートしても、コンパイルが遅くなると言った事にはならないのですか?
130 :
デフォルトの名無しさん :2010/02/11(木) 19:10:56
ArrayList<Integer> receive = new ArrayList<Integer>(); BufferedReader in; String str; public void run(){ try{ while(true){ while( !( (str=in.readLine).equals("END") ) )//"END"を確認するまで受信し続ける receive.add(Integer.parseInt(str)); //受信した文字列をint型に変えて可変長配列に追加 if( receive.get(0)==100){//初めに受信した数をチェック 操作1; System.out.println("debug:received 100"); }else{ 操作2; System.out.println("debug:received other"); } } }catch(IOException e){} } スレッドにデータを受信させて、一番初めに受けとったデータ内容をチェックして 処理を行うというプログラムを作ろうとしています。 プログラムを実行してみるとデータの受信はできているのですがなぜか debugプリントが表示されずif文を実行してくれません。 どうしたらif文を実行してくれるようになりますか。どなたかわかる方お願いします。
* でインポートすると実行時解決になるからクラスロードが少し遅れるんじゃないのか? JVM 仕様の詳細は知らんがクラスファイル覗いててそう動くように思ったが。
少しってどれほど?
JDK 1.2 頃のクラスファイルの先頭近くには java.util.* みたいなリテラルがあったんだけどな。 6でコンパイルしたの見てもねぇや。
>>130 ArrayListに入れるためにIntegerにボクシングするのは無駄だよ
ApacheのArrayIntListを使え
>while(true) { while( !( (str=in.readLine).equals("END") ) )
普通に考えて、while(true)はいらないと思うんだけど
>while((str = in.readLine) != null && str.equals("END"))
の方が安全じゃないですかね
本当に受信しているのか?
>receive.add(Integer.parseInt(str)); //受信した文字列をint型に変えて可変長配列に追加
ここの次あたりに、System.out.println(str);といれみたのか?
>>134 ない。昔からコンパイル時に解決しとるよ。
137 :
デフォルトの名無しさん :2010/02/11(木) 19:55:09
>>133 >>135 ありがとうござます。
>>133 もう片方のプログラムも確認してみてたのですがちゃんと送れていました。
>>135 135さんのおっしゃるとおりwhile文を変えてdebugしてみたところ
受信はしているようでした。ただやはり次のif文に処理が移動して
くれませんでした。
>ArrayListに入れるためにIntegerにボクシングするのは無駄だよ
ApacheのArrayIntListを使え
ということなのですが、ググッてみてもよくわかりませんでした。
よかったらご教授願えますかm(__)m
ただのボクシング・アレルギーなだけで外部ライブラリ入れれってのが無駄。 パフォーマンス的に問題がないなら無視してよし。
140 :
デフォルトの名無しさん :2010/02/11(木) 21:12:39
>>138 ArrayListについては別のプログラムでテストしてみたところ問題
ありませんでした。
あと、
while((str = in.readLine()) != null && str.equals("END"))//"END"を確認するまで受信し続ける
receive.add(Integer.parseInt(str));
System.out.println(str);
だとstrが表示されるのですが、
while((str = in.readLine()) != null && str.equals("END")){
receive.add(Integer.parseInt(str));
System.out.println(str);
}
のようにwhile文を{}でくくって受信するたびに文字列を表示しようとすると
なにも表示されません。
また、このwhile文以降のif文にも処理が移行しません。
どうしたら解決するでしょうか。
>while((str = in.readLine()) != null && str.equals("END"))//"END"を確認するまで受信し続ける >receive.add(Integer.parseInt(str)); >System.out.println(str); 上はこうのように解釈されます while((str = in.readLine()) != null && str.equals("END")) { receive.add(Integer.parseInt(str)); } System.out.println(str);
143 :
デフォルトの名無しさん :2010/02/11(木) 21:27:00
>>140 すみません馬鹿なもんで3日以上考えてもわかりませんでした・・・
>>141 はい、それはわかるのですが、なぜwhile文の外に出すと表示されて
while文の中に入れると何も表示されないのでしょうか。
>>140 客観的に説明できる理由はないな。勘違いか何かそういったあんたしか知り得ない事だろう。
>>139 200万ループもさせてどちらも1秒未満のコストであることには変わりなく、
パフォーマンスもたった3倍ほどしか違わないのか。
>while((str = in.readLine()) != null && str.equals("END")) while((str = in.readLine()) != null && !str.equals("END"))
147 :
デフォルトの名無しさん :2010/02/11(木) 21:37:27
>>146 できました!すみませんこんな簡単なミスで(T_T)
答えてくださったみなさんありがとうございました!!!!
>>139 テストの仕方が悪いな。
テスト対象のリストが使われてないことがVMにばれたら
実行時の最適化で何もしないことになる。
最適化が効かないようなごく短い時間でのアプリケーションの動作が必要ならば、
外部ライブラリを使っているなら
そのクラスロードにかかる時間も考慮に入れなきゃだめだろ。
ボクシングについては、ある程度の小さいな値なら
新しいオブジェクトは生成しないことが言語仕様で決まっていたはず。
(これはこれで間抜けなのだが)
150 :
デフォルトの名無しさん :2010/02/12(金) 00:08:25
request.setCharacterEncoding("Windows-31J"); response.setCharacterEncoding("Windows-31J"); この2つの違いはなんでしょうか
上がデコードで外の何の文字セットを内部文字セット(Unicode)に変換するか。 下がエンコードで外に対して何の文字セットで出力するか。だと思う。
requestが外へのリクエストを表していて何の文字セットで要求を投げるかで、 それに対して返ってきた応答がresponseで何の文字セットを使っているかかもしれんぞ。
先頭に何十行も import 行書かれる方が可読性が悪い。
どうせ折りたたみ機能あるエディタかIDE使うんだから
ならなおさら可読性は関係ないな。
テキストエディタ使ってんだろうから許してやれよ
158 :
デフォルトの名無しさん :2010/02/12(金) 11:37:28
JavaじゃなくてMathmaticaに関しての質問なんですが(板がないので) In[1] := Epidemic[n_, p_] := Module[{choices = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}, reject, pickAndChoose, select, newpers}, reject = {}; pickAndChoose := (select = #[[2, Random[Integer, {1, Length[#[[2]]]}]]]; If[Random[] <= p, newPers = Complement[Union[Map[Function[y, y + select], choices], #[[2]]], {select}, #[[1]], reject]; {Join[#[[1]], {select}], newPers}, reject = Join[reject, {select}]; {#[[1]], Comple, ent[#[[2]], {select}]}]) &; FixedPoint[pickAndChoose, {{{0, 0}}, choices}, n, SameTest -> (#2[[2]] == {} || Length[#2[[1]]] == n &)][[1]] ] 上を実行すると SetDelayed::write : In[1]のタグInはProtectedです. と、エラーが出るんですけど、どうしたら解決しますか? 初心者でヘルプを見てもよくわからなくて・・・わかる方いましたら教えてください。
160 :
デフォルトの名無しさん :2010/02/12(金) 11:44:51
ありましたね・・・自分がスペルミスしていたため引っかかりませんでした そちらで再度質問してみます。 わざわざありがとうございました
RMIで400KB程のxmlデータのDocumentオブジェクトを返却する際、 以下のようにオーバーフローでエラーになります。 回避する方法はあるのでしょうか? java.lang.StackOverflowError at java.io.ObjectInputStream$PeekInputStream.read(Unknown Source) at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source) at java.io.ObjectInputStream$BlockDataInputStream.readInt(Unknown Source) at java.io.ObjectInputStream.readHandle(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) 以下100スタック程あります。 JREのバグっすか? 要領制限ありましたっけ?
俺様
神様
仕様
>>161 おーい、茶々入れんでくれ〜
で、なんとなくわかったことは、単純にシリアライズの問題っぽい。
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbfactory.newDocumentBuilder();
doc = builder.parse(in);
docをシリアライズすると、↓辺の間で再起してる。
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
データ階層は深くないけど、エントリがいっぱいあって、
次のエントリに行くときにたぶん再起しているっぽい。
xmlだからそうしてんだろうけどあんまりだよ!
>>169 RMI関係なくて、シリアライズしただけで問題起きるってこと?
xmlだったらxmlのまま渡すかDigesterみたいなのでBeansにマッピングして渡すのが 一般的じゃないのかな?
だいたい DOM がシリアライズ可能なんて保証はどこにもない。
>>170 ぜんぜん回答になってねぇなw
一言居士カコイイ! 的中学生か
>>175 書きかけ
だいたい DOM がシリアライズ可能なんて保証はどこにもない。
出来たとしても (経験上大概大丈夫だが) 相手側の XML 実装系が変わったらもうだめぽ。
やるなら DOM じゃなくて文字列で送れ (シリアライズの64k文字制限ってまだあるんだっけ?)。
Swing でイベントディスパッチループってできねぇの? ファイルの読み込みに少し時間が掛かる程度で別スレッドにしたりロード中の コンポーネント状態管理するの面倒なんだが。
面倒だな
DoEventsみたいのは無理でしょ。SwingWorkerあたりが限界。
>>176 状況分からないのに回答出来ないじゃん。
>>178 イベントディスパッチループってどういうのをイメージしてるの?
別スレッドにしたくなければEDTで処理すれば良いと思うけど。
IBM JDK って単体で手には入らんの? 昔 Sun に何とか言われてバンドルでしか配布してなかったと思うけど、あれもう関係ないでしょ。
187 :
デフォルトの名無しさん :2010/02/13(土) 21:46:56
文字列中の'\'をエスケープシーケンスとして扱うにはどうすればいいでしょうか? 例えば、 String str = "あいうえお\\nかきくけこ"; を "あいうえお\nかきくけこ" に変換したいです。
課題について質問するのはちょっとどうかなと思ったんですけど、手付かずなんでアドバイスでも思って質問させていただきました。 javaを用いたホームページをつくれという抽象的な課題でとりあえず簡単にできそうなの実装してみたいと思ってるのですが、何をしていいのかわからないのですぐできそうなものがありましたら教えてください。 今は時計を表示させただけです。
>>187 str = str.replaceAll("\\n", "\n");
>>187 str = str.replace("\\\\", "\\");
おっ間違えた。\は重なってないのか。 str = str.replace("\\n", "\n");
>>188 宿題スレにでも行けよ。
JDKにJavaDBってのが付いてくるから、
それで掲示板でもつくってみろ。
ソースレベルで置換するなら合ってる
テキストボックスの中身をString型strに格納して 未入力、半角スペースのみ、全角スペースのみなら処理が走らない とやりたいのですが下記の文法で全角スペースだけうまく認識してくれません if ( str.matches("|[] +|[ ]+") ){ return; } うまく全角スペースも弾いてくれる書き方をご教授願います
str.matches("[ ]*"); 改行やタブまで含めるなら "[¥¥s ]*"
>>194 これ以上の最適解は無い
あるなら出すべき、無理だろうけど
\\\\nって文字列が入力されたらエスケープにならんくね?
自社サービスをJavaサーブレットで動かしてる会社に転職しました。 環境を聞いたらJava1.4でした…。 この先バージョン上げるつもりも無いらしい。 自分としてはせめて1.5以降のJavaで開発したかったんですが、 今でも1.4以前のバージョン使ってるサービスはよくあることなんですか?
会社の方針に従うのがサラリーマンというものだ
iアプリは最近1.5に
>>201 転職したら?
自社コードをJUnitでテストしてたら以降テストも余裕だろ。
おまえみたいに改善の提案も出せないような立場はサラリーマンとは言わん。 おまえは正規雇用のパートだ。 2006 年くらいまでの開発は 1.4 でやってるところもあったから、システムの減価償却期間 考えたらまだ 1.4 で動いているところはあるだろう。
改善の提案は出すだろ でもそれを採用してくれなかったら従うしかないだろ それがサラリーマンだろ
納得させられるプレゼンができなかったのなら、それはおまえが無能なだけだ。
去年の案件が1.2だったな。 1.4なんて全然珍しくないだろ。 バージョンアップする理由が無いなら余計な仕事を増やす必要も無い。
いえ、まだ転職できるレベルに達していないのです。 やっぱりレベル上げは強い敵を倒したほうが良いですね。
つJava SE for Business
( ^ω^)エサおいしいお
うちはJava0.9だよ
じゃあうちはJava0.1で
おこちゃまが居るな
釣られるおじちゃまが居るな
パッケージabcに所属するクラスYxzを クラスOpqにインポートした場合 import abc.Yxz; public class Opq { クラスOpqではYxzの全てを利用出来るというでしょうか?
全てと言っても private や protected なものは参照出来ないぞ。
>所属するクラスYxz >Yxzの全て 何が言いたいかわからん
222 :
デフォルトの名無しさん :2010/02/14(日) 18:19:37
javaで9×9(3×3が9個)の数独を作ってるんだが、重複判定が組めん・・・ だれか・・・
ンなアホな
フォントの汚さはなんとかならないのですか?
>>222 重複しちゃイカンという領域のデータを順に読んで、チェック変数のそれに対応
したビットを立てて行くことで、重複した数字をチェック。
・・・宿題だったら宿題スレ行け。かもしれん。
せやな
Javaってウィンドウやボタンを表示させること出キルン? 内部処理だけ?
意味が分からん。既製品のウィンドウもボタンも表示できるし、何なら自力でゴリゴリ 書けば好きなデザインと挙動で作る事も出来る。 ただ半透明ウィンドウだとか丸形ウィンドウを出したいというのはお茶濁し程度の事 しかできないが。
ですね。
AWTUtilities.setWindowOpaqueで出来ることってお茶濁し程度なん?
V2C ってデフォルトのアイコンや行間調整、フォントサイズあたりの UI 設計がダサ過ぎ。 業務アプリ臭が強すぎて使う気失せたわ。
2chブラウザはrep2一択だからね
マカー用を使っている俺は化石。
>>231 濁し程度ではないがまともに使える環境が少ない。
javaでのweb開発って何が標準なんでしょう? ちょっと前までstrutsかと思っていたら、.netの失敗プロジェクトから 開放されてjavaに戻ってきたら、strutsもlog4jもほとんど更新されてない・・・。 一体このT、2年で何が起きた??
こんにちは。質問させてください MIDIファイルを再生しながら、鳴っている音を再生と同時に「ドレミ」と表示させるようなものを作ろうと思っています。 MIDIを再生させるまではできていて、こんな感じになっています↓ Sequencer-Transmitter------Receiver-Synthesizer / Sequence (in Stream) ・SequenceはMIDIファイルのストリームを持っている ・SequencerはSynthesizerにMIDIメッセージを送っている ・Synthesizerは音を鳴らしている 多分こんな仕組みなのだと思っていて、SequencerーSynthesizer間に流れているMIDIメッセージを見ることができれば完成すると思うのです。 SequencerにはaddXxxEventListenerが二つあるのですが、コントロールイベントとメタイベントしか取得できないようです。。 何か方法はないでしょうか。
自作のReceiver実装を作成し、TransmitterとReceiverの間に挟めばいいんじゃない
239 :
デフォルトの名無しさん :2010/02/15(月) 18:12:54
>>238 Receiverのsendメソッドをオーバーライドして、MidiEventを見れる様に手を加えた物をSynthesizerに持たせる感じでしょうか。
なんかできそうな気がしてきました。回答ありがとうございます
>>236 strutsは知らないけど、log4jは開発終了、確か開発者だか設計者が抜けたんだっけ?
Logbackとslf4jあたりに移行しましょう。
PHPとかRailsに押されてどこも開発者の気力が無くなってる気がする
自分のサイトで Java 年表なんて作ってんだけどマジでここ 3-4 年は新しい話題がない。 直近で一番でかいのが Oracle の買収だよ。 log4j は、まぁログ機能なんてあれより進化は必要ないだろ。せいぜい誰が使うか分からない Appender の種類増やす程度じゃないの。まぁ可変引数使った String.format() 書式くらい 対応しろよとは思うが。標準 Logging API の件でブチ切れたメインのおっさんが抜けて 事実上 1.2 で開発中止状態 (1.3 はポシャった)。 Struts も息長いなー。フレームワークである以上おいそれと設計替えられないのは分かるけど ベースは JDK 1.1 時代の設計だろ。あんなバグだらけで素人がでっち上げたような設計 すぐ置き換わるかと思って見てたが、糞でも何でもデファクト取れば後付で MVC だ何だと 後付で囃してくれるもんなんだと感心したよ。 Logging API の件も Struts の件も、モノ作りって何なんだろうなと考えさせられた おっさんでした。
つい5年前はJava全盛期だったのに ITの世界って恐ろしい
せやな
今はなにが主流なの?
248 :
デフォルトの名無しさん :2010/02/16(火) 04:05:14
>>247 大規模なWebをPHPやらRubyやらで作るのか?
主流というか棲み分けがはっきりし出したんじゃね。
掲示板をJavaで作る必要ないよねと。
今からjava始めようと思っています。質問させて下さい。 cのプログラミングでは、visualC使ってました。これは特に理由もなく、とっつきやすそうだったからというだけの理由です。(特に不自由を感じているというわけでもありませんが。) そこでjavaを始めるにあたり、まず開発環境の構築から考えたいと思いました。 調べれば色々でてきますが、皆さんはどのようにされてますでしょうか?
Eclipse + SVN サーバ
251 :
デフォルトの名無しさん :2010/02/16(火) 05:18:01
>>251 eclipseならjdkもいらないんじゃなかったっけ。
>>243 その期間だとまさにjavafxだと思うんだが、英語読めないだろ?
英語読めないと日本だとどこにも情報はないよ。
日本のIT記事ってのはほとんど素の翻訳か英語記事の偏見的な解説だし。
うんうんそうだね で、偏見の具体例は?
>>253 うんうんそうだね。
で、君はどこのシステムで Java FX 開発したんだい?
日本語で読めるjavafxの情報源ってないよね。 英語だとjdk1.6 desktop+scriptingの目玉なんだけどね…オリンピックのサイトとかもjavafxだけどそれを知ってる日本人開発者は少ない。
まー、確かに日本語圏だとあまり紹介されてない技術はけっこうたくさんある。
何で英語に飛躍するんだ??? そんなに欧米コンプレックス?
必要ないものは紹介しなくていい
俺の知ってる範囲だと、OSGiとか、最初の仕様策定から既に10年も経ってるのに、 未だにまともな日本語の文献ないよな。Eclipseの基幹技術でもあるのにね。
情報キーワードだけ追っかけてる人間はどうか知らんけど、 現場から見りゃ単に仕掛けたけど流行りませんでしたという代物。
オジサン口臭い〜
現場(キリリッ
265 :
デフォルトの名無しさん :2010/02/16(火) 07:55:57
最近始めた人は J2EE, XML あたりの大バブル時代を知らないから JavaFX 程度でも印象に
残ってんじゃないの。ぶっちゃけ ○dobe あたりで見たようなという印象しかなかった。
>>263-264 はそんな氷河期世代かw
>>265 Mac OS X で Chrome だと実行不能 (The application uses Java, but Java is not supported
by your system. Use a computer with another operating system to view this applicaiton.)
FireFox だと「アクセスを要求しています」の警告ダイアログが出て固まった。
やる気ねーなー。
うわぁぁぁ英語だ〜
>>266 (日本語圏で)バズってるかどうかだけが判断基準とか、ずいぶんと浅薄な技術観をお持ちですね^^;;;
>>267 自分のPCのショボさを責任転嫁ですか?
とりあえず英語の警告文になんて書いてあるか読んでみ。
>>269 だからおまえがどこの開発で携わったか出してみ?
英語のサイトで調べて実際に手動かしてこれは流行らんと思ったって話。
おまえは記事読んだところでお花畑になって終わっただけだろ。
Mac OS X で Chromeってのはブラウザシェアをどれほど持ってるわけ?(システムの開発コスト的に)
273 :
デフォルトの名無しさん :2010/02/16(火) 08:26:37
JavaでH.264を扱えないか調べたら、ちょうど今年の1月にコーデックが出来たみたいだということがわかった。
グ〜グルでもbuzzってのを出してますがバズってなんですか? 最近そういうバズワ〜ドって流行ってるんですか?
275 :
デフォルトの名無しさん :2010/02/16(火) 08:30:26
>>271 えっ?!asahi.co.jpですよ?
当然現場現場してますし〜
おやかた、空から女の子が降ってきた!
>>275 おまえ Eclipse スレで暴れてるバカだろ
278 :
デフォルトの名無しさん :2010/02/16(火) 08:39:26
そのスレってさ、いい年こいた「ネトウヨおやじ」が暴れてるんだろ? 黄色い昭和臭がプンプンして臭うんだよね(><)
F
280 :
デフォルトの名無しさん :2010/02/16(火) 08:44:36
フォルトの名無しさん [] :2010/02/14(日) 07:35:49
>>911 お前はテレビや新聞が偏向報道をしている事実もしらんのか?
客観的に記事内容を把握できる点だ。
アカヒ新聞とか毎日変態新聞とか日刊ヒュンダイとかしか読んでない奴は
ずっとそういったメディアに騙され続けて民主党や社民党や共産党や公明党に
投票しちゃうわけだ。
そして既存メディア自体が、広告主からおもったほど広告の効果が得られないとして撤退されて痛い目にあっているという事実。
ネットの影響で広告収入も減ってしまったという事実。
そんな調子だからやつらは必死なわけだ。
うわぁぁっぁぁぁぁぁぁ英語だ〜
>>239 >>241 他、
>>236 の回答ありがと〜!
何も起きなかったから、すたれたのか・・・。
それにしても、業務系のWebアプリをクラスタしたり、ダウンタイムなしでとか言われたら
Java以外って選択肢になるの?
この1、2年のブランクでJava仕事できなくなってるかも・・・困ったな。
英語すら出来ない人、三単元のsすら面倒な人は諦めてマイクロソフトを使ってください。
三単元って久しぶりに聞いた。どこの受験生さん?
285 :
デフォルトの名無しさん :2010/02/16(火) 09:38:04
>>277 小泉純一郎の経済政策は正しかったのだが。
あのグローバル資本主義を否定している輩は
社会主義者とか共産主義者とか
赤 い 旗 を 振 り 回 し て い る 連 中 だ
おまえらvipでやれ
287 :
デフォルトの名無しさん :2010/02/16(火) 10:08:58
>>282 金額、納期とかにもよるだろ。
そもそもクラスタってどのレベルだ?
セッションごとクラスタしたいのか、
ただの負荷分散でいいのか。
裏っかわの業務ロジックの量にもよるし。
ふつーのECサイト程度なら、
PHPでもRubyでもいいんじゃね?
オンライントレードとか重たい処理が絡むなら、
Javaにしとけばいいんじゃね?
>>287 金融系多かったので、Java以外って選択肢が思い浮かばないです。
今だとPHPとかRubyも金融系で使われてるのかな?
浦島太郎になった気分。
少ない経験だけど、どとねと使って負荷高い仕事受けるのは自殺行為
だというのだけはわかったから、Javaでちゃんと設計から製造までしたいです。
289 :
デフォルトの名無しさん :2010/02/16(火) 10:45:19
>>288 じゃあJavaでやればいいと思うよ。
少なくとも日本じゃPHPやRubyで金融系なんてめったにないだろ。
別にJavaがすたれたわけじゃなく、
わざわざJavaで作らなくてもよかったのをJavaで作らなくなっただけ。
PHP、Rubyのスペシャリストたくさん抱えてますとか、
他に要因なければJavaでやって誰も文句言わないだろ。
え?.netだめなの?.net最高だけど
こんなところで聞いてるようじゃただの脳内ネタかカス野郎だろ相手にするな
monoみたいな環境がもっと普及すれば.netもねぇ。
294 :
デフォルトの名無しさん :2010/02/16(火) 12:29:18
>>292 といってもMSとしては.netがLinuxで動いていいこと、
一つもないからなー。
エクセルやらワードやらがLinuxで動きますってなった時に、
OSのシェアどれだけ食われるか恐れてるんじゃないか?
linuxで動けば.netでもいいという感性がよくわからない
MS にとっちゃ Linux でも動いてもらった方が良いに決まってるじゃん。 SQLServer や IIS (名前変わってたっけ?) で営業切り込めるんだし。 ただ単価やっすい Linux 客取れる程度じゃ開発費の割に合わんというだけ。
297 :
デフォルトの名無しさん :2010/02/16(火) 13:00:50
>>296 逆だ逆。
MSににしてみたらWindowsServerを売るための、
SQLServerであり.netだと。
linuxで.netが動いてもなんか不安 やはり純正がいい。だからlinuxで動く必要なんて無い。
>>289 金融系っていったらJava!だと思ってたので、Strutsやらlog4jやら更新されてないのが
気になっただけです。
PHPでもRubyでも.netでもお客がそれでやれって言われたらやるしかないし。
けど、1、2年前の感覚だとPHPやRubyでクリティカルな業務やっていいの?っていう漠と
した不安があっただけです。
にしても、.netだけは日本のわがままなお客さん相手では使えないと思うけどなぁ・・・。
機能どうこうと言うより、お客さんの要求を満たそうとすると.netの便利機能を使わないように
設計しないと・・・と思った。
.netが完全に使い物にならないならまだいいんだけど、やろうと思えばやれちゃうからね〜・・・。
えっ?.netの便利機能使ってたの? それはダメだわ。あほすぎる。
>>297 だから「Web は Linux でも .NET が動きますのでバックエンドはぜひ WinServer で」 という
提案ができるじゃん。そういう段階侵食できる基盤がないから囲い込みしか手がないんだよ。
ここってさ、「ジャヴァ」スレなんだけど.netの便利機能ってなに?
金融系でRubyが駄目な理由なんて別に無いんだけどね。 保守的なお客さん都合でJavaが採用されるだけ。 少し前までは考えられなかった食べログのようなマンモスサイトでも普通にRailsが使われるようになったし そのうち金融系にも動的言語が入ってくると思うよ。
Javaだってメジャーになって15年くらい経ってるから Rubyはこれからだな
金融系のシステムってのは関連子会社や地銀、信金、サラ金なんかへ 何十年も延々と下取りに出され、そのあいだずっと保守するんだよ。 食べログみたいな一代で終わるところとは考え方が違って当然。
でもRuby良すぎだよね。Ruby初めて三日目だけど。
昔は金融系システムの開発っていうと優秀なエンジニアが担当するイメージだった。 今じゃ誰もやりたくない糞溜だけど。
ちなみに金融系ってどんなの?
Javaで金額を扱うのはBigInteger?
金融系っつても基幹系ガチガチのからWeb系お祭りサイトまで色々だろ
311 :
デフォルトの名無しさん :2010/02/16(火) 13:43:17
金融系の優秀なエンジニアが野糞を開発したと聞いて
312 :
デフォルトの名無しさん :2010/02/16(火) 13:51:17
Javaもいい意味でCOBOL化してきたよな。 でも、COBOL→JavaほどJava→Rubyに差がないから、 Rubyに乗り換えることに魅力を感じない。 言うと大規模システムをRubyで作るメリットがない。 あと、eclipseが強力すぎる。 Rubyにもeclipseくらい便利なものが出てくればあるいは。
radrailsはeclipse以上の開発効率だと思うけど。 まぁ自分はrubyを生で使うからdebianでvimだけど
314 :
デフォルトの名無しさん :2010/02/16(火) 13:59:26
>>313 eclipseについては、
生産性というより保守性かもしれん。
リファクタ機能やら参照検索やら。
他人が作ったソースでもeclipseがあれば、
なんとなく追えるし。
315 :
デフォルトの名無しさん :2010/02/16(火) 14:35:43
金融系の優秀なエンジニア達が野糞をしていると聞いて
入力支援が人間の思考、入力速度についてこれるくらいには、 レスポンスが高速でないと話にならんよな>生産性 2,3文字入力&補完、程度のことはコンマ何秒でできて欲しい
ですね
エラい小手先で生産性評価されてんだな。バイトか?
バイトですかね?
たぶん金融系の方でしょう
でしょうね
322 :
デフォルトの名無しさん :2010/02/16(火) 18:03:37
antでjavacしてビルドエラーがあると、自分の環境ではエラーメッセージが出ません 失敗したこと自体、気付けません クラスパスの設定ミスとかがあった時、どのクラスが見つからないのか判別できません これは何かの設定でかえれるのでしょうか? Eclipseからbuild.xmlを右クリックして実行しています
323 :
デフォルトの名無しさん :2010/02/16(火) 18:05:48
金融系の優秀なエンジニアが糞溜で泳いでると聞いて
324 :
デフォルトの名無しさん :2010/02/16(火) 18:36:31
>>322 eclipseのコンソールにantの実行結果が出ないってこと?
なんで失敗したってわかるの?
コマンドプロンプトから実行したらどうなるの?
325 :
322 :2010/02/16(火) 18:47:12
>>324 javacタスクのコンパイル結果をcompiledと言うディレクトリに入れているのですが、
build.xmlの最初でこのディレクトリは毎回削除するようにしているので、
ビルドが成功しているなら*.classファイル群がコンパイル結果として入り、失敗していれば空なわけです
具体的には今回新しいライブラリを追加したのですが、
クラスパスの設定が間違っているのかコンパイル結果が出てきません。
新しいライブラリが不要な以前のコードに戻すとコンパイル結果が入ります。
eclipseのコンソールには、
[javac] Compiling 3 source files to DIRECTORY_PATH
と言う一行が最後の出力となって出ています。
それ以外は
Buildfile:
などの通常のantの出力です。
要するに、javacタスクの内部で発生したエラーについて報告が無いんですよね
antスクリプトとしてのエラーなら、例えばcopyタスクで指定したファイルが存在しなかったりするとかはちゃんとエラーが出るのですが。
326 :
デフォルトの名無しさん :2010/02/16(火) 19:33:08
最近リフレクションを勉強しているのですが、解らないので質問させて下さい サブクラスから元のスーパークラスを知る事は簡単ですが、 スーパークラスからサブクラスを知る事はできるのでしょうか?
327 :
デフォルトの名無しさん :2010/02/16(火) 19:38:48
railsからjavaへの移行案件とか見てると、無茶しやがってと思うけどなw phpとかrubyで作ったのはいいが、冗長か出来ずに糞高いロードバランサ機材に金つぎ込む羽目に成るだけじゃ?
329 :
デフォルトの名無しさん :2010/02/16(火) 19:45:57
>>326 もうちょっと具体的に何がしたいのか。
A extends B
のときに、
BでAという名前が取得したいとか、
BでAのメソッドを使いたいとか。
330 :
デフォルトの名無しさん :2010/02/16(火) 19:53:52
Javaだと [DMZ]webサーバ(apache)→[内部]APサーバ(weblogic)→[内部]DBサーバ(oracle) ってやるけど、 RubyやらPHPってどうしてんの? weblogicのところがapacheになって、 そこにアプリケーションおくの?
331 :
デフォルトの名無しさん :2010/02/16(火) 20:08:35
>>329 BでAという名前を取得したいのです
名前さえ解ればforNameとかで結構どうとでもできるので
332 :
デフォルトの名無しさん :2010/02/16(火) 20:17:47
>>331 よくわからん。
これじゃだめなのか?
public class Test2 {
public static void main(String[] args) {
new A().print();
}
}
class A extends B {
}
class B {
public void print() {
System.out.println(this.getClass().getName());
}
}
334 :
326 :2010/02/16(火) 20:28:01
>>332 ごめんなさい、そういう意味ではないです
特定のクラスのみサブクラスを取得できるのではなく、
すべてのクラスでサブクラスを取得出来るような方法が知りたいのです
例えばAbstractListからArrayListやVectorなど、既存クラスにも適用したいと考えています
クラス名を取得して呼び出すようにするのはだめなの?
>>334 jarファイルの中を覗いていけば、Class.forNameとか使いまくってやれん事もない。たぶん。
しかし、ここらへんはクラスローダの制約ってのもあるので、厳密に網羅するのは無理やね。
337 :
デフォルトの名無しさん :2010/02/16(火) 21:00:01
サブクラスを取得する目的が分からん 設計がおかしいんじゃないの
JavaEEなら最近は普通の試みではある。
340 :
デフォルトの名無しさん :2010/02/16(火) 21:07:47
コードチェッカみたいなんを作ってるのかもしれん。
かもしれんね。
342 :
デフォルトの名無しさん :2010/02/16(火) 22:02:16
金融系の優秀なエンジニアが糞だったと聞いて
343 :
187 :2010/02/16(火) 22:23:11
>>189 >>190 だいぶ遅れてしまいましたが、ありがとうございます。
それだと、
\n の他にも \rなど全ての特殊文字を置換しないといけなくて、
それをどうにか一括でできないかなと思ったのですが、
上手い方法はなさそうですね。
javadoc 6の日本語版って公式からダウンロード出来なくなってませんか?
しらない
>>346 ありがとうございます
5のドキュメント使ってました^^;
348 :
デフォルトの名無しさん :2010/02/17(水) 04:41:09
すいません。質問なのですが、テキストフィールドから入力した値を 取得してint型の変数aにいれたいのですが、どうも上手くいきません。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class test extends Applet{ int a; TextField tf; public void init(){ setBackground(Color.white); tf = new TextField("1",3); a = Integer.valueOf(tf.getText()).intValue(); } public void paint(Graphics g){ //このクラスでaを使う } } コンパイルはできるのですが、テキストフィールドが表示されませんでした。 まだjavaは始めたばかりで調べながら切り貼りで作ってるのでおかしなとこがあると思いますが、よろしくお願いします。
とりあえず、ここに無い表示部分のコードを出せ
マカってホント情報弱者だなw
>>349 前述した部分だけがポイントですので問題ありません。
あまりたくさん貼ってもスレ汚しだと思いますので。
Appletにtfをaddしていない
353 :
デフォルトの名無しさん :2010/02/17(水) 07:35:16
>>349 まだjavaは始めたばかりで........
表示部分のコードを出せ
355 :
デフォルトの名無しさん :2010/02/17(水) 08:46:23
( ;^ω^)ハズカシイ.....
356 :
348 :2010/02/17(水) 09:09:39
アドバイスありがとうございます。 以下のように修正してテキストフィールドの値を変更してエンターを押してaの値を変えたいのですが、イベント処理の使い方が間違ってるらしく反映されません。 public class test extends Applet implements ActionListener{ int a; TextField tf; public void init(){ setBackground(Color.white); tf = new TextField("1",3); tf.addActionListener(this); add(tf); } public void actionPerformed(ActionEvent e) { a = Integer.valueOf(tf.getText()).intValue(); } public void paint(Graphics g){ //ここでaを使う } } また、表示部分のコードとはどの部分のことでしょうか?
それすらも分からないとは!
ソースをどっかにうp
360 :
デフォルトの名無しさん :2010/02/17(水) 10:23:58
Map map = req.getParameterMap(); Set<Entry> entries = map.entrySet(); out.print("<br>すべてのパラメータ"); for(Entry entry : entries){ out.print("<br>"); out.print(entry.getKey()); out.print(":"); out.print(entry.getValue()); } 出力がおかしくなるんですが、なぜなんでしょうか。
順番が思ってるのと違う、ってことなら HashMap使ってるんじゃないの?
全部printで1行に出力されてるとかじゃね? だったら一番下をprintlnに
とおもったが、コンソールじゃないのかスマソ
364 :
326 :2010/02/17(水) 11:52:26
遅れてしまいましたが、皆様ありがとうございました。 これから色々試してみたいとおもいます。
365 :
デフォルトの名無しさん :2010/02/17(水) 12:01:46
すべてのパラメータ checkbox:[Ljava.lang.String;@12c4768 text2:[Ljava.lang.String;@4298e text1:[Ljava.lang.String;@1443800 出力結果は上のようになります。 ここで、 out.print((String)entry.getKey()); out.print((String)entry.getValue()); というようにStringに明示的にキャストしてみると、今度は、ClassCastExceptionが出てしまいます。
>>364 Eclipse で該当クラス選択して F4 押せ。
独自でやるならクラスパスから JAR やクラスファイルを検索して、そのクラスファイル名から
クラス名を作って forName()。確実ではないが、インストールされているドライバクラスなど
を一覧表示するためとかにやってみた事はある。
まぁ結論を言うとリフレクションでは出来ない。JVM のクラスロード機構自体そういうことが
できる設計になっていないし。
>>365 out.print(Arrays.toString((String[])entry.getKey()));
回答側の質落ちてんな…
×getKey() ○getValue() オレモナー
369 :
デフォルトの名無しさん :2010/02/17(水) 12:17:17
>>367 ありがとうございました。
これからなお一層Javaの学習に励みます。
360に対して361はまっとうな回答だと思うけど。
371 :
360 :2010/02/17(水) 12:26:33
372 :
デフォルトの名無しさん :2010/02/17(水) 12:28:41
?
375 :
デフォルトの名無しさん :2010/02/17(水) 15:39:11
ソースコードを同梱しないバージョンの、バイナリー配布物に テストコードとかjunitのjarファイルとか含める必要ってなにかあるんですか? OSSアプリでそういうのがあったんですが
そのバイナリーが本当に正しく動作するのかどうか自分の目で確かめなくては不安でたまらないという人のために
Q: こういう場合どう動きますか? A: テストコード読めカス
378 :
デフォルトの名無しさん :2010/02/17(水) 16:46:41
Eclipseで複数のJavaプロジェクトを開発しているのですが、 複数のプロジェクトで共有したいクラスがある場合、どうやるのが良いですか? 別プロジェクトからパスを通すか、 シンボリックリンクを使って各プロジェクトに置くか。
レベルの低い質問だとは思うんですが、、答えてくれるとありがたいです。 インターフェーイスは名前や型のみで中身がないものだと習いました。 JAVAのAPIにあるインターフェイスが中身のある(機能が書いてある)メソッドを持っているのはどういうことなのでしょうか?
380 :
348 :2010/02/17(水) 16:55:25
>>359 ありがとうございます。
repaint()で呼び出すと上手く実装することができました。
ウチは共通機能だけでプロジェクトを独立させてるかな。 まあテストコードもプロジェクト単位で置いてるからだけど。
>>379 インターフェイスは機能の振る舞いを定義するものだぞ。
抽象クラスとかと勘違いしてね?
JavaのAPIって、標準API?どれ?
>>379 中身は無いよ
このインタフェースはこれこれこういう機能を提供するという約束にするのでこのインタフェースを実装するクラスはこれに従って書いてくださいね、っていうお願い
APIドキュメントのメソッドの定義を見て実装と勘違いしてるんじゃない?
interfaceってキーワードが書かれてたら中身なんて書けないよ これは純粋仮想クラスだから 仮想メンバと具象メンバ両方持ってたらそれはinterfaceじゃなくただの仮想クラス(非純粋)
>>381 共通機能プロジェクトでjarファイル生成して他プロジェクトに持たせるなりパス通すなりとかですか?
388 :
デフォルトの名無しさん :2010/02/17(水) 17:19:24
ボクには難しすぎます><
>>378 共通プロジェクト作っておいて、そこの build.xml を実行すると JAR 作って
参照先のプロジェクトにコピー。
めんどくさい場合や共通クラスの方も同時に開発中で更新が多い場合は単にプロジェクト参照。
391 :
379 :2010/02/17(水) 17:48:55
>>382 ,383
インターフェースに中身が無いことはわかりました。
今Mixerクラスでこんなメソッドを使っているんですが
Line getLine(Line.Info info)
使用可能で、かつ指定された Line.Info オブジェクトの記述に一致するラインを取得します。
このLineというのはインターフェースなんですけど、このgetLineで取得したLineインターフェースはインスタンスとなって中身を持ち、メソッドにある機能を使うことができるということなんですか?
元々は中身ないけど、あるクラスのget○○を使えば書いてあるメソッドを使うことができますってことであってます?
>>391 Lineがインスタンスになるんじゃない
Lineを実装した何らかの別のクラスのインスタンスを返すのよ
例えば
class ConcreteLine implements Line {
// Lineの実装をつらつらと書く
}
class ConcreteMixer implements Mixer {
Line getLine(Line.Info info) {
return new ConcreteLine( ......... );
}
}
みたいな感じになってると思ってください
Lineインタフェースには中身は無いが、実際に返されるのはConcreteLineクラスで、それには中身がある
appletでOutOfMemoryが発生すると、発生段階まで更新した内容で画面が描画されます。 それはいいのですが、なぜかその後画面操作ができてしまうのですが、 OutOfMemoryなのに、なぜその段階でアプリケーションが終了しないのでしょうか?
>>393 新たなオブジェクトをnew出来ないだけでは。
例外が投げられてもキャッチされれば別に終了したりしない キャッチされるまでメソッドを脱出するぶんメモリが空くし
>>391 長文ウザイ
オブジェクト指向の本で勉強しろ
397 :
379 :2010/02/17(水) 18:30:03
>>392 すいません、言い忘れていましたが標準APIのやつです。javax.sound.sampledインタフェース Line
Lineインターフェースには機能が書いてあるメソッドが9個あるんですが、それらの中身が無いことまではわかりました。
Lineインターフェースのメソッドの機能のコードを書くというのは自分には無理です・・
>>391 は間違っていますか?
>>389 それだとantで配布バージョンへビルドするときに、ビルドスクリプトに外部プロジェクトのパス通したりしないといけないのがどうなのかなと思って
でもjarファイルにして持たせるとバージョンアップのたびにjarファイルを置き直さないといけないしそれも面倒なんですよね
>>390 をおおおお
ありがとうございました。
すっきりしました。
>>397 なぜ自分で書く必要がある?
それはMixerの中の人がやる仕事であって、あなたはすでに誰かが書いたMixerを使うだけでしょ?
コーディングする前にJavaの勉強からだな
なんかスレが活発でなによりだな。中身がなくてすまん。
レイヤードの依存性を徹底する意味でプロジェクトを分けることも多いな。 最近のお手軽開発志向とはずれるんだろうけど。 開発時点では即時性が失われるのでjar使わない。
405 :
デフォルトの名無しさん :2010/02/17(水) 21:27:22
VB.NETの方が簡単だお^^
>>393 まずはじめに。
あなたの実行しているプログラム上ではいくつかのスレッドが走っていますが、
そのうちどれかひとつでも終了すればプログラムが終了する、というわけではありません。
また、Cのようにメインスレッドが終了すれば(main関数を抜ければ)プログラムも終了する、というわけでもありません。これについては以下の項目と項目からのリンクが参考になると思います。
http://javafaq.jp/S065.html#S065-37 次に、今回の事象について。
おそらくOutOfMemoryが発生したのはイベントディスパッチスレッド(EDT)上だと思います。
EDTとは、上のリンク先ページ[S065 Q-14]にもありますが、例えばユーザがボタンを押したときに実行される
actionPerformedメソッドなんかが走るスレッドだと思って下さい。
EDTで発生した例外をキャッチし対処しなかった場合、EDTは終了します。
しかし、EDTは終了しても新しいEDTが自動的に起動されます。
従って(スレッドローカルなデータでなければ)無くなりはしないので、
気にせず継続できてしまう場合も多いです。
ただし(当たり前ですが)例外を送出したところから処理が再開されるわけではなく、あくまで
イベントディスパッチスレッドの再起動なので、意図しない状態になっていることも十分あり得るでしょう。
EDTが終了することによって、例えば以下のような問題が発生します。
ttp://www.noids.tv/2009/01/java-joglopengl.html JOGLは詳しくないのですが、これはJOGLがスレッドローカルな状態を持っているために発生しているのだと思います。
408 :
デフォルトの名無しさん :2010/02/17(水) 22:19:12
質問です。 Eclipse VisualEditor でAWTのみ使っています。 実行すると最初からflameを2つ表示させるにはどうすればいいでしょうか?
EDT終了ってホントかよ。 これってバグって言うよりもAWTの中の人じゃないと無理。 ドキュメントとかどこかにソースあるの?
AWTの中の人の叫び声が聞こえたような…気がした……
413 :
デフォルトの名無しさん :2010/02/17(水) 23:05:47
ハゲチャビン
414 :
デフォルトの名無しさん :2010/02/18(木) 08:48:44
現在就活中で、Javaを用いたWebシステムに特化した企業に興味があるんですが、 将来性とかどうなんでしょうか。 社員の9割以上がJavaを使用してるらしいんですが。
>>414 そのうちマイクロソフトを買収するんじゃないかな?
完全に下降線だけど将来性が無くなるってほどでもない Javaが最適解になり続ける分野は残るはず
5分ほど前から勉強を始めた初心者です。 配列変数なのですが、 int[] a; と宣言。 後から初期値を設定することは出来ないのでしょうか? やってみたのは int[] a; a = new int[]{1,2}; なのですがエラー。
public class Test { public static void main(String[] args) { int[] a; a = new int[]{1,2}; } } 問題なく動いたよ? 空白が全角だからじゃね?
エラーの時は何がエラーなのかを書かないとエスパーの出番だぞ。 コンパイルエラーなのか、実行時エラーなのか。
>>416 c,c++,php,c#とやってきて今javaやってるとjava圧勝だろと思うんだが
C#はまあ対抗になるかもしれんけど
javaって下降線なの?
うわぁ、世間が全く見えてないなw
List<String>[] list = new List<String>[2]; でエラーになるんだけど総称型の配列って出来ないんだっけ? どう書くのが正しいの
一言煽りは最近ここに常駐してるニートなので無視してよし
>>422 List<?>[] list = new List<?>[2];
<?>以外の配列は作れない仕様
425 :
デフォルトの名無しさん :2010/02/18(木) 12:41:47
Swingの勉強をしているのですが、 KeyListenerの、keyReleasedが処理されずなぜ処理されないのか悩んでます。 keyPressedと、keyTypedは、正常に感知し処理してくれます。 どなたかアドバイスいただけませんでしょうか? import javax.swing.*; import java.awt.*; import java.awt.event.*; public class KeyEventTest02 extends JFrame{ public static void main(String[] args) { KeyEventTest02 w = new KeyEventTest02("KeyEventTest02"); w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); w.setSize(300, 120); w.setVisible(true); }
426 :
デフォルトの名無しさん :2010/02/18(木) 12:41:55
public KeyEventTest02(String title) { super(title); JPanel panel = (JPanel)getContentPane(); JTextField tf = new JTextField(); tf.addKeyListener(new KeyCheck()); panel.add(tf, BorderLayout.NORTH); } class KeyCheck implements KeyListener { public void keyPressed(KeyEvent e) { System.out.println("キーが押されました"); } public void keyTyped(KeyEvent e) { System.out.println("キーがタイプされました"); } public void keyReleased(KeyEvent e) { System.out.println("キーが離されました"); } } }
>>424 マジ? 超意味ねー。@SuppressWarnings で逃げるか…
>>427 作ることはできないけど@SuppressWarnings使うなら無理矢理キャストすることができないこともない
@SuppressWarnings("unchecked")
List<String>[] list = (List<String>[]) new List<?>[2];
たぶん一番正しいのは List<List<String>> だと思うけど・・・
429 :
デフォルトの名無しさん :2010/02/18(木) 13:20:03
もう面倒だからオラクルなんかやめてマイクロソフトにするわw
ファイルの内容をバイナリレベルで比較したい場合って JNI 使わない限り 最終的に 1 バイト単位で比較して行くような方法がないですかね?
えっ
java.nio.MappedByteBuffer#equals() とエスパー回答しとく
インターフェイスは実装クラスでnewしろよ……
勘違い
クラスAがBをもって クラスBもAをもつ と言う設計はおかしいですか? クラスCを作ってAとBを並列に持つべきでしょうか
えっ
>>436 おかしい?
目立つと叩かれるので、周りに合わせたいのですか?
自分が正しいと思った道を進みましょう
相互参照なんて別に珍しい事じゃない。 持つべきじゃないケースとしては「設計上で依存性を排除するため参照させない」とかだな。
くぅ〜。はらへったぁ〜。
441 :
デフォルトの名無しさん :2010/02/18(木) 18:51:35
マイクロソフトじゃなくてさアップルの方が未来あるお^^;
442 :
デフォルトの名無しさん :2010/02/18(木) 21:40:46
>>436 おk
VBAとかの低次元言語じゃないからな
未来がある会社はあんな糞デスクトップは押し付けない
444 :
デフォルトの名無しさん :2010/02/18(木) 21:58:27
グーグルに未来があるとは思えないけどな
というか独占だけはやめてほしい
MouseAdapterとかのアダプタークラスはアダプターパターンと違うようなんですが どういう経緯でAdapterというようになったんですか?
447 :
デフォルトの名無しさん :2010/02/18(木) 22:44:32
<servlet> <servlet-name>Test1</servlet-name> <servlet-class>Test1</servlet-class> </servlet> <servlet-mapping> <servlet-name>Test1</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>Test2</servlet-name> <servlet-class>Test2</servlet-class> </servlet> <servlet-mapping> <servlet-name>Test2</servlet-name> <url-pattern>/Test2</url-pattern> </servlet-mapping> /Test2にアクセスした場合、Test2のみが使われ、Test1が使われません。 一体どうなってんでしょうか。
ゴスリンのセンス
449 :
デフォルトの名無しさん :2010/02/18(木) 22:55:29
middlegenでモデルクラスを自動生成すると、複数形の変換を間違えるんだけどどうすればいい? bagsテーブルからbagクラスを作るのはいいけど、 boxesテーブルからboxeクラスを作るんですけど。
アダプタークラスはゴズリンが名づけたんですか。 一見アダプターパタンと違うようですけど何か深い洞察があったのでしょう。 ところでMouseAdapterですけどこういうListenerをただ実装しいる(空でも)だけのクラスは、Adapter以外ならどういう名前が良かったのでしょうか。
別にアダプタとして使うんだから間違った名前とは思わないけど。 ふさわしい名前が思いつかないときは 抽象クラスなら「Abstractほげほげ」 ただの実装なら「ほげほげImpl」 DIコンテナ全盛期はこんなクラスで溢れかえってたプロジェクトも多いはず。
>>451 ソースはっつけて実行してみたよ。
キーが押されました
キーがタイプされました
キーが離されました
キーが押されました
キーがタイプされました
キーが離されました
動いてるぽいが?
>>451 内部クラスを使うならインターフェイスを使うじゃなくて、
KeyAdapterを継承したほうがスッキリと書けると思うよ
>>453 ありがとうございました。
どうやら、プラットホームの違いで動作に違いが出るようでして、
Windowsでは正常動作を確認しました。
ありがとうございます。
>>454 普段はアダプタークラス使うんですが、
3つのメソッドすべてオーバーライドするんで、
リスターの方を継承してみました^^
java.net.Authenticator#setDefault(Authenticator) がセキュリティマネージャーに禁止された状態で、 BASIC 認証のあるサイトにアクセスするにはどうすりゃいいんだ?
>>456 しょうもない突っ込みだけど、リスターじゃなくてリスナーっすw
>>457 自分で Authorization ヘッダ送れば?
寝ているスレッドを強制的に起こすことはできないでしょうか? 特定の条件を満たした際に強制的にスレッドを継続実施したいのですが。
Object#wait() Object#notifyAll()
すみません、waitではなくsleepしているのです。
public class Foo{ private final Object signal = new Object(); public void run(){ … // Thread.sleep(60 * 1000); synchronized(signal){ signal.wait(60 * 1000); } … } public void wakeup(){ synchronized(signal){ signal.notify(); } } }
説明してあげなよ(笑)
あ、言っておくけど寝ているスレッドを起こすには別のスレッドから起こしてやらないと行けないから。
ニートが目覚めるとアップルになってしうので強制的に起こすようなことは出来ません。
画面系なんですが、ユーザーの指定によってある処理の 起動登録→保留(wait、実際の起動もユーザー操作による(notify、notifyAll)) 指定時間経過で起動登録→保留(sleep) こんなのがありまして、特定条件時にsleepをたたき起こしたかったのです。 レスを参考に検討してみます。
Javaってどうして終わっちゃったのですか?
あれ?本や解説HPではコンポーネントをコンテンツペインに登録しないといけないとあるけど、 直接トップコンテナに登録してもエラーも出ず動いてるけど・・・ 別にコンテンツペインに登録しなくて直接登録してもよいの? import javax.swing.*; import java.awt.*; public class MyTest { public static void main(String[] args) { JFrame w = new JFrame("直接登録のテスト"); w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b = new JButton("気が済むまで押せばいい"); w.add(b); w.setSize(350, 250); w.setVisible(true); } }
>>471 想像だが、リサイズされたときの再描画や、
ボタンを押したときのイベント通知がひょっとしたら動いてないのかも。
とりあえず画面に出て、ボタンクリックできてるだけで。
>>471 1.4まではエラーだった
5.0以降、直接トップコンテナに登録しようとすると、自動的にコンテントペインに転送されることになった
うん、何か気付いたらいつの間にか JFrame に直接 add() しても怒られなくなってたんだよねー。 気にはなっていたがちょっと調べてみたら、Java 6 の API リファレンスにこう書いてあった。 > 便宜上、add とその派生メソッド、remove および setLayout は、必要に応じて contentPane > に転送されるようにオーバーライドされています。つまり、次のように記述できます。 > frame.add(child); > 子は contentPane に追加されます。
>>459 やっぱそうするしかないか。
何か便利なメソッドがあるかと期待したんだけど。
ないない
今発見したんだけどjavaで double d=0; d1=d1*-1; とすると d1=0.0 ではなく d1=-0.0 という値になりますね。
479 :
471 :2010/02/19(金) 20:53:37
>>472-474 レスありがとうございました。
直接登録して良いんですね〜
5.0より以前のjavacでコンパイルする事ないんで、
ガンガン直登録していきます
ありがとうございました。
480 :
デフォルトの名無しさん :2010/02/19(金) 21:06:54
Windowのサイズを変えたり、最小化するなどしないと テキストボックスが表示されません。 プログラム起動と同時にテキストボックスを表示するにはどうしたらいいでしょうか? public class test4 extends JFrame{ public static moji north_fild; public static void main(String[] args) { new test4("テスト"); } public test4(String title){ //WIONDOW設定 setSize(800, 600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); //テキストボックス north_fild = new moji(); getContentPane().add(north_fild, BorderLayout.NORTH); this.repaint(); } } public class moji extends JPanel{ JTextField area2; moji(){ area2 = new JTextField ("",10); area2.setText("ewtewqt"); area2.setDragEnabled(true); this.add(area2); } }
マイナスになっちゃうよw
>>480 × this.repaint();
○ getRootPane().revalidate();
485 :
デフォルトの名無しさん :2010/02/19(金) 21:58:50
質問 引数にint[]を持つような関数↓ void func1(int[] ints){} これに、new int[]{}しないで動的に値をぶち込みたいんですけど、方法はありますでしょうか。
動的に作った int 配列を渡せば良いじゃん。
動的に値をぶち込みたいってのが良くわからんのだが…
動的にnew int[]{}すればいんじゃないか?
いや、ただnew使いたくないだけ。 void func1(int[] ints){}を呼ぶときに、値(1,2,3)を渡すとして、普通なら func1(new int[]{1,2,3}); って書かなきゃいけないところをなんとかしてnewを外す方法を知りたかった。 newってされてるといつガベコレ走るか分からんし、 ただの配列宣言なんだからint[]で宣言したやつらは関数スコープ終了したら消えて欲しいし。 それはそうと、継承先のコンストラクタでたとえば基底クラスのコンストラクタが public class base{ public base(element[] elements,element first,element last){ this.elements=elements; this.first=first; this.last=last; } private elements[] elements; private element first,last; } こんな感じのときに、継承先のコンストラクタで public class ex extends base{ public ex(){ element[] elemens=new elemet[100]();//基底コンストラクタの前にステートメントがあるのでコンパイルが通らない super(elements,elements[0],elements[99]); }} みたいなまねをしたい(無駄なnewを減らしたい)んだけど、なんかいい方法は無いかな?
自演乙
>>491 そんなにnewを減らすことに神経質にならなくてもよいよ。
メモリとかの問題ならこんなとこよりも、他を考えたほうがいい。
あえて書くなら
void func1(int... ints) {}
だけど。
まー、コンパイラでは配列をnewしてそうだが。
public class base {
//
>>491 と同じ
public base(element[] elements) {
this(elements, elements[0], elements[99]);
}
}
public class ex extends base {
public ex() {
super(new element[100]);
}
}
ってやる。
つか、なんだ?このelementsは。
どう使うんだ?
あと、Javaではクラス名の先頭は大文字で。
eclipseとかIDEつかってないのか?
よほど高度なプログラムを書いているのでなければ、 下手にメモリを節約したコードを書くと かえって性能が悪くなるという話を聞いたことがある。 コンパイラやJITコンパイラの最適化に まかせたほうがいいってことかな。 事実かどうかは知らない。 あと、コンストラクタの代わりに static base createXXX() みたいなメソッドを使うという手もある。
キーボードから整数を読み込む命令に「ScannerクラスのnextInt」というのがありますが なんでnextという名前がついてるん?
いまいち質問の意図が掴めんが… getIntだとそもそもintしか来るはずがないというニュアンスになるし、 .NetみたいなTryGetIntみたいなのも文化としてないからじゃね。 あとこういうのは伝統的にnextで読むという習慣だし。
>>495 キーボードからの入力がためてあって、
そっから次の整数、次の整数ってひとつずつ読み込むわけだから、
nextでいいんじゃない?
JavaDocみたらわかるけど
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Scanner.html String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
こーゆー使い方だってできるんだし。
そうですかふ〜ん
Buttanをいくつか作成し、ループ内で、これらのButtonにactionListenerをつけたいのですが、できません。 どのボタンも最後にあるボタンと同じ処理になってしまいます。解決方法を教えていただけませんか? 説明下手ですいません。
下手な説明するくらいならコードを貼れ
コードを貼れっていってんだろ
ProgressMonitor って別スレッドで行ってる処理の進捗表示を目的としてるくせに setNote() や setProgress() の中は SwingUtilities.invokeLater() 対応してないのな。
しかもこれモーダルに出来ないのか。 中途半端なもん作りやがって…
>>503 For similar behavior use a JProgressBar with a JOptionPane, or JDialog.
>>504 Now, I'm creating such dialog. Thank you.
そんなクラスあったの初めて知った…導入されたの1.5みたいですけど、 それにしては確かにイマイチですね。 なんかQuickTime APIの進捗ダイアログみたいに気持ち悪い。 Sunのチュートリアルにあるデモもなんか描画おかしくない?
おっとprogress_displayの悪口は許しませんよ
おかしくない
>>508 メインダイアログをフォアグランドに持ってくると、バックグランドの描画がフォアグランドに行われる。
うちの環境では。
if(null == platform.get(p)){ platform.add(p, new Channel [] {c}); } else { platform.get(p).add(c); ←これがエラー } ・Vector platformです ・2次元配列にしたい ・無名配列で挿入したい ・無名配列に要素を入れた形で挿入したい こういうこと→new Channel [] {c} ・無名配列に要素を動的に追加したいので、普通の配列は駄目。Vectorなどでないと駄目。 ・Channelは、自作クラス Vector(Collection c)を使えばよさそうだが、 こののコレクションがよくわからない。 イメージ的に、 platform.add(p, new Channel [] {c}); ここは本来→ platform.add(p, new Vector(c)); ってな感じでやりたいのですが、もちろんエラー コレクションはインターフェイスで、Vectorはそれを実装している。 話が元に戻ってしまうわけで。
List<List<Channel>> platform = new ArrayList<List<Channel>>(); List<Channel> elem = platform.get(p); if(elem == null){ elem = new ArrayList<Channel>(); platform.add(elem); } elem.add(c);
× platform.add(elem); ○ platform.set(p, elem);
署名付きアプレットのなかでcsvファイルを出力する機能があり、 XP+IE7ではうまく動いていましたが、別XP+IE8ではCSVファイルが出力できませんでした。 IEの設定によって、署名付きでも出力できないような現象はおこるのでしょうか?
うちの環境ではおこらない。
ポリシーファイルうp
WindowsでJavaを動かすにはJREが必要だそうですが、 これは標準でインストールされているものなのでしょうか?
メーカー PC によっちゃ購入時点でバンドルされている。 ま JRE ごと配布するという手もあるが。 クライアントやスタンドアロン Java の実行環境としては JRE も JAR バンドルアプリも標準対応してる Mac OS X が 一番優秀だな。
Java環境としては、な それ以外は終わってるが
ご存知の方、教えてください。 Tomcatは、マイクロソフトのアクセスで作られた 拡張子mdbのデータベースはサポートしないのでしょうか? Tomcatがからまず、Javaとmdbのデータベースだけなら 正常にアクセス結果が得られるのですが、 Tomcatをからませると、General errorが出て、 mdbを参照してくれないようなんです。 Tomcatでmdbなんて使っちゃいけないんですかね。。。。。
JDBC-ODBC ブリッジドライバで普通に接続できるだろ。 全くお勧めはしないが。
>>522 エラーをはれと。
どこでGeneral errorが出るんだ。
誰がGeneral errorって言ってるんだ。
aaa
527 :
522 :2010/02/23(火) 00:30:46
エラーです。 java.sql.SQLException: General error at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source) at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at mybeans.KenDBBean.readDB(KenDBBean.java:23) at mybeans.Kensaku.doGet(Kensaku.java:18) at javax.servlet.http.HttpServlet.service(HttpServlet.java:627) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source)
528 :
522 :2010/02/23(火) 00:34:33
>>525 「システムDSN」でそれやったけど、直らなかった。。。。。これがソースです。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Kensaku extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
try{
String tmp = request.getParameter("str");
String syouhinname = new String(tmp.getBytes("8859_1"),"JISAutoDetect");
ServletContext sc = getServletContext();
KenDBBean kb = new KenDBBean();
kb.readDB();
kb.setSyouhinname(syouhinname);
sc.setAttribute("kb", kb);
if(syouhinname.length() !=0){
sc.getRequestDispatcher("/Kensaku_chk.jsp").forward(request,response);
}
else{
sc.getRequestDispatcher("/error.html").forward(request,response);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
529 :
522 :2010/02/23(火) 00:44:43
import java.io.*; import java.util.*; import java.sql.*; public class KenDBBean implements Serializable { private Vector colname; private Vector data; private String syouhinname; private String syouhindata; public void readDB() { syouhinname = null; syouhindata = null; try{ // ドライバクラスをロード Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // データベースへ接続 Connection con = DriverManager.getConnection("jdbc:odbc:syouhinkanri"); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); // 全ての行を検索するSQL文を作成 String sql = "SELECT syouhinname FROM syouhinkanri"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); //列数の取得 ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); colname = new Vector(cnum); //続く
530 :
522 :2010/02/23(火) 00:45:38
//列名の取得 for(int i=1; i<=cnum; i++){ colname.addElement(rm.getColumnName(i).toString()); } //行の取得 data = new Vector(); while(rs.next()){ Vector rowdata = new Vector(); for(int i=1; i<=cnum; i++){ rowdata.addElement(rs.getObject(i).toString()); } data.addElement(rowdata); } // データベースから切断 rs.close(); stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } // (以下略 ) }
531 :
522 :2010/02/23(火) 00:51:11
Tomcatを使わずJavaだけだったらJDBC-ODBCでアクセスできます。
でもTomcatを使うと、sun.jdbc.odbc.JdbcOdbcDriverでは接続できません。
Tomcatでは、MS-Accessのmdbは使えないということでしょうか。
下記のブログの人は、MySQLに変えたらうまくいったみたいだし。
http://ozacoffee.asablo.jp/blog/2008/03/10/2722178 MS-Accessのmdbなんかやめて、そうしなさいってことですかね...。
532 :
デフォルトの名無しさん :2010/02/23(火) 00:52:43
この「syouhinkanri」データソースにエクセルからはつながる?
533 :
522 :2010/02/23(火) 01:11:07
TomcatをはずしてJavaだけの世界ならつながります。 import java.io.*; import java.util.*; import java.sql.*; public class KenDBtest implements Serializable { private static Vector colname; private static Vector data; private static String syouhinname; private static String syouhindata; public static void main(String[] args) { syouhinname = null; syouhindata = null; try{ // ドライバクラスをロード Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // データベースへ接続 Connection con = DriverManager.getConnection("jdbc:odbc:syouhinkanri"); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); // 全ての行を検索するSQL文を作成 String sql = "SELECT syouhinname FROM syouhinkanri"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); //列数の取得 ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); colname = new Vector(cnum);
534 :
522 :2010/02/23(火) 01:12:52
//列名の取得 for(int i=1; i<=cnum; i++){ colname.addElement(rm.getColumnName(i).toString()); } //行の取得 data = new Vector(); while(rs.next()){ Vector rowdata = new Vector(); for(int i=1; i<=cnum; i++){ rowdata.addElement(rs.getObject(i).toString()); } data.addElement(rowdata); } System.out.println("data"); System.out.println(data); System.out.println("colname"); System.out.println(colname); // データベースから切断 rs.close(); stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } } エクセルからは試していませんが。
分からん。クラスローダーが違ったりすると何か問題あんだっけ。
>>511 ありがとうございます。
'(' または '[' がありません。
List<List<Channel>> platform = new ArrayList<List<Channel>>();
^← これは<Listの < の下についてました。
よくわからんとです。
補足 ^← これは<Listの < の下についてました。 → ^← これは new ArrayList<Listの < の下についてました。
最新版の Java を入れろ。
>>538 アイアイサー
以下DLします
Java SE Development Kit 5.0u22
540 :
デフォルトの名無しさん :2010/02/23(火) 01:54:45
VB.NET/C#と.NET系の開発をWin/Webと今までやってきて、そろそろJavaなどにも手をつけてみようかと 思うのですが、何かおすすめの参考書などはありますか?
541 :
539 :2010/02/23(火) 02:03:16
>>538 ありがとうございます。
問題なくいけました。
ジェネリック勉強になりました。
(匿名クラスがジェネリックでいけるということなのかはよくわからんが)
>>522 tomcat mdb
でぐぐるとふつーにできてるみたいだが。
ぐぐって一番上に出てきたサイトと同じやり方でやるとどうなる?
ソースをスレに張り付けるな
貼れといったり貼るなと言ったり 貼れな!
546 :
デフォルトの名無しさん :2010/02/23(火) 21:33:04
【!緊急アンケート!】 あなたは、スレにソースを貼っても・・・ 良い派?悪い派? 良いと思う人は、 ○←をクリック 悪いと思う人は、 ●←をクリック
その他 ( ソースの抜粋で5行以内なら )
モリタポ
ソースをカレーにかけるな
カレーにソースかけるのは許せない
そーっすね
ソースにカレーをかけるのは許せそう
加齢くさいソース?
ソースがカレーにアウンダ
カレーにソースかけるやつは、 アルミホイルを奥歯で噛んで、あぁぁぁぁあああッ〜〜!ってなって死ね
ソースはカレー作ってるときに入れるだろ
>>557 >>557 >を読む限り、select(0)の戻り値が0になることは
>ありえないように理解しているのですが、間違えてますか?
ちょwwww
本当に読んだんか?
>戻り値:
> 更新された実行可能操作セットを持つキーの数。ゼロの場合もある
クラスの説明が長いのに幻惑されてメソッドの仕様を確認するのを忘れてるんじゃね?
>>557 無期限待ちの select(0) が 0 を返すケースは次の二つだけどこれは大丈夫なの?
・このセレクタの wakeup メソッドが呼び出された場合
・現在のスレッドに対して割り込みが発生した場合
select(0) の前にスレッドが割り込まれているか確認してみたら?
if(Thread.interrupted()){
throw new IllegalStateException("割り込まれてます");
}
int c = selector.select(0);
560 :
510 :2010/02/24(水) 00:43:26
1 synchronized void platform_order(int p, final Channel c) { 2 3 List<List<Channel>> platform = new ArrayList<List<Channel>>(); 4 5 6 if(platform.get(p) == null){ 7 8 platform.add(p, new ArrayList<Channel>(){{add(c);}}); 9 } else { 0 platform.get(p).add(c); } 最終こんな風にしてみました。 8行目 匿名クラス & 初期化ブロックを使いました。 0行目 入れ子の配列に追加するのでこうなる。platform.add(p, c)と錯覚していた エラー : 8行目 ローカル変数 c は内部クラスからアクセスされます。final で宣言される必要があります んで、1行目のcにfinalをつけました。エラーがなくなりました。 適当な処置なのかはよくわからんが。アドバイスあったらお願いします。
どこで覚えたその書き方? その発想は無かったわ。
・内部クラスから外のローカル変数を参照するには final 宣言が必要。 ・{add(c);} の部分は無名クラスのコンストラクタに相当する。つまり内部クラスから 外のローカル変数 c を参照しているので final が必要。
564 :
560 :2010/02/24(水) 01:30:53
ひょっとして javaでは try でやるのがスタンダードなのでしょうか。 そもそも、要素があるなしを判定する platform.get(p) == null 適当なのでしょうか
>>562 なるほど
では、内部クラスから外のローカル変数を参照するのに、
それが定数でない場合、
参照する適切な方法はあるのでしょうか?
>>510 java.lang.IndexOutOfBoundsException起こして何がしたいんだ?
>>566 そうなんです。
そのエラーがでます。
ですが、プログラムは止まらず動いてくれるようです。
だから、
>>564 の疑問となりました。
platform_orderの呼び出し元(か更に上)でcatchしてるんじゃないの。 業務エラーを例外として実装するのは好ましくない。 この場合はp(のInteger)をkeyとするMapで表現するといいのでは? Map<Integer, List<Channel>> platform ... さらに、List<Channel>を匿名クラスとインスタンス初期化子で 生成するのもトリッキー過ぎると思う。 platform.add(p, new ArrayList<Channel>(){{add(c);}});は platform.put(p, new ArrayList<Channel>(Arrays.asList(c)); か、そもそもArrayList<Channel>をやめて独自クラスを定義して、 Channel可変引数を受け取るコンストラクタを定義するべき。
569 :
567 :2010/02/24(水) 02:20:22
>>568 java.lang.IndexOutOfBoundsExceptionが発生するのは、
想定内です。
要素がなければ、追加する」
をやるとして、
if文を使うか、
tryでやるように処理するのが適当なのか、
「そもそもの部分」 がおかしいのか
どうなんだろうかと。
ちなみに
platform.put(p, new ArrayList<Channel>(Arrays.asList(c));
Arraysは、
どっかでnewしたオブジェクトなんですよね。
プログラムが業務上起こりうる状態でExceptionを投げるのは (一般に)正しい実装ではありません。 そもそも「(あるindexの)要素がなければ追加する」処理を実現するために、 ArrayListを使うのは適切ではありません。 匿名クラスを使った場合でも、結局オブジェクトが newされていることに変わりはありません。
571 :
567 :2010/02/24(水) 02:33:13
失礼。 プログラムは動いていた。 が、該当スレッドはおちていたぽい。
>Arraysは、 >どっかでnewしたオブジェクトなんですよね。 これはArrays.asListが返すオブジェクトのことではなく、 Arrays自身のことを言っているのかな? であればasListはクラスメソッドなので呼び出しの為に Arraysクラスのインスタンスが生成されることはありません。
573 :
567 :2010/02/24(水) 02:36:11
>>570 はい。
Arrays.asList(c)
のやり方が一番適当な感じはしています。
これは、newせず使えるStringみたいのでしょうか。
例外機構のオーバーヘッドが無駄なので普通は try-catch ではやらない。 p が platform.size() 以下かどうかを判断しる。というかその API 設計じゃ p が任意でシーケンシャルアクセスする保証がならもっと防衛的コーディングしる。 while(p>=platform.size()){ platform.add(new ArrayList<Channel>()); } platform.get(p).add(c);
575 :
557 :2010/02/24(水) 06:57:30
>>570 >プログラムが業務上起こりうる状態でExceptionを投げるのは
>(一般に)正しい実装ではありません。
2重更新とかどうしてる?
Aさんの更新作業中にBさんがすでに更新してたみたいなの。
RuntimeException継承したクラス作って、
一気に上まで放り投げない?
>>557 OP_WRITEの監視は書き込むデータが本当に存在してる時だけにしろ
書き込みは通常はいつでもできるんだからselectは当然すぐに返ってくる
書き込めるデータができてからOP_WRITEを加えて書き込みが終わったらOP_WRITEを外す
>>576 単なる便利なlong jump機構として例外を使うなって言われないか?
二重更新が起こらないようにシステムを作っているにも関わらずそうなってしまったとか、
例外はあくまでも普通起こっちゃいかんだろって状態の検出に利用されるべきかと。
579 :
デフォルトの名無しさん :2010/02/24(水) 20:12:55
下のコードは、300x300のウィンドウに30x30の四角を縦横10個ずつ表示するプログラムです。 ウィンドウの左上(タイトルバーの下)から右下まで、100の四角がぴったり収まるのを期待しましたが、 かなりずれてしまいます。なぜですか?? ちなみに、ズレの大きさはWindowsとLinuxでちょっと異なります….。 import java.awt.*; import javax.swing.*; class Test extends JFrame { public static void main(String[] args) { Test f = new Test(); f.setBounds(0, 0, 300, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } public void paint(Graphics g) { g.setColor(new Color(255, 255, 255)); g.fillRect(0, 0, 300, 300); g.setColor(new Color(0, 0, 0)); for(int y = 0; y < 10; y++) { for(int x = 0; x < 10; x++) { g.drawRect(x * 30, y * 30, 30, 30); } } } } 初心者なので、いろいろとおかしな書き方をしているかもしれません。 何か問題があれば、ぜひご教示ください!
>>579 JFrameのpaintメソッドをオーバーライドして何かをかかせることは普通はやらない
JComponentやJPanelのpaintComponentメソッドをオーバーライドしたサブクラスを作って
それをJFrameのContentPaneに加えるかContentPaneそのものとして設定するかする
>>579 JFrame#setBoundsに指定している300,300というのはタイトルバーや枠も含んだ大きさだから
>>578 おまいの例外に関する認識はおかしい。
例外は元々スタック巻き戻しつつ long jump するもの。
584 :
579 :2010/02/24(水) 20:54:53
>>580 すみません。規制で書き込めないので携帯で入力したら、文字が小さくて全角に気づきませんでした。
>>581 paintメソッドをオーバーライドしたサンプルが多数載っていたので、普通はやらない方法だと知りませんでした。
勉強になります。これ↓でいいでしょうか。
import java.awt.*;
import javax.swing.*;
class Test {{
public static void main(String[] args) {
JFrame f = new JFrame();
f.getContentPane().add(new Component());
f.setBounds(0, 0, 300, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
class Component extends JComponent {
public void paintComponent(Graphics g) {
g.setColor(new Color(255, 255, 255));
g.fillRect(0, 0, 300, 300);
g.setColor(new Color(0, 0, 0));
for(int y = 0; y < 10; y++) {
for(int x = 0; x < 10; x++) {
g.drawRect(x * 30, y * 30, 30, 30);
}
}
}
}
585 :
579 :2010/02/24(水) 20:56:43
>>582 なるほど、そうだったんですね。
タイトルバー等を含めない指定方法はないのでしょうか。
あるいは、タイトルバーや枠の高さ・幅を取得する方法があれば、何とかなるのですが…。
586 :
579 :2010/02/24(水) 21:00:31
Testクラスの括弧の数を間違えました。 class Test { public static void main(String[] args) { JFrame f = new JFrame(); f.getContentPane().add(new Component()); f.setBounds(0, 0, 300, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
JavaServletでsessionの勉強に思ったことなんですが session.setAttribute("MESSAGE" , "Hello World") とするとセッションの変数名MESSAGE に Hello Worldを文字列として格納になりますが なぜ変数名MESSAGEは””ダブルコーテーションで囲んでいるのでしょうか? 変数名ではなく文字列のように見えてしまい不思議に思ったので教えて下さい。
>>587 変数名ではなく文字列で正しい。Map<String, Object>と同じだと思えばいい。
HttpSession#setAttribute()の第一引数を変数名と説明するのは便宜的なもの。
>>583 だから単なる便利なlong jump機構として例外を使うなってことだよ。使い方を問題にしてる。
二重更新なんてそれを防止しない造りなら「業務上起こりうる状態」なんだから、
例外機構でもって放り投げるもんじゃないということだ。
異常状態を放り投げるのに例外機構を使うことに異議はない。
設計上起こりうる状態に例外使わないとか、なんか 2000 年頃のコーディング規約 でも盲進してんのか?
>>589 それは RuntimeException と Exception の使い分けでやること。
業務上発生し得ない状況でしか例外出さないなんて趣味は、呼び出しスタック
3 層程度の小規模アプリでしか通用しない。
うちの会社の新人がテキストボックスの値を検査すんのに、 tryでintにキャストしてたりしてた訳だが、それが正しいとでも言うつもりか?
>>590 うんにゃ。
俺自身はそんな主義で設計も実装もしない。
どちらかというと使いまくり感があるな。
最近ジャバスレで暴れてるネトウヨだろ でっかいウンコなんだから触るな
>>584-585 中身をかくためのコンポーネントをContentPaneに加えるやり方なら外枠とかを気にしなくてすむ
このやり方だとコンポーネント自体の座標系で中身をかけるので
どうしてもJFrameの外枠サイズが必要ならgetInsetsというメソッドで取ることができる
> paintメソッドをオーバーライドしたサンプルが多数載っていた
AWTのアプレットの例とかじゃないか
Swingの枠組ではpaintメソッドをオーバーライドするサンプルは稀
でっかいウンコの強烈なニオイだけは勘弁して〜
599 :
579 :2010/02/24(水) 23:08:29
>>596 > 中身をかくためのコンポーネントをContentPaneに加えるやり方なら外枠とかを気にしなくてすむ
その方法でやってみます!
> AWTのアプレットの例とかじゃないか
そうかもしれません。
まだAWTとSwingの境界がイメージできていない状態です・・・。
業務上起こりうる状態で例外云々の言いだしっぺです。 そもそも2重更新が発生することが業務的に想定外ならば例外でいいと思う。 それは設計上のミスであるか、ロジックの不具合だから。 逆に、想定されるケースにもかかわらずにチェックをサボって 例外投げてたらビジネスロジックの品質が残念ってことでしょ。 話がごっちゃになってるようだけど、 上記は「ビジネスユースケース」単位の実装をしたロジックレイヤーで見た場合の話ね。 個別の機能で見れば、例えば永続層は2重登録されそうになれば例外を投げるのは当然。 呼び出の際に「事前条件」「事後条件」「不変条件」が破られれば、 即座に例外状態を表明するのは各コンポーネントの義務だから。 コンポーネントの粒度(呼び出し階層の位置と条件による契約)によって、 「ある状態」が意味するところが変わるだけ。 この原則はアプリケーションの規模が呼び出し3層だろうがなかろうが基本的に変わらん。 大事なことなんでもう一度 プログラムが業務上起こりうる状態でExceptionを投げるのは (一般に)正しい実装ではありません。
荒らすなカス
例外投げてる時点でチェックしてるじゃん。 バックエンドでテーブル舐めたら該当ユーザのレコードが無かったので AuthException 投げました、フロント側でそれを拾って「ユーザIDまたは パスワードが違います」と表示しました。 普通の設計だっての。
「ユーザのレコードが存在する」という事前条件があり、 かつそれが破られたのだから例外でいいと思いますよ。 認証機能全体として見れば、テーブル舐めるコンポーネントが 例外投げる可能性を見越してexception handlingしてエラー情報を表示してるわけでしょ。 指定ユーザが未登録かもしれないという想定される状態に対して、 きちんと責任取ってると思いますし普通の設計です。
まずおまえ「正常系」「異常系」でしか見てないだろ。業務アプリ設計ってのは 「想定内の正常系」「想定内の異常系」「想定外の異常系」の三つで考えるもんだよ。 想定内の異常系がおまえの頭の中では異常系に入ってるから「業務上起こりうる状態で 例外投げるのはNG」「でも認証失敗は前提が破られたからおk」と妙な話しが始まるわけ。 このへんの論議は前世紀の終わりに散々ここで出尽くしてるよ。
long jmpがうんたらからんたら言ってるレベルに理解しろってのも無理でしょ。
正常系、準正常系、異常系の考え方は至極普通だと思うが。
準異常系ってを追加しないでおk?
>>600 はコンポーネントの粒度で状態の意味が変わるって書いてる。
コールスタックの深いところで例外が起きても、
それを業務全体のレベルでは
*業務的に想定できる状態で起きた例外なのであれば*
例外のまま放置するなって意味だろ?
荒らすなチンカス
いいえ、設計上必要なリカバリ云々という話ではなく、準正常系でも例外投げるなと言っておられます。
>>609 末端で起きた異常系の対処方法が設計されてなくて、勝手に中断して上へ投げるのは
(一般に) 正しい実装ではありません、とか、そんなレベルの低い話してたわけ?
準正常系で例外投げないほうが良いだろ。
違うだろ、準正常系で例外飛んじゃう時点でおかしいだろ。
それは状況による。というか、そんなの中断するか続行するかしかないんだから 普通に設計してればどちらかに定まる。おまいの趣味思想は関係ない。
なんとなく600に噛み付いてるのは コンポーネントの役責が理解できてないと見た。
テスター?
Java自体もう廃れ言語なのに。負け組同士仲良くしようぜ
業務の準正常系が起きた場合、 業務コンポーネントが例外投げてどうすんのよ。 プログラム終わっちゃうよ?w
>>620 おまいの所の様にフレームワークもまともに組めてないところじゃそうかもな。
<longjmp.h>ですから…
準正常系のとき、業務処理としての例外は起きない。 準正常系のとき、個別のコンポーネントでは例外が起きるかもしれない。 ってことは読めた。 業務的に起こりえる状態 = 準正常系って意味だと読んだ。
その、独り言言いながら補足してくの止めたら?
すいません。興味深い話題だったんだけど、 微妙に論点がずれてて分かりづらかったので。
荒らすな
例外が適切かどうかなんてアプリの動作仕様によりけりじゃね? 個別のコンポーネントは機能に閉じてるから切り口としては次元が違う。
例外を long jump に例えた時点で COBOL 言語屋あたりじゃね。
準正常系って状態のときに、業務処理が例外を投げていいと言うのであれば、 その例外をフレームワークがキャッチした場合、例外が準正常か異常かフレームワークはどうやって判断すんの? そんでもって準正常と判断できた場合にフレームワークはなにをしてあげるわけ? 個別の業務処理の中身が詳細に分からないと適切に処理できなくね?
>>570 > そもそも「(あるindexの)要素がなければ追加する」処理を実現するために、
> ArrayListを使うのは適切ではありません。
なんで? 自動伸縮に ArrayList が適切かどうかなんてあんた関係なくね?
>>630 おまえじゃ一生頑張ってもジャヴァは無理
>>631 int pがシーケンシャルに呼ばれるか判断できなかったからだろ。
ジャヴァってのはやったことないんで一生無理なんでしょうね。 例外と結果オブジェクト両方とプレゼンテーションのマッピングを フレームワークが管理するなんて大変だなと個人的には思いました。
>>630 フレームワークまで行ったら「エラーメッセージ付きで前画面に戻る」が一般的な動作だな。
ドメイン固有の制約等生かせばもう少しできるが。それ以上が必要なら上層の業務ロジックが
拾ってしてリカバリ。上層から見たら下層は「個別のコンポーネント」であって、これを
long jump と混同するのはそもそもコンポーネント設計が分かっていない。
もちろんその場でリカバリしなきゃならない場合は例外投げずに対処する。
使われないかもしれないArrayListのインスタンス生成をループで回す理由がないだろ。 pがランダムポート番号とかだったらそうとう無駄に回るだろ?
そもそも最初の
>>570 からしてかなりハズしてる。
具体的にどこが外してんの?
質問には何一つ答えてないじゃん。
>>637 その判断は前提を知ってる本人がすることであってお前がすることじゃないでしょw
結局フレームワークが業務毎の然るべき遷移先を面倒みてるわけですよね。 しかも準正常系かそれ以外の例外であるかを選り分けてキャッチする形で。 ユーザ視点でみれば結局業務処理の結果が返ってるわけで、 例外の形を借りて結果オブジェクトを返してるように思えます。
まあArrayListが相応しかったのかも知れないね。 個人的にはwhileループのコード書いてる同僚がいたら勘弁してもらいたいが。
>>643 想定された中の動作だからそういう解釈でもかまわんよ。
これを long jump と混同したり、業務要件上の "中断" か何かと勘違いしている人が
混じってたみたいだが。
ぶっちゃけJavaの利点て何なんでしょうか ブラウザ上で動作すること? スタンドアローンで動かすにはJRE要求したり、使いやすくはありませんよね
・マルチプラットフォーム、設計のしやすさ、機能の多さ、無料の開発環境が充実。 ・リソース管理やセキュリティ管理が楽。 ・OSX なら JRE 標準で通常のアプリとまるっきり同じに実行可能。 ・サーバから組み込みまで応用範囲が広い。 ・VM もライブラリもそれなりに安定してる。
>>647 オブジェクト指向言語として早めに出てきたから、
サーバサイド中、大規模開発のスタンダードになってる。
WindowsでもUnix系でも動く。
eclipseが便利。
基本情報取得のため、本のサンプルコードをエディタに打ち込んでいるけど、どうもやり難い 本で書かれたコードをエディタに打ち込む時、プロは何か文具を利用しているの?
eclipseつかっとけ
HttpClient はなかまをよんだ! HttpCore があらわれた! HttpCore NIO があらわれた! HttpMIME があらわれた! Commons Logging があらわれた! マドハンドかよ…
>>650 算数の九九と同じで、反復練習だ。
手を動かして、指に構文、文法を叩き込む。
いまどきIDEが補完してくれるという意見もあるが、
それは鍛錬しない自分に対する言い訳。
電卓があれば九九は覚えなくて良い、というのはもっともに聞こえるが、
脳内で処理できるか、外部装置を使わざるを得ないかによって、思考のスピードと
幅に差がでて、結果としてそれが人間のパフォーマンスの差になる。
unix用のjavaで、ロックをする時って内部でセマフォを使用しているのでしょうか?
>>654 biased locking とかいう手法が使われているらしい
>>648-649 なるほど、一般的なアプリケーションとして見たことがほとんどなかったのですが、
サーバ用とか組み込みとかでは活躍しているんですね
サーバってUnix系多いんでしたっけ
逆に言うとWindowsのデスクトップ向けのアプリ開発には向かないのでしょうか
>>657 Windowsのデスクトップなら素直にC#使っとくべし。
>>652 HttpClientに必要なのは
HttpCoreだけでしょ。
CommonsのLangやらLoggingやらはデフォルトで設定されてるレベル。
>>660 Loggingは標準APIにも入っちゃったので微妙か。
それでもJakartaプロダクト群を利用するなら取り敢えず入れとけレベルではある。
何度見てもlong jumpがひどすぎる
くやしかったの?
何自問自答してんの
結局どっちがいいんだよ?
こいつら煽るしか能がないのか?
668 :
デフォルトの名無しさん :2010/02/25(木) 21:19:22
ネトウヨ(笑)
Top t = new Top(); Top.Nested i = t.new Nested(); i.doNestedMethod();
671 :
669 :2010/02/25(木) 21:47:56
非常に初歩的な質問なのですが、classファイルからはコメントを参照できますでしょうか? またコメントの書き換えでclassファイルに変更は生じますでしょうか? よろしくお願いします
コンパイルされた *.class ファイルにコメントは含まれていませんので物理的に無理です。 *.class ファイルには行番号情報などが含まれるのでコメントの変更でバイナリが異なる 可能性は大いにあります。
>>673 丁寧な説明ありがとうございます
参考にさせていただきます
675 :
672 :2010/02/25(木) 22:30:46
気にいった。うちに来て俺をファックしていいぞ。
677 :
デフォルトの名無しさん :2010/02/26(金) 00:33:47
ネトウヨ(笑)
右翼の構成員のほとんどは日本国民じゃなかったりする現実w 在日乙www
街宣右翼は朝鮮人だけどネトウヨは日本人
スレタイ読めない連中は朝鮮人か?
681 :
デフォルトの名無しさん :2010/02/27(土) 00:38:33
javac でデフォルト設定でコンパイルすると100個バグが見つかった 時点でコンパイルが終了します。 この個数を変更するオプションは無いのでしょうか? javac -help でも詳しい説明が表示されないので困っています。
と言うか、どんなコードですか、それ^^;
683 :
デフォルトの名無しさん :2010/02/27(土) 00:51:14
>682 別言語からの移植作業の場合、 とりあえず、ざっと修正した後、 コンパイルしながら地道に修正するのですが、 コンパイル時全体のエラー数が分かれば 残り作業量がある程度わかるので、予定を立てやすい。
構文系なら1ヶ所直したら100個のエラーが消える事もあるんだから何の指標にもなんねーw そんなんで作業見積もり出してくる会社あったら切るわw
685 :
デフォルトの名無しさん :2010/02/27(土) 02:10:19
>684 エラーの個数で計算するわけではありません。 内容も精査します。 ちなみに多少単純ミスはしてますが、構文はほぼ修正済みです。 C++からの移植で、ハードも別で、ライブラリも作成する必要があり。 ライブラリ周りのヘッダファイルはすべてあるが、ソースの一部がないので ライブラリ関数の作成が必要です。 ヘッダにある関数をすべて作成するのは、かなりの重労働なので 使用しているライブラリ関数を作成する予定です。 エラーメッセージから作成しなければならない関数などもわかるので 聞いています。 Grepを使って調べる方法もあるのですが、 似たような名前があったりと面倒で困ってます。 a::work() b::work()
-Xmaxerrors オプションも試してみた?
ライブラリを実装する場合に,呼び出し口の数でタスクの分量を推測するのは危険だな
688 :
デフォルトの名無しさん :2010/02/27(土) 10:56:15
>686 バージョンの違いか駄目でした。 1.4.2を使用しています。 >687 個数だけでは判断しませんよ。 関数の仕様は分かっているので、関数ごとの大体の作業量は分かります。
689 :
デフォルトの名無しさん :2010/02/27(土) 11:17:52
とりあえず、コンパイルしては 不足分の空の関数作ってリストを作ることにしました。
くだらん自己解決で終わるならいちいち書き込むな。 自己紹介しかしてないだろおまえ。 あと全レスで上げるな。
関数と読んでいるあたりに、底しれない危険性を感じるのだが…
692 :
デフォルトの名無しさん :2010/02/27(土) 17:16:24
独習javaを読み終えました。 javaプログラマーをめざすには、次に Effective javaとjava言語で学ぶデザインパターン入門 のどちらを先に読むべきですかね?
Java and Object Orientation: An Introduction
プログラミング言語Java
読んでばっかいないで手を動かせ
Effective Javaは独習Java上がりのなんちゃってPGが読む本じゃないよw
まあでも、なんちゃってPGからレベルを上げようと思うなら、読んでおいて損はない。
Effective Javaは出来る限り早い段階で読んだ方がいいと思うよ。 あれは内容濃いからおそらく誰も一度で全て理解できないし、「ふーん」程度で十分。
自称中級者レベルから読み始めると、んなこと当然わかっとるわって所もあるからな。
ふーん
701 :
デフォルトの名無しさん :2010/02/28(日) 04:44:59
swingの質問なんですけど JMenuBarでドロップダウンしてる最中にJTextFieldをクリックしてフォーカスを移すと ドロップダウンしたままのバグがあるのですが。 JTextFieldのfocusGainイベントでJMenuBarのドロップダウンを閉じる事で解消したいと思います。 しかし閉じる方法が解りません教えて下さい。
ふーん
703 :
701 :2010/02/28(日) 07:36:54
すみません自力で解決しました。
Java(笑)
JPEGImageReadParam と JPEGImageWriteParam を使って getQTables() getDCHuffmanTables() getACHuffmanTables()で数量化テーブルとハフマンテーブルをそのままコピーして jpegファイルをread→別名でwriteするサンプルコードを教えてください。
706 :
デフォルトの名無しさん :2010/02/28(日) 14:41:57
シリアライズが何のために必要なのか わかりません。おしえてください。
>>706 一番使うであろうので言えば、オブジェクトそのもののやりとりに必要
ジャバwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
SOAPでC#<=>Java間なんかでクラスを受け渡したり。
FileInputStream/FileOutputStream でファイルをオープンしてから FileChannel で Lock を 獲得するまでの間ってどういう状態になるんですか? ロック獲得する前に別の処理から 0 バイトにされたりしないんですか?
711 :
706 :2010/02/28(日) 16:57:33
同じプロジェクト以外(ファイル、DB、ネットワーク経由の他のJAVAアプリ) に対してオブジェクトを受け渡すためのもの、 ということですか?
Core JavaとEffective Javaは一度くらい読んだ方がいい。 あと言語関係なしにcode completeとデザインパターン本何か。
>>711 いや、java間の通信なんかにも使う
簡単に言えば、Oracleにオブジェクトつっこむイメージと同等
714 :
706 :2010/02/28(日) 17:20:33
>Oracleにオブジェクトつっこむイメージ すいません、イメージできないです…
>>705 多分ここの連中よりgoogle先生の方が優しい
あるオブジェクトをファイルに保存して、あとで読み出せたら楽じゃん。 そのためにはメモリ上に存在するオブジェクトを、バイト表現に変換してファイルに書き出したいわけじゃん。 それを実現するのがSerializeだよ。 保存先はなんでもいいし、読み込む方もクラス定義を参照できてればOK。
717 :
706 :2010/02/28(日) 19:56:55
わかりやすいです。 シリアライズで保存するクラスの中身は どんなものなんですか? ファイルに保存したとして、 クラスの中の int a = 10; とかはファイルでどんな形で保存されるんですか? あほな質問ですいません。
Serializableで保存したオブジェクトは、プラットフォームに依存しないものなのでしょうか?
依存しない。
色々なクラスでSerializableは将来サポートされませんとかあったような気がするんですけど あれは一体何でしょうか?
>>720 例えば class A { int a; } が次のバージョンで class A { short a1, a2; }
に変わっただけで互換性なくなる。
クラス内部のインスタンスフィールドをファクタリングする余地を残しときたいので
互換性は一切保証しないよん、と宣言してるだけ。
>>715 それが
これらのクラスはおそらくこのようにjpegファイルを編集するために用意されているはずなのに
全くサンプルが見つからないのです
すみません 自己解決しました。 もういいです。ここの連中は役に立たない。
そうですね
早くもこのスレは終了ですね
ジャバザハットってもしかしてjava the hot って書くんですか?
あんさん、それジャバザホットやないかw
jdbcでselect発行して取得した件数返す関数ってありますか? フェッチでまわす前に取得したのですが。 フェッチでまわした後ならget
730 :
729 :2010/03/02(火) 22:37:22
3行目は無視してください
一応聞くけど、select count(*) from xxxx じゃダメなの?
732 :
デフォルトの名無しさん :2010/03/02(火) 23:09:13
キーイベントを登録してあるパネルにボタンを実装して、ボタンを押すと 今まで動いていたキーイベントが動かなくなるのですがなにか良い解決法 はないでしょうか。
733 :
729 :2010/03/02(火) 23:19:19
>>731 2回SQL発行してもいいのですが、パフォーマンスを検証しているので
なるべく無駄な作業をなくした状態にしたいです。
>>733 じゃあ、結果セットの形式によっちゃうけど。
ダメモトでResultSetにlast()してgetRow()とか。
って、パフォーマンス検証ならそれこそ別途count()じゃね?
数えてたらパフォーマンス変わっちゃうと思うが。
>>732 ボタン.addKeyListner(パネル) でどうかな?
大量にオブジェクトを生成してたらOutOfMemoryErrorになったんだが… JavaのヒープなんてOSから見れば仮想メモリなはずなんだからスワップ領域とか使っていくらでも空間を広げられはずでは?
>>736 ヒープ領域に関して。
Javaは起動時にこんだけメモリを使うよってOSに伝えて、
それ以上使おうとしない。
例えば64mと宣言。
Javaからすると64mがスワップ領域だろうが知ったこっちゃなく、
それ以上使おうとするとJavaがOutOfMemoryだよって落ちる。
java6からOSのメモリの1/4か1Gbyteなんだがどんだけ富豪プログラミングやってんだ?
メモリ上に展開すると1GBじゃ全然足りない事はいくらでもあるしなあ。 それをjavaでやるなというなら正論では有るが。 8GB積んでも2GBまでしか使えないしねえ。
おまえは AS/400 がお似合いだ。
asのjavaだとありったけ使えると言う仕様?
class Test { public void main(String args) { B obj = new B(); obj.myWriter(); } } class A { public void myWriter() { System.out.println("A"); } } class B extends A { public void myWriter() { System.out.println("B"); } } 上記の場合で・・・ インスタンスobjからmyWriterを呼び出すと、 クラスBのmyWriterメソッドが呼び出されるんですが、 これを、その親のクラスAのmyWriterメソッドを呼び出したい場合は、 どのようにすればいいでしょうか? obj.super.myWriter()とか、なんとなく思いつく物は試してみたんですがダメでした
>>742 オーバーライドしてんだから、無理だろ
お前はまず基礎がなってない
通常ClassAのコンストラクタも必要な場面では
ClassB#myWriterからsuper()呼び出せ
>>743 やっぱ無理ですか・・・
設計上、クラスBからsuperで呼び出すと不具合が出てしまうのです・・・
設計から見直します
ありがとうございました
>>741 IBMのJVMは昔からメモリあるだけ使ってたと思う。
1G使い切るのが目に見えてるのにメモリに全部置くのが問題なんだろ。
アプレットでメモリが足りなくなったので、javaコントロールパネルのjavaタブの アプレットランタイムパラメータに「-Xmx512M」を追加してアプレットを起動したら Runtimeをロードできませんのエラーが出て起動できませんでした。 アプレットでメモリを増やす方法はどうすればよいのでしょうか?
ん?実メモリの半分越えた指定でエラーになるのは仕様 って書いてある?
アプリケーション画面の隅っこにプラグイン的な Applet 動かせる様にしたんだけど、 本体アプリと同じ権限で動いてしまうのが怖い。クラスローダー単位に権限設定とか できない?
Swing でイベント使わないで「今 CTRL キーが押されてるか」ってどうやって知ればいいの?
慣れてくると「このくらいのタイミングで押すだろうなー」と思ったあたりでだいたいCTRLキーが押されてる
>>747-748 バグなのかもしれないけど、アプレットだと本質的にそんなに大きい領
域を取れないんじゃないか?
一般的な2GBのユーザ空間のうち、ブラウザのコードとデータがすでにけっ
こうな場所を占めているわけで、連続領域はそんなに残ってなさそう。
>>753 でもエンドユーザーもバカじゃない。
エンドユーザーも慣れてくると、
このタイミングでCtrl押すとは思わないだろうタイミングで押してくるから気を付けろ。
いつからここはマインドシーカースレになった
ユーザーが押すだろうっていう瞬間にリスナを登録するんですね
javaでライブ放送ソフト作りたいんだが JMFとJava Sound APIどっちがいいの?
押される前に、すでに押している事にしておく。 これが親切。日本の心だろ?
>>751 int option = JOptionPane.showConfirmDialog(null, "今 CTRL キーを押していますか?", "教えて", JOptionPane.YES_NO_OPTION);
ユーザ: あ…ありのままに今起こった事を話すぜ! おれはCtrlを押そうと思ったら、既に押されていた! (以下略)
コンピュータは言いました:あなたが押そうとしたので先に処理しました。
>>751 ウィンドウがアクティブじゃないときでもキーの入力状態を知りたいのであれば、無理。
JNAに確かサンプルでwin32用のそんなのあったと思うからそれ使って見るといいかも。
皆さんIDEの使い方ってどうやって覚えてますか? 入門書は文法ばっかりで、IDEの使い方を教えてくれません。そんなもの自分で学べということなのでしょうか
IDEラッキョ
>>764 IDEの入門書なんて腐るほど出てるだろ
java に限った話ではないのですが UIと実行部分と、それからもうひとつなにか、計3つの部分にわけて アプリを書く方法の名称はなんというんでしたでしょうか? どこかで見た気がするのですが使いたいのに、思い出せずに困っています。
768 :
デフォルトの名無しさん :2010/03/04(木) 21:36:18
>>764 ノートパッドに解説書が必要とは思わなかった。
ノートパットじゃねぇよ イデだよイデ!
Model View Controller
772 :
510 :2010/03/05(金) 01:59:04
>>574 例外を出さないには、
どんな方法があるでしょうか?
while(p>=platform.size()){
platform.add(new ArrayList<Channel>());
}
platform.get(p).add(c);
pは、ある整数ですが、1、100など飛び飛びの値をとります。((p>=platform.size()じゃ駄目)
arraylistのメソッド
・get() 例外あり→駄目
やりたいこと
アレイリストオブジェクト platformの、
p番目に、配列(Channnelオブジェクトを要素にもつ)が、
存在するかどうか
platformは2次元配列
これはひどい
774 :
迷えるうさぎ :2010/03/05(金) 02:25:30
あのjava始めたばっかなのですが、メモ帳だとインデントが自分でやらなければならないので 勝手にインデントとかしてくれるのってありますか?
まともなIDEやプログラミング向けエディタなら、インデントは必ず自動で合わせてくれる。 IDEならNetBeansとかEclipseとか、好みにあったのを選ぶといいよ。
776 :
迷えるうさぎ :2010/03/05(金) 02:33:12
どっちも一応落としたんですが、操作がいまいちわかりません。 メモ帳使ってコマンドプロンプトでするのは時代遅れでしょうか? 初歩すぎてごめんなさい><;
777 :
デフォルトの名無しさん :2010/03/05(金) 02:37:46
>>776 時代遅れ
素直にeclipse使え
JavaはできますけどIDEは使えませんなんてのは通用しない
778 :
迷えるうさぎ :2010/03/05(金) 02:39:47
はい^^ わかりました>< こんな小娘に付き合ってもらってありがとうございます>< 助かりました
IDE でしか Java 使えませんって方が通用しないと思うが。
たしかに。 JavaはGUIアプリを作ることはほとんどない
781 :
デフォルトの名無しさん :2010/03/05(金) 02:49:37
>>772 ArrayListに違う型のオブジェクトを突っ込まないほうがいい
どうしてもというならインタフェース作って2つのクラスが実装しろ
配列があるならクラス作って配列をそこに持たせろ
で、instance of使うなりして判断しろ
実際になにをしたいのかまったくわからん
もう一度問題を整理してくれ
多分、設計がずいぶんおかしい
782 :
デフォルトの名無しさん :2010/03/05(金) 02:51:35
テキストエディタでJava書く機会なんてないだろ
ちょっとコアライブラリの動作確認する程度ならコンソールから cat でやってますが何か。
784 :
デフォルトの名無しさん :2010/03/05(金) 02:57:41
それは一般的な環境じゃないだろ
俺の職場には テキストエディタは嫌い メモ帳が好きって奴がいる
786 :
迷えるうさぎ :2010/03/05(金) 03:00:48
難しそう・・・ 情報学科に迷いこんでしまった腐女子ですが、 まだ初心者すぎるので、やさしい環境でやってみます^^ みなさんありがとう>< 感謝感謝です
>>786 CPad for Java2 SDK
私はこれ使ってますよ
TeraPad
ChinkoPad
真魚
>>783 その目的だとScalaのインタラクティブシェル使ってるなぁ。
Groovyの方が良いかもしれんけど。
まともにコード書く時にはIDE使うべき。 ただしIDEが裏で何やってんのか理解するためにもエディタとコンバイラで実行までもっていけるようになっておくべき。
逆だろ Helloworldなりをエディタ+javacで作って、 javaコマンド実行してからIDEだな
コンパイラが裏で何をやっているのか理解するためにも ソースからバイトコードを書いて実行までもっていけるようになっておくべき
バイトコードをハンドアセンブルするのがいいんじゃない?
>>783 Rhinoにパスが通ってるんでインタラクティブモードでシェル起動してますが何か
>>795 どうやってハンドアセンブルするんですか?
女は黙ってemacs
しゃぶれよ
>772 たぶんVectorじゃなくてSortedMap<Integer,Collection>とかでやるべきなんじゃないの? pをキーにする感じで。
JFrame#setDefaultCloseOperation() を使わないで AWT のイベントスレッドを終了させるのって System.exit() で終わるしかない?
しかないかも
ClassAとClassAのサブクラスClassBがあったとき ClassA a=new ClassB(); って出来るの? ClassA a=(ClassA)new ClassB(); って出来る? ClassB b=new ClassA(); って出来る?
分かった
>>800 質問の意図が分かりかねるが。
しかない、というか、EXIT_ON_CLOSEだとSystem.exit(0)が呼ばれる。
けどこれってイベントスレッドの終了じゃないよね?
Thread#interrupt()すれば終了するみたい。
>>800 Frame.getFrames() で取れる全てのフレームに対して dispose() を実行すれば EDT が終了するよう
1.4 で変更されている。
>>803 >ClassA a=new ClassB();
できる。
ClassBにどのようなプロパティがあろうとも、ClassA型として突っ込んだ時点で、ClassAが持つプロパティしか保持しなくなるが。
>ClassA a=(ClassA)new ClassB();
できる。
が、意味の無いコード。
>ClassB b=new ClassA();
できん。
ClassBの情報はClassAだけでは埋められないため。
誤解を招くから追記。 >ClassA a=new ClassB(); ((ClassB)a).hoge()みたいな形でキャストすればClassBの情報も使えるけど。
ふーん
なるほど納得
>>779 そんな事はない
底辺でよければ通用するする
上級者はIDE禁止プレイで楽しみます
IDE否定派って、たまに見るけど何なの? まだ標準でコードフォルデイングも補完もリファクタ機能もないツールで頑張ってんの? それともExcelVBA大好きな老害みたいに、 しょぼい言語で一部の機能を車輪の再発明して 「ほら、これを使えばIDEなんていらないんだ」とかほざいてんの?
IDE否定派多いけど import java.util.*; import java.net.*; import java.text.*; こんなのばっかり書いてるよな
学校の授業とかだと簡単な所まではメモ帳で仕組み教えるのも重要だと思うけどね。 それよりもコボルでDBファイル操作をごりごりと遣るのが好きな老害が、銀行とか生保とか自治体システム運用会社にたんまり残ってる。 ほーらこうやれば、RDBも最適化も不要で処理出来る。ってほざいてる。
>>817 甘いぜ。
RDBMS持たせても予備1〜5までのカラムを持ったテーブルが出来るだけだ。
主キーを貼ると重複エラーで落ちるかもしれないからという理由で主キーなしとか。
集合演算とか理解できないから、カーソルで全行舐めとか平気でするし。
もうホント金融は勘弁してください…orz
C言語をやってからJavaを勉強し始めたせいか違和感があるのですが、 配列を宣言する時にnewするのは何故でしょうか? int array[] = new int[3] よろしくおねがいします。
C で new 無しの配列宣言はスタックに確保される。スタックはヒープに比べてだいぶ小さいので 配列の様な何 kB になるか分からないデータを置いているとすぐにスタックオーバーフローを起こす。 Java はそんな職人のカンが必要な要素をなるべく排除してはじめからスタックに配列を置けない ようになってる。あと元々組み込みの様な貧弱メモリ環境で使うのに作られた言語だし。
>>819 Javaでは、Cのようにスタックに配列を置くことができず、必ずヒープに配置される。
つまり、Cでいうと以下のような書き方しかできない。
int* array = NULL;
array = (int*)malloc(sizeof(int)*3);
822 :
819 :2010/03/06(土) 09:21:31
>>820 ,821
スタックに配置できない仕様なんですね。
よく分かりました。ありがとうございます。
int array[]; とした場合、
Cでは array が int へのポインタなのに対し
Java では int 配列へのポインタなので
array を宣言した時点では、まだ配列は作成されていない。
だから new で配列を作る必要がある。
…というのが正しい説明に思える。
ヒープとかスタックとかは関係ないのでは。
>>819 が納得してるならいいけど。
824 :
823 :2010/03/06(土) 14:59:24
(追記)
でもまあ
「どうしてそんな言語仕様になっているのか」
という疑問に対する答えとしてなら
>>820 や
>>821 は正しいか。
「仕様です」が正しい説明
>>823 一見正しいようで君の方が間違って覚えてるようだ
「仕様です」は正しい説明
C 言語で int array[]; って書けるようになってるのか? ポインタで受けて配列アクセスはしていたが・・・C は十年以上やってないから 今どきのCの構文は疎くて正しいのかわかんねー。
配列長を指定しない場合は初期化を伴わないとダメ。 int array[] = {1, 2, 3}; int array[] = (int*)malloc(100 * sizeof(int)); あと array[] とした場合はポインタとは呼ばない。
831 :
823 :2010/03/06(土) 16:35:02
>>829 書けない。
書けないのは分かってた。
「変数 array を int 配列として宣言したとき」ってことが言いたかったんだ。
すまんかった。
もしかして「ジャヴァ使いってCのことよく分かってねーんじゃねーの!?」って勘違いしてない?
>>831 Cでint配列ってのが宣言できるのか?
どうせCやるならちゃんと覚えたほうがいいと思うよ。
>>833 Javaできる人のうちけどCできる人は30%に満たない
ジャヴァ使いはジャヴァしか出来ないかシーもかなりできるかのどちらかしかいない。
>>830 int array[] = (int*)malloc(100 * sizeof(int));
うちのgccではコンパイルでけへんが?
Cならこれで通る int *array = (int*)malloc(100 * sizeof(int)); array[]は配列、arrayはポインタ array と &array[0]が等価 *array と array[0]が等価
そこまで配列にこだわるなら普通はmallocを使わない。
昔から配列大嫌いだった。使わなくてもなんとかなるようになって清々した。
jdk1.7からはそうでもなくなる 詳しくは具具ってよ
昔の古いコンパイラは配列でもポインタで初期化できるんだよ。
>>823 > Cでは array が int へのポインタなのに対し
全然違う。ガセ流すなよ。C のメモリ配置の基礎からやり直してこい。
>>843 C99もサポートしてないふるいのはもう捨てろ
C99・・・。カルメン99か!!
いいえ C99タケダ です
Javaの話しろ
JAVAティー
classファイルの先頭をバイナリで読むと
icedtea projects って結局なんですか?wiki読んでもいまいちなんですが
Exception in thread "Thread-0" java.lang.IndexOutOfBoundsException: Index: 3, Size: 0 at java.util.ArrayList.RangeCheck(ArrayList.java:546) at java.util.ArrayList.set(ArrayList.java:337) at ChatServer.platform_order(ChatServer.java:174) at Channel.run(ChatServer.java:277) 該当箇所 174行目 platform.set(p, new ArrayList<Channel>(Arrays.asList(c))); platformはarraylistオブジェクトです。 ArrayList() 初期容量 10 で空のリストを作成します。 とリファレンスに書いてあります。 ・なぜindex3で10以下なのでに、エラーなのでしょうか しかもsizeはゼロとなっています アドバイスお願いします。 ↓これをつかってみても駄目でした (void ensureCapacity(int minCapacity) 必要に応じて、この ArrayList のインスタンスのサイズを拡大し、少なくとも最小サイズ引数で指定された数の要素を格納できるようにします
あるディレクトリ内のファイル数を数える処理を書いてたんですが、 File[]型の変数f_arrayを宣言だけしておいて(事前に数が分からないので初期化のnewはせず)、 public void countNum(){ f_array = dir.listFiles(); System.out.println("今のファイル数:" + f_array.length); } と書いています。 このメソッドで最初にファイル数を確認して、 その後、途中の処理でファイルをいくつか削除させてから、 改めて上のメソッドをかけてみると、確かに削除した分だけ数は減っていて、 自分のやりたい挙動にはなってます。 ただ、配列はいったん確保サイズが決まったら、そのサイズは変えられないものだと思っていたので 同じ配列なのにサイズが小さくなった、っていうところが納得いかないんです。 なんでですか?解説をおねがいします。
>>853 >set
> IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index >= size())
>
>size
> リスト内にある要素の数を返します。
言わんとするところは、リストなので頭から詰めてゆかないとダメ。初期状態でnullとかが詰まっているわけではない。
>>854 listFilesの結果を代入しなおした時点で、f_arrayは前の配列を指していない
>>854 listFiles() を呼ぶたびに新しい配列が作られており、
それを f_array に代入しているのであって、
配列のサイズが変わっているわけではない。
>853 サイズと容量の違い
原文: Each ArrayList instance has a capacity. The capacity is the size of the array used to store the elements in the list. It is always at least as large as the list size. As elements are added to an ArrayList, its capacity grows automatically. JavaSE6日本語版ドキュメント: 各 ArrayList のインスタンスには、「サイズ」があります。 それは、リストの要素を格納するために使用する配列のサイズで、常にリストのサイズ以上の大きさになります。 ArrayList に要素を追加すると、そのサイズは自動的に拡大します。 ひでえ訳だ。 サイズとキャパシティの違いが分からない人が生まれるのも無理はない。
サイズ: ArrayList が持っている要素の数。最初はゼロ。 add() で要素を追加するたびに1ずつ増える。 サイズより大きいインデックスを指定して get() とか set() とかを呼ぶと IndexOutOfBoundsException になる。 キャパシティ(容量): ArrayList が内部で使っている配列の大きさ。 パフォーマンスを最適化するために初期容量を変えたりすることもあるが、 普通はあまり容量を意識しなくていい。
861 :
854 :2010/03/07(日) 16:26:17
>>856 , 857
ありがとうございます。
f_arrayは指してるだけで、その実体は新たにつくられてる
ってイメージで、納得しました。
じゃbヴぁあああwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
864 :
853 :2010/03/07(日) 23:32:46
>>855 >>859 >>860 ありがとうございます。
頭から詰めなくてもよい
サイズが動的な
配列はあるのでしょうか。
vectorならOKとか
(今回のコードで、例外を発生させたくないのです。)
頭からつめたくない理由は? 後から頭に追加したいならaddの引数で位置を指定できるぞ。
だから目的にあったAPIを使えよ。 ListじゃなくてMapの方が適してるんじゃねーの?
LinkedListってのもある
>>864 挿入する場所はどうやって決める?
単に数字に対して値を保持したいだけなら
Mapでキーをintにするだけでいいんでないの?
プログラムの初歩の初歩を学習中で、将来的にしぃペインターのようなお絵描きアプレットを 作りたいと考えています。 サーブレットやGoogle.appにビーンズ? アプレットなど様々なJAVAの種類のうち、 上記のような物(もしどれも出来るなら、しぃペインターと同環境もしくは代替品)を作りたい場合、 どの方向性に進めばいいでしょうか?
どの言語が何に適しているかを学ぶところから始めよう
JFrameのタイトルバーでのマウスイベント(pressやrelease等)ってどうやったら 拾えるのでしょうか? JFrameにてaddMouseListenerを設定してもタイトルバーでのマウスイベントが 拾えなかったのですが…
エラい無意味な問いだな。
タイトルバーは L&F 管理してるので触れないと思う。
>>872 すみません、まだ勉強中なので何がしたいってわけではないのですが
試している時にタイトルバー上では拾えなかったので気になっただけなんです。
>>874 タイトルバーは管理しているところが違うので拾えないのですか。
勉強になりました。ありがとうございました。
webアプリケーションでレスポンスにデータを書いてしまった後で想定外エラーが発生した場合、 エラーjspに遷移させる方法はないでしょうか? 無い場合、一番ユーザに優しい処理としては、何があげられるでしょうか? アドバイスをお願いします。
サーバーがクライアントにデータを吐く ↓ クライアントでは結果を表示 ↓ サーバーがデータ吐いた後にエラーを起こした ↓ クライアントの結果表示をエラー用JSPに遷移させたい ってこと? HTTP 1.1なら継続的接続で何かできないんだっけ?
>>877 その通りです。
HttpServletResponse#sendErrorには
レスポンスが既にコミットされている場合、 このメソッドはIllegalStateExceptionをスローします。 このメソッドを使った後は、レスポンスはコミットされたと考えるべきで、 レスポンスに書き込みを行なうべきではありません。
て書いてあるので、何か手を駆使してどうにかできないものかと苦慮してます。
XPath の構文って java.util.Pattern みたいにコンパイルした状態で共有できる?
客が買い物して家帰って寛いでるところに電話で 「買い物された後ですが店が火事になってしまったので買われた物は無効です。 申し訳ありませんが引き取らせてください」 とか言う感じ?
その例えなら、店がunk つまり、実装がunkなことにならないか?
>>871 setUndecoratedをtrueにしてタイトルバーを消したJFrameか
もともとタイトルバーの無いJWindowに自前でタイトルバー描けばできると思う
Eclipse使ってJavaアプレットの.classファイル作ったんだけど、 Eclipse上では動くんだけどhtmlから起動するとエラーが出る。 アプレットなんて興味ないよっていう人も多いかもしれないけど、 解決方法わかる人いたら教えて。
エラーと言っても HTML の書き方から JDK のバージョンからアプレットのバグから 様々考えられる。どういうエラーなのか詳しく出さなければ答えようがない。
886 :
884 :2010/03/10(水) 19:39:14
>>885 ありがと
とりあえずホームページ上には、
エラー。クリックした詳細を確認してください←というメッセージが出ている。
詳しいエラーメッセージは
java.lang.NoClassDefFoundError: sampleapplet (wrong name: sampleapplet/sampleapplet)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
例外: java.lang.NoClassDefFoundError: sampleapplet (wrong name: sampleapplet/sampleapplet)
NoClassDefFoundErrorそのままやんけ。
・HTML と同じディレクトリに sampleapplet.class を置く ・<applet> タグには code="sampleapplet.class" と書く (<object> タグの場合は <param name="code" value="sampleapplet.class">)
889 :
884 :2010/03/10(水) 20:04:56
htmlのコードは次の通り。ホームページビルダーを使って作成。 <p><applet code="sampleapplet.class" width="300" height="300"></applet></p> html(javaappletrenshuu.html)と同じディレクトリにsampleapplet.classというファイルを置いてるんだけれど。 .classファイルが見つからないっていうエラーだということ?ファイルはあるはずなのに・・・
>>889 そのクラスは何かのパッケージに属してる?
アプレットは全く使わないからはっきりとは言えないけど
コード内に「package sampleapplet;」って一文があると扱いが少々違うかもしれない。
もしあったらそれを消して再コンパイルすればいいと思う。
891 :
884 :2010/03/10(水) 20:17:49
>>890 確かにソースコードには
package sampleapplet;
という一文がある。
でもこれって削除するとEclipseでコンパイル(実行)できないみたい。
パッケージが原因という可能性もあるということだね。
そりゃあ出来ないだろさ。デフォルトパッケージ直下に移動。 理由は分かるまで自分で調べること。packageの意味から。
sampleapplet というパッケージ付きなら ・HTML のディレクトリに sampleapplet というサブディレクトリを作って sampleapplet.class をそっちへ移動 ・src="sampleapplet/sampleapplet.class" に変更
894 :
884 :2010/03/10(水) 20:26:01
>>892 とりあえず、
packageはeclipseを操作するときに指定しなければいけないのであれば、
eclipseでjavaアプレットは作りにくいっていうことでいい?
895 :
884 :2010/03/10(水) 20:28:42
>>893 ありがと、とりあえずHtmlを修正してみる。
×src= ○code=
897 :
884 :2010/03/10(水) 20:39:18
>>885 〜896
ありがと!!
うまくアプレットがhtml起動できるようになった。
これでEclipseでJavaアプレットが作れるようになりそう!!
パッケージの仕組みが分かってないからeclipse以前に勉強し直すしかない。
そんなもん追々覚えればいい。
Fileで2G以上のものを使いたい場合に、java.io.FileOutputStreamとかのwriteのoffsetがint型なんですが、2G以上を指定する場合にはどうするのですか?
100 回でも 1000 回でも分けて随時書いて行けば良い。
RandomAccessFile か FileChannel 使え
>>903-904 ありがとう。
あと、自分の間違い、offsetは渡したバッファのオフセットだった・・・
906 :
デフォルトの名無しさん :2010/03/10(水) 23:04:38
BASIC認証 DIGEST認証 FORM認証 この3つはできたのにCLIENT-CERT認証だけはできませんが どうしたらいいでしょうか?
907 :
デフォルトの名無しさん :2010/03/10(水) 23:08:08
その質問の仕方で答えられるわけねーじゃねーか どこまでやったとか どこでつまづいたとか こんなエラーが出るとか どうしたら回答してもらえるかちょっとは考えろよ
使わなければいいと思うよ。
>>878 それしかないっすよね。
ありがとうございます。
初歩的な質問なのですが、マルチスレッド環境でMap(具体的にはWeakHashMap)を同期化するときに、 synchronizedではなくReadWriteLockでも大丈夫でしょうか?
別に良いけど Map の出し入れ程度の同期化でそんなにパフォーマンスが変わるわけじゃないぞ? そんなのはとりあえず synchronized でやっておいて、後でプロファイラ計測で問題が確定して からでかまわないだろ。public で Map 丸出しでもなければ設計が大きく変わるわけじゃないし。
ふむむ、そういうものですか。 とりあえず、お勧めに従ってsynchronizedで実装してみます。
ConcurrentHashMapはどうでがす?
で、よく調べると、こういう用途はSoftReferenceじゃないと意味がないという記述が。。 お恥ずかしい。
ありがちなミスだな。 更新すくない場合はConcurrentHashMapが良いよ。
917 :
915 :2010/03/12(金) 02:08:35
ググっていたら、Google先生がリリースしているgoogle-collectionsというライブラリのMapMakerが、 同期制御しながらSoft参照で。。みたいな要件のMapを作る機能を提供しているようです。 使い方がややこしいですが、色々試してみて後ほどご報告したいと思います。
javaアプレットで通信対戦ゲーム作ろうと思ってるんだけど、 socket通信って難しそう。 socket使える人ってどこから覚え始めた?
finger user protocol
finger user protocol Name/Fingerプロトコル(ネームフィンガープロトコル)および Finger ユーザー情報プロトコルは、ユーザー情報など人間に纏わるステータスを交換するための通信プロトコル。 なんだか業務用の技術みたい。素人には難しそうだ。 アプレットゲームで使うレベルのsocket通信の技術を覚えた人はどのあたりから覚えはじめた?
>>918 ぐぐって簡単なサンプルでも作ってみた?
そんなに難しくないだろ。
つか、httpでやれよ
なんでわざわざソケット?
>>921 とりあえず逆引きに載ってるサンプルプログラムを入力して実行したぐらい。
なんだかよくわからんかった。
httpでやるってどういうこと?JSPとかいう技術のこと?
クライアントA ⇔ クライアントB でやるつもりなん? セキュリティ的に大変なんじゃない? ふつー、通信対戦といったら クライアントA ⇔ サーバ ⇔ クライアントB サーバになんかプログラムが必要だぞ
>>923 とりあえずレンタルサーバー借りてるんで、
サーバーは確保できてる。
ので923の言ってる
クライアントA ⇔ サーバ ⇔ クライアントB
で行こうと思ってる。
サーバーのプログラムはJAVA
クライアントのプログラムはJAVAアプレット
という風にすれば、プレイする人はプログラムをインストールしなくて済むのでいいかなと考えてる。
そこでなんとなくsocket使えばいいのかなーと思ったんだけど他にいい技術がある?
HTTP で対戦系のゲームなんて作れないだろ。どこの業務屋だよ。
どんなゲームを作りたいん? カードゲームや、将棋あたりならhttpで十分 リアルタイム性のあるゲームならソケット
とりあえずカードゲームや将棋とかも作りたいけど その前に通信技術を覚えときたいので○×ゲーム (縦横斜めに3つならべた人が勝つゲーム) を作ってみようかなと思ってる。 (通信技術を使わない一人二役の○×ゲームアプレットはとりあえず作った) 対戦ゲームだからチャットも用意したほうがいいかなと思ったので ソケットなら何でも対応できるかなと思ったんだけど。 httpってそんなにお勧め技術?解説本とかあるの?
きみが2chを表示してるのも 書きこんでるのもhttp通信 http通信自体はものすごい一般的な技術 解説本なんて腐るほどある ざっくり言うとサーブレットやらJSPは Javaによるhttp通信のサーバ側の技術 クライアントのアプレット ⇔ サーバのサーブレット、JSP こんな感じ ○×やらチャットなら とりあえずhttpでやったほうがいいよ
まずマスタリングtcp/ipを嫁
httpってホームページのアドレスの先頭につく記号としてしかしか知らなかった。 http超お勧めっていうことだね。 929の言っている クライアントのアプレット ⇔ サーバのサーブレット、JSP ということなら、サーバをサーブレット、JSPで作る技術を覚えるのがいいってことだね。 JSPサーブレットはまだよくわかってないけど家に本が何冊かあるから、 ちょっと頑張って読んでみる。
>>930 「マスタリング tcp/ip」ってアマゾンで見たらすごいシリーズが多いよー。
全部は読めん(経済的にも、読解力的にも)
「マスタリング tcp/ip」の基本書1冊だけよんでみる価値はある?
>>932 Javaでhttpやらソケットするなら必要ない
「Java並行処理プログラミング」入手できるようになった?
復刊直後に売り切れてたな。 今みたらAmazonに在庫あるみたいだね。 内容考えたら安すぎる。
わからねぇわからねぇ言ってないでネットのサンプルコードでもまず書け。 ソケットも使えない奴が○×程度のネット対戦ゲームでも作れるわけないだろ。 あと対戦ゲームに HTTP とか言ってるアフォはチンカス業務コーダーだから無視して良し。
>>936 ソケット詳しい人登場?
逆引きから引用したんだけど
この状態でサーバー、クライアントの情報伝達はどうする?
サーバー側
package sample323;
import java.io.*;
import java.net.*;
public class Sample323 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
try{
ServerSocket svsock=new ServerSocket(2525);
Socket sock =svsock.accept( );
PrintWriter out =new PrintWriter(sock.getOutputStream(),true);
out.println("Hello Java!");
sock.close();
}catch(Exception e){
System.out.println("例外"+e+"が発生しました。");
}
}
}
クライアント側 package sample324; import java.net.*; import java.io.*; class Sample324 { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ byte[] buff=new byte[1024]; try{ Socket sock=new Socket("127.0.0.1",2525); InputStream in=sock.getInputStream(); int n=in.read(buff); System.out.println("サーバーから"); System.out.write(buff,0,n); System.out.println("を取得しました"); sock.close(); }catch (Exception e){ System.out.println("例外"+e+"が発生しました"); } } }
何を答えろと言うのだ。まずは質問の仕方から勉強して出直してこい。
申し訳ない。 逆引きが一番コードの短いサンプルが載ってたから引用したんだけど、 とりあえず、サーバーとクライアントの接続ができた→文字列の送信→ソケットを閉じる。 これを改造して、変数のやり取りをできるようになるとネット対戦ゲームができるのではないかと思うんだけど。 方向性は間違ってないかな?
それで良い。Socket から参照した InputStream/OutputStream を使ってデータの送受信を行う。 送受信を交互に繰り返すならストリームのフラッシュを忘れない様に。
別に間違ってないだろうけど、「変数のやり取り」っつーのを どんなデータをどんな手順で送受信して実現するかってことを決めないとな。 その手順が、今回作るプログラムのプロトコルっつーことになる。
方向性は間違っているってずっと言われてるのに…
いちいち開けて閉じるならHTTPと一緒。 javaなんだからbufferdreaderで読み込めばどんなstreamでも 行ごとのオーダーでデータを読めるということを思い出したまへ。
そんな単発プロトコルが対戦ゲーム向きなわけがないだろう。
まあcometなんてのもあるからhttpとはいえ 開けたらすぐ閉じなきゃなんないわけでもないけどね。
ネタがないから食いつきいいなw
ブラウザに同時接続数上限がある以上 Comet なんて全く実用性ないよ。 途中にタイムアウト付きのプロキシが居たら終わりだし。
949 :
デフォルトの名無しさん :2010/03/12(金) 22:27:36
具体的にいうと、送る側は キー=値,キー=値\n みたいな感じでストリームに書き込んで、 読む側は適宜readLine()とかすればいい感じ。 両方向通信するんだったら接続先1つにつきソケット1つづつ増やしちゃって問題ないぞ。
とりあえず、 sock.close(); は削除しても動くみたいだから つなぎっぱなしの状態にしておくこともできると考えていいかな? その間に○×の座標や手番のデータをやり取りするコードを入れちゃえばもう少し対戦ゲーム っぽくなるかな?
いや、通信というかセッション終わったら閉じろよ。例外の中とかにclose()入れておけよ。
952 :
950 :2010/03/12(金) 22:44:13
みんないろいろありがとう。 とりあえず今わかるソケットのソースコードはのコードぐらい。 いろいろソケットについて書いてある本にソースコードはあるんだけど長すぎて今の段階では、理解不能。 とりあえずJAVAの逆引きもこれ以上詳しくは書いていないので、 コメントしてもらった InputStream/OutputStream readLine() close(); について調べてみる。
953 :
952 :2010/03/12(金) 22:45:45
では今日はもう寝ます。おやすみなさい。
なんでど素人にソケットのサーバ作らせるの? サーバプログラム書いてソケット自前で管理してって ○×ゲーム&チャットくらいなら httpでポーリングすればいいじゃん
HTTP ポーリングを当然の様に勧める低脳は死んどけよ。
わかりました
当然のようには勧められない理由も書けないんですね
ごめん、書けない
わかりました
まぁ落ち着けよ。カス共。
理由を教えてもらわないといけないようなカスは死んどけよ。
わからないんですね、わかります
じゃあおまえは分かるのかよ。
ごめんなさい、わかりません
正直な話、http勧めるのはデフォルトで80開いていない家庭用ルータって あんまりないからだろう。
>>965 空いてねーよ。てか家庭用ルータに接続してどうすんだ。
そもそも
>>924 の構成だったらそんなの関係ないじゃん
デフォルトで特定ポート規制するようなルーターがまずないわけだが。
>>967 LAN側とWAN側どっちの話をしてるんだ
おまえ
>>967 か?
どっちの話してる気だと聞きたいのはこっちだっつーの。
あァ?お前どこ中よ?
どこなかと読んでしまっま
え?
とんでもねーとこにきちまったな
レンタルサーバー借りてるって言ってるけど、 どこの借りてるんだろ。 レンタルサーバーって任意のポート開けれるんかな?
976 :
デフォルトの名無しさん :2010/03/13(土) 14:11:50
インストール中に「選択した機能は現在使用できないネットワークソースにあります。」とメッセージがでるのですが・・・よくわかりません。 上記メッセージの後に、 「[OK]をクリックして再実行するかインストールパッケージ ‘jre1.6.0_12.msi‘を含むフォルダに対する代替パスを以下のボックスに入力します」 と表示出て、その先には進まずインストールが中断されてしまいます。 Javaヘルプセンターで調べてみたり、ネットで調べてみて、 旧バージョンのアインストールをしてみようと思いコントロールパネルを開いてみたのですがプログラム自体にJavaが存在しませんでした。 どなたか分かる方いらっしゃいますでしょうか? ちなみにOSはVistaです。
>>976 ダウンロード中にインストーラのファイルがぶっ壊れたんじゃね?
978 :
デフォルトの名無しさん :2010/03/13(土) 15:36:43
Javaにはtree構造を表現するクラスが存在しないみたいですけど みなさんはtree構造を利用したい場合は自分で実装されていますか? もし定番ライブラリみたいなものがあれば教えていただけないでしょうか。
Map に Map 入れりゃツリーになるし、DOM もあるし。
DOM最高! XML最強!
バイナリxmlをJAXPに加えてくれんかな。 fast Infosetじゃ半分の大きさにしかならないからEXIで。
nimbusがあるパッケージって変わったんですか? >com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel だったと思っていたんですが
いつも自動取得でやってるからシラネ
かわった
986 :
983 :2010/03/14(日) 00:40:07
jreにインストールしてあるLook And Feelを表示してみたら、3つしかなかった java7からはnimbusがjavax.swing.plafに入るらしいけど nimbusどこへ行った
nimbusは家出中
マジかよ。今横で寝てんだけど。
保護した家で娘がdomだったなあぁ。 梅。
nimbusってハリーポッターのほうきじゃないの?
2010モデルってもう出てるのかな?
もうjavaは終わったようだ。 膿め。
次は何が来るんですか?先生!
CO
java.util.logging.FileHandlerを設定ファイルで定義しようとすると 個別にファイルの出力先変えられないのですか? 実装上はインスタンスごとに出力先変えられるのに、設定ファイルだとうまく行かないようなのですが??
実装上はインスタンス単位で可能でも設定ファイル上はクラス名ごとしか指定出来ないクソ仕様。 諦めてオンコードで書くことだな。
クラスに属さないメソッドって作れないの?
998 :
デフォルトの名無しさん :2010/03/15(月) 23:42:07
逆にクラスに属するメソッドの何が問題なの?
答えはこの後すぐ!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。