おれはこの3年間必死にJAVAを勉強してきた。
実際クソみたいな言語仕様だが改良に改良を重ねた1.5はチト使える。
よって、まともな言語としての扱いを受けるスタートラインにやっと立ったと言える。
JDK依存した質問はバージョン明記するように。
リテラル文字列同士の’+’演算子での結合って、StringBuffer.Append()動くの?
なぜ、JAVA言語にはリテラル文字列のコンパイル時連結機能が無いの?
’+’がとってもウザイのだが・・。
3 :
デフォルトの名無しさん:2005/12/27(火) 07:22:00
+か、下らん事に悩んでるより、他に勉強することあるでしょ?
動く。
高速化したいならstatic final Stringで、プラス隠蔽したいならメソッド内で
final Stringで高速かつエレガント。逆に言うとstaticメソッド以外なら、
メソッド内ではリテラルにfinal付けなきゃ駄目って事。
で、リテラル文字列同士の+演算子って処理速いから気にするな。間違ってもconcat()や
append()使って書くなよ。見難いし醜いから。
リテラル文字列の連結機能うんぬんについては、言語仕様的に考えるとJAVAが正しいかもしれない。
なぜならC系のリテラルは+無しで連結できて変数は連結できないというのも少し引っかかる。
まぁ+がウザイのはJAVAだからって事で許してやれ。
unsigned とか const が java に導入される日は来るの?
unsigned は導入されることはない。
for(unsigned int i = 10; i >= 0; i--) {
}
とかアフォなコードを書く奴対策らしいぞ。
constほすい(´・ω・`)
8 :
ビル・ジョブス:2005/12/28(水) 04:41:42
constは別の用途に予約されているような。。
メソッドのconstもほすい(´・ω・`)
10 :
デフォルトの名無しさん:2005/12/29(木) 12:20:52
>>1 ”改良に改良を・・”ってところがフリー(=無責任)のJAVAらしくていいね。
11 :
デフォルトの名無しさん:2005/12/29(木) 19:14:02
あと、”推奨されません”ってなんだよいったい。
12 :
デフォルトの名無しさん:2005/12/29(木) 19:50:32
JAVA VMがメモリを食いまくっていますがなんとかならないのでしょうか?
256MBとか簡単に使っているのですが、どう考えても尋常じゃないです。
全部大文字(゚д゚)
14 :
ビル・ジョブス:2005/12/29(木) 20:19:01
Windows前提なら、わざわざインタプリタのJAVAではなく、
素直にC#使えって事です。
そうなんだよ。
どうせwindowsなのに、あえてJAVA使ったら逆にCPUパワーロスしているようなもんだよ。
linuxなんて一生使わない人かなり多いと思うし。
16 :
デフォルトの名無しさん:2005/12/29(木) 23:40:30
インタプリタで、プリン食べたい!
動的コンパイルで、疲労困憊!
動的クラスローディングで、ロードホイールディング最高!
結局CPUが蛇場バイトコードを直接実行出来る日が来るまでダメ
マルチプラットフォームに対応していることだけか?
18 :
デフォルトの名無しさん:2005/12/30(金) 01:23:47
あなたたちはJavaで何をしたいんでしょうか?
Javaの強みを良く考えてからスレ立てしれ。
コノアフォドモガ
19 :
デフォルトの名無しさん:2005/12/30(金) 05:30:29
RMIでConnection refused to host:192.168.0.2ってエラーが出ちゃいます。どうしたらいいですかね?
20 :
デフォルトの名無しさん:2005/12/30(金) 06:20:35
やりなおせ
「ばあちゃん?おれおれ。
事故ったから30万な。
ナ メ た マ ネ す ん な よ。
ごめんね。よろしくね」
22 :
デフォルトの名無しさん:2005/12/30(金) 22:03:10
>>18 どこがJavaの強みなのか、まずはあなたが説明してください。
24 :
デフォルトの名無しさん:2005/12/30(金) 23:18:00
>>22 Javaの強みはJ2EE。
>>23 サーブレット開発言語としてのJavaとはまったく関係ない。
>>9 つprivate final String a;
つpublic set(final int x){
//(ry
}
>>9が言いたいのは、メソッドでC++みたいにインスタンスのconstリファレンスを返したいということじゃないだろうか
俺漏れ
void method() const { }
この const が欲しいよう欲しいよう
このメソッドを使っても、インスタンスの中身は変化しないという安心感!!(゚д゚)シメジ!!
あーそしたら今度は mutable が欲しいとか言い出したりして。。。
つ Immutable パターン
28 :
デフォルトの名無しさん:2005/12/31(土) 18:54:42
javaで固定番地(I/Oポートとか)へのアクセスってどうやるの?
29 :
デフォルトの名無しさん:2005/12/31(土) 19:28:11
正直、JAVAでは中国と戦えないと思う。
30 :
デフォルトの名無しさん:2005/12/31(土) 20:37:44
中国と言えば・・
近未来、フリーウェアが中国にとって最大の武器になるよ。
きっとSUNのJVMを超えるVM作ってくるよ。さっさとソースは隠蔽しないと・・。
もう日本人はダメだ、そういうCreativeな精神が無いし、他力本願、
真っ先に”批判(非難)”する事から物事考え始めるから。
31 :
デフォルトの名無しさん:2005/12/31(土) 21:45:09
> もう日本人はダメだ、そういうCreativeな精神が無いし、他力本願、
> 真っ先に”批判(非難)”する事から物事考え始めるから。
最近は、日本人もCreativeだし自力でやりだしてるし、そういうことの成果が見え始めてるといわれてるわけだが。
ダメだったりCreativeな精神がなかったり、他力本願だったり真っ先に”批判(非難)”する事から物事考え始めてるのはお前だろ。
日本人の性質にしないでくれ。
しかし自力でやるよりは、既にあるものを利用する方が
信頼性が高いっつーのは事実な。
OS作ってるひげぽんが、slashdotに巣くってる奴らから叩かれているのは
ひげぽんとその周囲の人間が、多大な時間を無駄にしているからだ。
決して「2ch憎し」で叩いてるんじゃないんだよ。
短期的な成果に結びつかない作業にOKださない上司は多いな。
まあ、中間管理職には権限ないし、上のほうはソモソモ興味ないからな。
ITITいいながら実は全然興味ない馬鹿幹部ばっかり。
げんなりする回答キター!!
36 :
デフォルトの名無しさん:2006/01/01(日) 13:09:10
>>31 >最近は、日本人もCreativeだし自力でやりだしてるし、そういうことの成果が見え始めてるといわれてるわけだが。
どこが?詳しく教えてくれ。自画自賛だったりして。
おれも日本人だが海外に住んでいる、日本人にはそういう力は無いと断言する。
国民の90%以上がまともに英語すら喋れない島国根性丸出しの国で、世界に通用するフレームワークの1つでも作れるのか?
WEB系のIDEだってみんなECLIPSE(チト改)を偉そうに製品化しているよな?
日本国民は素晴らしいとか、世界第二位の経済大国とか、鼻で笑っちゃうような自慢するなよ。諸外国は日本と言う国に対して
そんな印象は持っていないぞ。確かに車やSONY以外の家電の信頼性は高い。
しかし日本人は「仕事するために生きている民族で、生きるために仕事をしているわけではない」つまり、人間ではないと思われている。
良い製品を作ってくれる、単なる物的製造国家ありがとう。ってな感じ。
日本人に対しての敬意や尊敬など全くと言っていいほどこの世には存在しない。
英語くらい話せるようになってから、能書きたれろ。そして勘違いもいい加減にしろ。
37 :
デフォルトの名無しさん:2006/01/01(日) 15:13:00
>SONY以外の家電の信頼性は高い
禿
>>36 まあまあ同意。他国からすれば、東の果てにある工場、なんでしょうな。
しかし、読みづらいよ。もうちょっと短くまとめるか、改行はさんでてくれるとありがたかった。
39 :
仕様書無しさん:2006/01/01(日) 18:23:07
JDBC関連の本が意外にないのですが、良書ないでしょうか。
密林でみたかぎりはどうも古い年代のしかないようです。
>>39 そりゃそうでしょう。今ごろJDBCを直接使うことなんてありませんから。
41 :
仕様書無しさん:2006/01/01(日) 23:33:08
え、どういうこと?JDBC以外にもDBにアクセスする方法が
JAVAにはあるということですか?
正直、SQLなんていまどき書いてられない!って
面倒くさがりが多すぎるんでO/Rマッパが流行ってる
43 :
デフォルトの名無しさん:2006/01/02(月) 03:23:03
確かに言語から文字列で渡すSQL文って、いい加減勘弁してほしいね。
SQLって言語仕様として取り入れるべきなんだよな。
表情報なんかもコンパイラがDBに取りに行くべきなんですよ。
44 :
デフォルトの名無しさん:2006/01/02(月) 03:34:14
皆さん表の項目名は当然日本語ですよね?
45 :
デフォルトの名無しさん:2006/01/02(月) 05:55:50
43>>
まぁ、そうだけど、どのみち、複雑なSQL文はマッパじゃ無理じゃねぇ。
つか、マッパまでいかないにしても、JDBCのデータセット??レコードセット??
って更新されたレコードを元に自動的にSQL文って組み立ててくれんのか??
.NETならデータセットとデータアダプターが自動的にSQL文組み立てて発行してくれるが、
それだけでも、とりあえずは十分なんだが。
>>45 既存システムからの移行なら複雑なSQLもあるかもしれないけど。
新規なら、O/RマッパやコンテナのCMP/CMRの機能に合わせて、DB設計しちゃう。
ようするに、オブジェクトの永続化に問題なければいいわけだから。
sql.select(hoge).from(hage).where(fuga);
48 :
デフォルトの名無しさん:2006/01/02(月) 10:19:27
>>47 惜しい98点。
ResultSet rs = stmt.sql.from(hoge).select(pugya, agya).where(papa).equals(mama).orderBy(agya);
少し複雑なタイプのsqlの場合は、
rs = stmt.sql.from(family).select(son, papa, mama).startWith(papa)sqlEquals(hage).connectByPrior(son).sqlEquals(papa).sibilingsBy(son);
こんな感じでいけるよな?from()を先に持ってきているのは、select(でインテリ利かすため。
だれか作ってくれ。でも多重継承しないと難しいかも。
それか、sql文字列文を作るクラスでもいいと思うが・・鬱
そうだ!各DBベンダに頼めばいいんだお!
SQL文字列を構築するクラスライブラリなら作ったことあるよ。
あまり本格的にするつもりなかったから、DB構造のオブジェクト化まではしなかったけど、
そんなに工数はかからなかった。
>>48の最初の例くらいなら、すぐに作れるでしょ。
50 :
デフォルトの名無しさん:2006/01/02(月) 11:31:30
javaに3Dライブラリってありますか?
PS2程度の性能で十分なのでjavaで色々と出来ないかなと考えてます。
51 :
デフォルトの名無しさん:2006/01/02(月) 11:35:23
>select(でインテリ利かすため
う〜ん、どっちかって言うと、おれはドットでフィールド一覧出てきて欲しい。
テーブル名毎回入力するのだけはカンベン。修飾すればいいのか・・。
52 :
デフォルトの名無しさん:2006/01/02(月) 11:40:34
Visual Studio C#/C++/J# Expressだけならまだしも、
SQL Serverまで無償配布かよMS!
こりゃ、2006はMSの天下決定だな。
無償のSQL Serverったって、中身はMSDE2005なわけで、
これは正直MSの名前替え戦略の勝利だな。
ものは言いようの世界ってことだね
56 :
デフォルトの名無しさん:2006/01/03(火) 12:44:37
つうかこのスレッドのやつらって素人だろ
57 :
デフォルトの名無しさん:2006/01/03(火) 17:12:23
しっかりageて、そんな事言わなくても・・で、age。
>>49 バイト先で差、先陣の学生アルバイトが作って就職して去っていった
ときに残ったソースコードに、独自のクエリ構築クラスを
作ってるのがあったが、確かにある程度までは使いやすかったが、
fromの前の句、from句、where句それぞれのクラスを作っていたが
どうも中途半端で。それらから内部で文字列連結をするものだったが、
max()やasなど細かいことがやりづらいのが難点だった。副問い合わせもinもjoinもunionも
中途半端。
ほかにも、メソッド引数にいちいち型変数を渡すとか二度手間が多いこと、などには代わりなかったよ。
率直にHibernate使って欲しかったな、と思った。
>>52 Oracleだって無償版あるけど。
SQLServerよりもOracleのほうが信頼と実績があって高機能だし。
オープンソースのPostgreSQL8.1もなめちゃいけないよ。
あれも高性能高機能。恐るべしというところか。
そのSQLServer無償配布というのがVS.NET Expressのように一年間限定でなければいいけど。
61 :
java:2006/01/06(金) 02:25:08
すみません、聞きたいことがあります。
MouseEventでjavaアプレットを起動しているのですが
そのアプレット内にあるActionEventが実行されません。
何が原因なのでしょうか?
ActionEventのみで作ったプログラムは動きます。
よろしくおねがいします。
62 :
デフォルトの名無しさん:2006/01/06(金) 03:45:10
>Oracleだって無償版あるけど。
これ、使ってみたけど、何か処理が遅すぎるんだよね。なんか、遅くなるよう細工してるのかな?
>オープンソースのPostgreSQL8.1もなめちゃいけないよ。
>あれも高性能高機能。恐るべしというところか
そうなんだけど、なぜ、世の中はMySQLなんだ??
PostgreSQLは日本で一番はやっていると聞いたが。
>Visual Studio C#/C++/J# Expressだけならまだしも、
>SQL Serverまで無償配布かよMS!
>こりゃ、2006はMSの天下決定だな。
まぁ、これは消費者のせいだな。Officeから何でもMicrosoftの製品
買うから、独占がどんどん強くなって、高価格と言う弊害が出る。
俺を含めた消費者の自業自得
>>62 時代がまだ一太郎+123だった頃の独禁法違反は無視ですかそうですか
>>62 PostgreSQLはSunがサポートするようになったからこれからじゃない?
MySQLは速度重視という絶対的なポジションがあったからね
ただ色気づいて機能追加していった時に今まで通り速いのかは知らね
staticメソッドをインスタンスからどうしても呼ばなければならないときに、
呼んでも特に影響はないでしょうか?
>>65 MySQLは機能追加して速くなくなったものと今まで通り速いものをテーブルごとに切り替えられる。
PostgreSQLは普及期にWindows対応してなかったのが痛い。
日本の場合トランザクションにこだわるのでPostgreSQLが広まったけど。
>>66 Integer.parseIntとか、普通に呼び出すだろ。
69 :
デフォルトの名無しさん:2006/01/06(金) 12:00:52
MouseEvent内でActionEventを実行しても、イベントキューのせいでActionEventが実行されません。
この難問を解ける方いませんか?
>>68 Integer.parseIntがstaticですかそうですか
72 :
デフォルトの名無しさん:2006/01/06(金) 13:04:05
現在、J2SEv1.4.2_10にて電卓プログラムを作成中なのですが、
小数点以下の桁数が多い演算で困っています。
BigDecimalクラスのメソッドを使って計算しているのですが、
例えば、0.00000000001 + 0.00000000001 の計算結果が
2E-11 と常用対数(?)で表示されてしまいます。
この計算を 0.00000000002 と表示させる方法はあるのでしょうか?
v5.0ではString.format()メソッドを使えばよさそうなんですが、
v1.4.2_10でできる方法があれば、どなたか教えて頂けないでしょうか?
よろしくお願いいたします。
74 :
72:2006/01/06(金) 13:32:02
上のコードを実行してみたところ、やはり
2E-11
と表示されてしまいました・・・。
76 :
72:2006/01/06(金) 13:58:40
1.5で実行していました・・・。
大変お騒がせいたしました・・・。
77 :
デフォルトの名無しさん:2006/01/06(金) 21:11:57
質問いいですか?
JAVAから別のJAVAを実行させるにはどうすればいいのでしょうか?
すみません
解決しました
>>78 は私じゃないです
勝手に解決されるとこまります
まだなので教えてください
80 :
プログラマーの卵:2006/01/09(月) 15:28:52
JavaとposgreSQLを勉強してるものです。
あの〜、JSPサーブレットとかアプレットできないとJavaの仕事としてなりたたないものですか?
あと就職が近いのにうまくプログラムが組めないんでいるんですが、就職したらどうにかなりますか?
心配しなくても寝る間もなく働かされるから大丈夫だ。
そういう作業を続けてたら、そのうちどうにかなる。
コンストラクターを定義しないと親クラスのコンストラクターが呼ばれますが
これは普通に継承しているからという仕組みなのでしょうか。
コンストラクタを定義しないと
public Hoge(){
super();
}
というコンストラクタが定義される。
>>80 おまえみたいな香具師がバグだらけのプログラム書いて周りに迷惑掛けるんだよ
こっちの世界にくんな
>>80 ・JSPサーブレットなどは存在しない。JSPとサーブレットは分けなさい。
・勉強途中で断念するくらいなら別の道に進みなさい。
・勉強は死ぬまで、少なくとも退職するまで続くものと思いなさい。
・就職しただけではどうにもならない。
・世の中のシステムはJavaだけで構成されるものではない。
・そもそもプログラミングだけでは食べていけない。企画立案・要件定義・設計・運用も考えなさい。
以上がいやならこっちにこないでください。お互い、不幸になるだけです。
86 :
異端 A:2006/01/11(水) 23:31:09
JAVAでゲームを作っているものです。
JAVAがはじめてのプログラミングでそれで最初のプログラムがゲームだなんて
無謀かと思いましたが、案外何とかなりそうです。
初めて組んだプログラムが動き出した時はとても感動しました。
そこで質問なんですが、もしこの業界でプログラムをやっていく場合
これからもずっとその感動というものは味わえるのでしょうか?
プログラマーは苦労に対して喜びが小さいとよく聞くので心配です。
>>86 まとめ売りの内のひとりになると、言われた作業をこなすだけになるから楽しくない。
言われた作業自体が見当違いってことも多いしな。
突出した力を持ち続けれれば、プログラムはいつまでもずっと楽しい。
>>86 業務系の全てがそうだとは言い切れないけど、少なくともうちとこではコーディング
してる時間は思いの他短い。
一日中キーボードを叩き、日々プログラミングを学び続けるという姿を想像してるの
だとしたら、現実はそれとは大きく違う。
1日の半分くらいはミーティングとドキュメンテーションを行ってて、残りの時間でコ
ーディングしてるといった感じ。
ミーティングは数人規模でのスタンディングミーティングが主で、これが面子を変え
ながら方々で繰り返し行われる。
ドキュメンテーションは技術的なものを想像すると思うけど、実際は社外折衝や社
内調整なんかの伝達事項も多く、一般にイメージされるプログラマの仕事とはかな
り毛色が違って見えると思う。
プログラミングに関しては、必要な所を必要な時に必要なだけしか学ばない。それ
はまるで、某自動車メーカーの在庫管理の様w
だから、特定分野に関しては非常に詳しいが、そこから外れると驚くほど何も知ら
ないという穴の空いた知識になりがち。
まぁ、会社ってのは意外と色んな仕事があるもんで、プログラマだからってプログ
ラミングだけやってるわけじゃないってこと。
てか、プログラミングしかできない様だと、35歳定年説とかが笑い話にならなくなる。
89 :
異端 A:2006/01/12(木) 01:19:38
>>87 >>88 なるほど とても参考になりました。ありがとうございます。
プログラムだけで食っていく事は難しいんですね。感動も少ない。
いろんなそれに通ずる技術も身につけることにします。
>>89 既に
>>88さんが述べているけど、重要なのは対人折衝能力。これが苦手分野だと、イバラの道。
対人折衝能力があるなら、たいていの職業はこなせそうな気もするけど。
自分は苦手じゃなかったのにメンヘル板に出入りするようになってしまった負け組です。
コーディングする時間って短いよね。
自分は大体こんな感覚だけど。
設計:コーディング:単体テスト=5:1:4
プロセスIDやスレッドIDは取得することができるでしょうか?
そんなの知ってどうすんだよ。
ビルゲイツぐらいのスーパーハッカーが01の集まりでプログラム組んで
やっと取れるかどうかってぐらいの難しいもんだぞ。
VM内で管理しているスレッドIDなら取得可能。
OSネイティブなやつなら、ピュアJavaでは無理。
JNI経由でシステムコールを呼べば取得可能。
95 :
92:2006/01/14(土) 00:47:04
ありがとう、ゲイツ
ここってネタすれ?
ここはトリックだ!とか言わないよね?
98 :
ビル・ジョブス:2006/01/16(月) 14:55:27
ここはネタスレでも、宿題スレでもない、質問があれば答える。
「JAVA言語について語る」ただそれだけ。
99 :
デフォルトの名無しさん:2006/01/16(月) 15:51:06
JAVAアプリが動くとCPUキャッシュが死んでしまうほど無力化されてしまう。
そもそも、昨今のCPUはインタプリタ向けには作られていない。
それにJAVAもOSコードを利用する仕組みから動作のオーバーヘッドが大きすぎる。
さらにはGCそのものもJAVA−VMの仕事だが実際はOSに負荷をかけまくり。
なぜならJAVA−VMからも物理アドレスは見えないから。
JAVA−VMがコンパイルしたコード資産も仮想マシンの終了と共に消滅する。
よって、いくら高速なCPUを使用していてもJAVAを使う限り無駄があると言える。
101 :
デフォルトの名無しさん:2006/01/16(月) 21:26:55
あの…。javaでデッドレコニングする方法は
どうやるんでしょうか?
全くの初心者なので質問も大雑把ですいません。
102 :
異端 A:2006/01/17(火) 22:00:59
すみません
MacOS9 にJAVACをいれる方法を教えてください。
もう本家ではサポートされていないんですか?
103 :
デフォルトの名無しさん:2006/01/18(水) 12:06:00
Javaが遅いのはWINDOWS上のことであって、その他のプラットフォーム上ではそうでもありません。
私はLinuxでJavaを使っています。
速いとは言えませんが、十分使用に耐えるスピードです。
あとSWTですが、スピードに関してSWINGを遥かに凌ぐというのは風説であり、根拠がないと考えています。
遥かにという部分が間違いであり、若干速くなったというのが正確かと思います。
104 :
デフォルトの名無しさん:2006/01/18(水) 12:52:34
Javaのバイトコードを、
SPARC互換にすればよかったんじゃないかなー
って、時々思う。
105 :
デフォルトの名無しさん:2006/01/18(水) 16:28:15
JPopupMenu内にJComboBoxを組み込んでJComboBoxの項目を選択しても
JPopupMenuが消えないようにする方法を教えてください
106 :
デフォルトの名無しさん:2006/01/19(木) 05:16:56
慌てず急いで正確にな
真田さーん
>>105 JPopupMenu内にJComboBoxを組み込むという発想そのものが間違いなのではないか?
JMenu を add して階層構造にすればいいのではないか?
>>108 解答ありがとうございます
JPopupMenuが消えても機能的には問題ないんですが少し気になったもんで
複数のポップアップを同時に表示できればできそうなもんなんですが・・・
>>109 普通そういうのはサブメニューにしちゃうよね。
わざわざJComboBoxってことは、エントリ数がとてもとても多いってこと?
文字指定された日付をDate型にしたく、
new Date("2005/10/10")としたのですが、使用すべきではありませんといわれました。
どうすればよろしいでしょうか。
1行ずつファイル情報を読込む場合はどうすればよろしいでしょうか。
FileReaderにはread()しかみあたりません。
>>111 SimpleDateFormat を見よ。
>>112 BufferedReader を見よ。
Propertiesクラスはマルチスレッド内でもうまく動くのでしょうか?
同じPropertiesインスタンスを持っているスレッドが複数有り、
同時にsetPropertyやstoreなどを呼び出しても問題ないでしょうか。
>>114 Propertiesの親はHashtableだから最低限の同期は取るんじゃないですかね。
しかしそういう使い方はPropertiesというクラスに似合わない気がする。
日付の演算はどうすればよろしいでしょうか。
1日後、1日前がわかりません。
Calendar.add
>>117 ありがとうございます。
遅くなりまして申し訳ございません。
日付情報から日付を生成しようと思っているのですが、
new Date("2005/10/10");をコンパイルすると
使用すべきではありませんと表示されます。
どうすればよろしいでしょうか。
>118
数レス前も読めんのかこのノータリン
javaの計算で
小数点切捨ては、 8/3
四捨五入は、Math.round(8.0/3)、
切り上げはどうすればよいでしょうか
>120 ceil
>>121 ありがとうございます。
通常、2/3だと答えがint型になって桁が切り捨てられますが、
小数点で結果を取得したい場合は、
2.0/3とすればよろしいでしょうか。
>>122 そう。但しその値を代入する場合は型が double か float でないと保持できない。
>>123 ありがとうございます。
Integer = Integer - int をしたい場合は
new Integer( Integer#intValue() - int ) でできましたが、
もっと簡単な方法はあるでしょうか。
>>125 すいません。1.48を厳守されているので。
1.5だとそんなに簡単にできるのでしょうか?
今日から100日後までの日付(dateもしくはlong)のデータをListとして使用したいのですが、
どうすればよろしいでしょうか。
>>129 自己レスです。
Calendar#rollがなんか使えそうです。
ただ、100日後はできそうですが、xxxx/xx/xxまではできないようです。
むずかしい・・・
つうか普通にforでまわせばいいじゃないか。
>>129-130 オブジェクトは秒(もしくはミリ秒)で管理して、取り出すときだけDateにする。
// 現在から100日
ArrayList al = new ArrayList();
Date d = new Date();
long t = d.getTime();
for (int i = 0; i < 100; i++, t += 60 * 60 * 24L)
al.add(new Date(t));
// 2つのCalendarインスタンス c1, c2 に開始、終了日時がセットされている場合。
ArrayList al = new ArrayList();
long t1 = c1.getTimeInMillis();
long t2 = c2.getTimeInMillis();
for (long t = t1; t <= t2; t += 60 * 60 * 24L)
al.add(new Date(t));
しまった! 閏秒を忘れていた!
あ、それ以前に
>>133は大きな間違いをしているな。
見る人が見れば分かるから放置することにする。
初心者は自分で考えな。
"Fri Feb 17 21:35:35 JST 2006"の文字情報から
Dateインスタンスを取得したいのですが
どうすればよいでしょうか?
>>136 SimpleDateFormat でも使えば。
>>137 SimpleDateFormat.getDateInstance().parse("2005/10/10 10:10:10")でエラーになってしまいました。
何がだめなのでしょうか?
>>138 なんでgetDateInstanceすんだよ・・・
>>139 すみません。よくわからずに使ってしまいました。
基本的な使い方がわかりません。
>>140 でけた。
new SimpleDateFormat("yyyy-MM-dd").parse("2006-01-01")
HashMapのキー検索はhashcodeを使用しますが、
hashcodeの値が同じでも、クラスの型が違う場合は、値を取得できないのでしょうか。
実際やってみましたが取れませんでした。
コード
Map map = new HashMap();
map.put("a", "aaa");
System.out.println(map.get(new Integer(97)));
System.out.println("a".hashCode());
System.out.println(new Integer(97).hashCode());
結果
null
97
97
取れたら困るだろ。
>>143 ハッシュ値は必ず重複することが分かっているので
ハッシュ値だけでデータを特定するなどということは
普通はしない。
>>145 ありがとうございます。
ということは、ハッシュコードとクラスの型で判断しているということでしょうか?
>>146 同一ハッシュで複数あったら equals() で全部比較しているのでは?
ソース読んだことないけど。
148 :
デフォルトの名無しさん:2006/03/05(日) 09:51:52
ガベコレの一般的な話題(実装や手法)はどこでやったらいいかね?
ども
定数にプロパティの値を使用したい場合は、下記の通りしなければならないでしょうか。
private static Properties prop = null;
static{
try {
prop = new Properties();
prop.load(new FileInputStream("javahello.properties"));
}catch (Exception e) {
e.printStackTrace();
}
}
public static final String DATA = prop.getProperty("javahello.message");
JAVAを勉強しようと思ったのですが、質問があります。
JAVAってVisualVasicみたいに、ボタンを貼り付けて、それに動きを
与える様な事って出来るんですか?
書店の参考書とか見ても、DOSの画面での実行結果とかしか載ってないので...
どなたか教えてください。
>>152 できるけど、その機能は言語そのものの機能ではない。
GUIソフトを作り易くするための補助的なツールだ。
csvのファイル処理で、「\」でエスケープや、「"」「'」をうまく扱うようなクラスはあるでしょうか。
StringTokenizerはちょっと違うような気がして。
>>156 そういうクラスはないと思うなあ。あったかなあ?
まあ、簡単だから自作したら?
配列のサイズ変更は可能でしょうか?
サイズの違う配列を作ってデータを積み替えるしかない。
>>159 ありがとうございます。
ということは、ArrayList#addは、追加されるたびに内部で配列を生成しなおしているのでしょうか?
>>159 for文でまわして、手動でやるしかないのでしょうか?
Javadocドキュメントとかソースとか提供されてるんだからさ、自分で調べようよ。
まあ「おれに聞け!」ってスレだから、しかたないけど。毎回2chで聞くわけにもいかないでしょ?
と、じじいの説教。
>>160 追加されるたびではなく、内部配列の容量を超えたとき、さらに追加されることも考慮して、ある程度の
余裕を持って拡大した配列を生成している。
>>161 System#arraycopyとか、配列をListにしてjava.util.Collections#copyとか、いろいろできる。
synchronized (resource) {
resource.xxx();
}
の場合、他のメソッドで
resource = yyy;
とすると、書込みはロックされないのでしょうか。
synchronized (resource) {
resource = yyy;
}
にするべきでしょうか。
>>163 他のメソッドというか、他のスレッドからそういうことをすればロックは掛からない。
というかロックはインスタンスに対して掛かっている。変数名に対して掛かっている
のではない。
>>164 ということは、メソッドをsynchronizedにしても、ロックの掛かり方は同じでしょうか?
また、インスタンスにロックということは、同じクラスにsynchronizedメソッドが2つあった場合、
その2つのロックは独立性はなく影響しあうということでしょうか。
>>165 > ということは、メソッドをsynchronizedにしても、
> ロックの掛かり方は同じでしょうか?
意味がわからん。何を聞いているんだ?
> また、インスタンスにロックということは、同じ
> クラスにsynchronizedメソッドが2つあった場合、
> その2つのロックは独立性はなく影響しあうという
> ことでしょうか。
synchronized メソッドというのは synchronized (this) {...}
のブロックの中に全処理が書かれたメソッドと同じだ。this が
同じならロックが掛かる。違えば関係がなくなる。
>>167 CSVがうまく処理できるような正規表現おしえてくれないか?
そもそも、「CSVをうまく処理」するって具体的にどういうことに困っているのか分からない
170 :
デフォルトの名無しさん:2006/03/14(火) 01:10:29
クラス設計について質問です。
仕事でサーバソケットデーモン機能を引き継ぎました。ちょうど製造の8合目辺りです。
受信したソケットの内容によってそれに対応するタスクが立ち上がるという機能で
タスクは1タスク1クラスで10本程。(+部品いくつか)
コードをちょっと眺めてなんだか難しいな、と思ったんですが。
タスクを一つ追加する事になり、なぜ難しいと感じたのかが分かりました。
タスク同士が継承し合っていたんですね。最深で8階層。こんな感じです。
<<@>>
ATask1
|
ATask2
|_______________
| |
ATask3 BTask1
|
BTask2
|
BTask3
|
質問がないが、続きを書いてるのか?
まあ、1タスク1クラスというのが怪しいけどな。
173 :
デフォルトの名無しさん:2006/03/14(火) 01:31:50
タスク、というレイヤは
それぞれ同じレベル。
横並び(ピラミッド)型が自然では、
と思うんです。こんな感じに
Task
|
----------
| |
ATask BTask
| |
-------- ---------
| | | | | |
ATask1A…2A…3 B…1 B…2 B…3
174 :
170:2006/03/14(火) 01:33:25
(図がずれまくってスミマセン)
@はただ継承してるだけでなく、インスタンス変数が多く、激しくオーバーライドしています。
結果ぱっと見ではソースがまったく追えず、複雑極まりない構造になっています。
今回新たにBTask3に処理追加するために、@のATask1に記述追加しなければならなくなったんですが
100ステップ程のメソッドにたった1行追加するのにも、わざわざオーバーライドして同じような
メソッド100ステップを記述しなければいけなくなったり。今後更に機能拡張があると、五月雨式に
ソースが膨れ上がりそうで非常にデンジャラスな気配です。
日にちはあまりないのですがAの様に改めてリファクタリングすべきでしょうか
それとも構造は@のままで、他に何か対策を練るべきでしょうか。
175 :
デフォルトの名無しさん:2006/03/14(火) 07:53:42
Javaは10年後は消えてる
176 :
デフォルトの名無しさん:2006/03/14(火) 12:42:11
177 :
デフォルトの名無しさん:2006/03/15(水) 00:21:36
JAVAアプレットでプルダウンメニューを使いたいのですが
どうすれば表示できるのでしょうか。
179 :
デフォルトの名無しさん:2006/03/15(水) 00:53:24
class A {
void foo( ) {
class C { // (1)
void bar( ) { }
};
class D {
class C{} // (2)
void zot( ){
new C( ).bar( ); // ERROR
}
}
}
}
--
//ERROR とついてるところで(2)のCではなく(1)のCを使いたいのですが、
どう書けばいいんでしょう?
>>179 その前に…fooメソッド内にクラス定義はできないんじゃないか?
>>180 (´・ω・`)これこれ寝言を言うたらあかんがな
182 :
デフォルトの名無しさん:2006/03/15(水) 15:32:03
メソッドローカルなインナークラスは外から作成出来ないんじゃ?
JPGやPNG画像の縦横幅を求めるのってどうやるの?
getWidth/getHeight
185 :
デフォルトの名無しさん:2006/03/15(水) 22:40:38
jarの質問‥ netbeans 4.1
ダブルクリックでjarが起動しません。
jarファイルの中にフォルダが三つ、
フォルダ "AAA" には aaa.class (mainがあるクラス)
フォルダ "BBB" には bbb.class
フォルダ "META-INF" には MANIFEST.MF
MANIFEST.MF にはmainをどう記述したらよいでしょうか?
へんてこな質問ですみません( T∀T)
え、Imageだろ。
>>185 NetBeansのスレできけばよかろうに。
manifest.mfには、mainは勝手に設定されるから記述するなと書かれてるはず。
うろおぼえだけど、プロジェクトのプロパティの「実行」のところを見れば解決するかも。
190 :
デフォルトの名無しさん:2006/03/15(水) 22:59:53
NetBeans に行ってみます。
192 :
デフォルトの名無しさん:2006/03/16(木) 01:46:41
>>189 NetBeans プロジェクトのプロパティ-(実行)を開いたら
主クラスの項目がありました。閉じて、構築で、
jar動きました。
本当に、ご親切にありがとうございます。
わあい\(^▽^\)(/^▽^)/わあいっ
193 :
デフォルトの名無しさん:2006/03/16(木) 13:33:24
ネットワークプログラミングについての質問です。
Javaでプログラミングレベルでパケットを適当に指定した割合でロスさせるような
プログラムは可能でしょうか?
プロクシのテスト用に使いたいのですが。
>>193 何の串? http?
もしそうなら tcp だからいくらパケットロスさせてもあまり意味ないのでは?
回答ありがとうございます。
パケットをロスさせることによって、
通信速度を調節させるとか、そういう話です。
CSVのsplit処理で、split("a,b,c," ",") すると、4つ目の空文字が取得できません。
また、split(",,,",",")すると、データが一切取れません。
",,"も空文字、またはnullとして取得したいのですが、方法はあるでしょうか?
>>196 引数を2つ取る split() の方を使え。
負の値を指定するとよい。
>>195 でもパケットロスってリピータハブに2台のマシンを繋げないと中々実現できないと思うよ。
今ではスイッチングハブが当り前になっちゃったから、まずはハブを探す所からやらないと
駄目だな。
199 :
デフォルトの名無しさん:2006/03/17(金) 22:37:35
Vectorを拡張して使ってます、
内部のadd_abc関数で警告が出てしまいます、どうしましょう。
「警告: [unchecked] raw 型 java.util.Vector のメンバとしての
add(E) への無検査呼び出しです。」
public class abcVector extends Vector {
…(省略)
public void add_abc( ABC abc_dat ){
add( abc_dat );
}
…(省略)
}
200 :
デフォルトの名無しさん:2006/03/17(金) 23:35:12
>>198
回答ありがとう。
プログラミングのコードレベルでロスさせるのは不可能でしょうか?
Java以外でもいいのですが、、ってスレ違いでスマソ。
201 :
デフォルトの名無しさん:2006/03/18(土) 02:02:30
JAVAがインタープリターで動くのはどの部分?
豆腐屋の親父にたのまれて、ロット別の資材管理を
JAVAで作ろうかなとかんがえてるんよ。
>>201 rhinoでJavaScriptを動かすときとか。
203 :
デフォルトの名無しさん:2006/03/18(土) 02:25:36
>>202 早速ありがとうよ
ま、インタープリターでも10年前のBASICの速度で十分なんだが
こんな屁みたい、システムでも業者に頼むと100万以上かかるらしい
表計算では大変だし、操作性の面からプログラムを作った方が早い。
甘く見ないほうがいいよ。
205 :
デフォルトの名無しさん:2006/03/18(土) 02:40:58
>>204 甘くは見ないけど、JAVAを勉強しながらやる事になるけど
昔汎用機でアセンブラとCOBOLの経験あるから
少しは覚えているでしょう。
業務系やったことあるなら、ま、いいのかな。
100万っていったら1ヶ月かからない程度だしね。
最後のツメでの細かい注文に、おやじのことを嫌いにならんようにな。
VBあたり使ったほうがいいんじゃないか?
もっと身近にプログラミングできるやつおらんのか?
>>211 どこからどう見てもインタプリタだよ。入門書から勉強し直せ。
213 :
http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 18:44:02
TextSS の64bit化おながいします
もしくは64bitにネイティブ対応した置換ソフトないですか?
214 :
デフォルトの名無しさん:2006/03/25(土) 05:12:21
List<List<String>>
これなんだろ?
う〜ん、特に悩むほどのものじゃないと思うけど。
StringのListのListだろ。
216 :
デフォルトの名無しさん:2006/03/25(土) 12:05:24
「プログラミング作法」のJava版みたいな本ないですか?
EffectiveJavaとかJavaの落とし穴とかかな?
あと、Java Pazzlerとか
「プログラミング殺法」のJava版みたいな本ないですか?
220 :
メモ蔵:2006/03/25(土) 19:17:28
javaで作成したアプリケーションのメモリ使用量を実行するまえに、机上である程度
試算することは可能なのでしょうか?
なにか計算式みたいなものあるのかな?
どなたかjava3dつかってますか?
>>220 かなり単純なアプリで、一回使ったら落とすようなもの以外は無理
223 :
デフォルトの名無しさん:2006/03/25(土) 23:11:59
今日から勉強を始めたのですが
import javax.servlet.*;
import javax.servlet.http.*;
ここらへんでエラーが出ちゃいます
助けてください
225 :
223:2006/03/25(土) 23:50:27
了解
dクス
226 :
デフォルトの名無しさん:2006/03/26(日) 07:07:12
去年はDIとかAOPとか色々出たけど
今年って何か面白い技術ネタ何が流行りそうなの?
JavaScriptかなぁ。
JavaEEは、DI/AOP/ORMが標準になりましたよってだけだし。
JSFも標準になるね。
今年は、これらの技術の成熟期・普及期かな。
現場でようやく使われ始めそう。
>>227 Ruby on Rails.
Ajax
Javaの世界ではNetBeansが本格的に流行る。
そしてSwing GUIの復活。Java Web Startと連携して復活と予測。
ついでにJava Studio Creator2も普及。
あれはMacromedia Dreamweaver並みに高機能。
それからアノテーション。
JUnit4が登場。
TextAreaの任意の一行のみをString型に格納したい場合どうすればいいですか?
>>232 さあなあ。とりあえず split で行単位に分割してみたらどうだ?
オートインデント みたいな機能を実装するにはどうやればいいんでしょう?
>>234 Enter 押されて次の行の先頭にカーソルがある時に上の行の先頭の空白をコピーするか、
またはタブに置き換えて挿入する。
ということはTextAreaもしくはJTextAreaにKeyListenerくっつけて監視するだけでOKってことですか?
あとは気の利いた処理かくだけだな。
ありがとう
Cのsystem()関数みたいのないですか?
>>239 まず、 java.lang.Runtime のドキュメントを読め。
お願いします。教えてください。
今weblogicを使用してWEBアプリを作成していますが、
再デプロイしなくても、クラスファイルを更新して上書きすれば
クラスの再ロードが掛かるといわれて、上書きしたのですが更新されませんでした。
再デプロイすると更新されるので、アップロード方法が間違っていることはなさそうです。
そこで聞きたいのですが、クラスの再ロードは、javaエンジンの作業なのでしょうか。
それともクラスローダ?というものでしょうか。
クラスの再ロードをWEBアプリ側から明示的に行うことはできるのでしょうか。
そもそも、クラスを更新しただけではだめなのでしょうか?
>>242 weblogicは開発モードとプロダクションモードがあって、前者ではクラスファイルが更新されれば
再ロードしてくれるが、後者はしてくれなかったはず。
起動スクリプトをチェックしてみてくださいな
>>240 CLSとか使えないですが
もしかしてCのsystem()より能力低い?
>>243 ありがとうございます。
ちなみにプロダクションモードだった場合に、自力で再ロードさせることなんてできるのでしょうか?
>>245 サーバ再起動になるかと。
プロダクションモードって実稼動環境ということで、そういう変更は想定していないはず。
(むしろ積極的に排除している)
>>244 は? 君はどういう環境で何をしようとしているの?
>>243 JSPとサーブレットはプロダクションモードと開発モードに関係なく
別の設定(なんとか更新間隔とか)でリロードするよ。
その他(WEB-INF/lib,WEB-INF/class)などはリロードしなかったかも。
そっちリロードさせたいなら再デプロイするのが確実かな。
>>244 Windowsなら、command.exe経由で呼び出さなけりゃだめっつうだけじゃねぇの?
javaからunixのshellを実行したいのですが、
実行する方法はあるでしょうか?
あるよ。
>>251 ありがとうございます。見つけました。
Runtime.getRuntime().exec("xxx");
webアプリで、コマンドを起動したく、servletの中で実行しようと考えているのですが、
何か注意点とかありますでしょうか?
>>253 まさかフォームから受けた文字列を実行するんじゃないよね。実行コマンドが固定か数パターンとして。
・毎回外部コマンドを実行することによるパフォーマンスの低下
・スレッド間の衝突
・DoS
くらいがぱっと思いつくところ。もっとあるだろうけど、コマンドにもよるから。
JDK1.4で、システム環境変数を全て取得することはできるでしょうか。
System#getEnvだと、あらかじめ取得したい名前を知っておかないといけないらしいので。
>>254 すいません。なぞの現象に悩まされています。
下記のコードを実行したところ、execで実行したjavaのバッチプロセスが例外をmainまでスローして終了したときに、
呼び出し側のbr.readLine()でブロックされてしまい、処理が戻ってきません。
何か対処が抜けているでしょうか?
process = Runtime.getRuntime().exec(xxx);
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
buffer = new StringBuffer();
String line;
boolean ignoreOutput = command.isIgnoreOutput();
while ((line = br.readLine()) != null) {
System.out.println(line);
}
>>256 processはバグってるから使っちゃだめ。
標準出力読み込み中に、エラーが発生すると、エラー出力を取らないといけないので。
でもunixじゃないんで、javaでは無理。javaでバッチはあきらめるべし。
>>257 unixで言うところの、selectシステムコールみたいなのはないんですかね。
複数のストリームから一発でデータを取得することは・・・
>>248 WEB-INF/lib,WEB-INF/class以外で、weblogicが監視してくれる場所は、
xxx.ear/xxx.jar/以下でしょうか
260 :
248:2006/04/25(火) 14:44:32
>>259 earとかejbの話?
earに含まれるwebアプリケーションは上に書いた通りだけど
他はどうだろう? ごめん、マニュアル見るか試してください。
正規表現で、行をまたいでmatchさせたく、下記を実行しましたが、trueになりませんでした。
System.out.println( Pattern.compile(".*b.*f.*", Pattern.MULTILINE).matcher("abcd\r\nefgh").matches() );
上記をマッチさせる方法はあるでしょうか。
説明が下手で申し訳ございません。
>>261 よくわからないけど、\r\n じゃなくて \n だけだとどうなる?
>>261 分かった。それは Pattern.MULTILINE じゃなくて Pattern.DOTALL だ。
MULTILINE の方は ^ と $ が何にマッチするかの指定だが、 DOTALL は
. が何にマッチするかの指定だ。 . を全てにマッチさせるのが DOTALL。
>>263 ありがとうございます。
できました。
ちなみにいろいろ調べてみたのですが、Perl5Util#match() 見たいな、perlチックなクラスもありました。
結構使い勝手がよかったです。ただ、Pattern.DOTALLと同等の機能はないらしいのですが。
>>243 うまく更新されたり、されなかったり、どうも動きが一定にならないです。
1つ確認したいのですが、xxx.earはアーカイブではなく、展開してディレクトリ構造になっています。
そのxxx.ear/xxx.jar/以下にクラスをコピーしました。
this.getClass().getClassLoader().getResource("クラスパス").getPath() でも、jar以下のクラスファイルを見ています。
>>265 JSPやサーブレットは設定により動的にリロードしますよとマニュアルに書いてある。
展開ディレクトリ形式でもwarでも関係ない。
EJBの場合は知らん。
マニュアル参照してそれでわからなければ
サポートに聞いてみればいいと思います。
そこで何日も悩むのってもったいないと思う。
Javaでコンソールプログラムで作成しているのですが、
ちょっとした疑問がわきました、
たとえばshellからJVMにシグナルがとんだ場合に
プログラムはそれを検知/対応できるんでしょうか?
268 :
267:2006/04/27(木) 20:02:50
たぶん自己解決しました。
Runtime#addShutdownHook(Thread hook)
あってるよね?
SIGINTならそれでいいと思うけど全部が対応できるわけではもちろんないよ。
ちなみにJVMがハンドルするシグナルの表がマニュアルにあったと思う。
リフレクションを使用するときに、セキュリティーマネージャという言葉をよく見ますが、
セキュリティーマネージャとは何でしょうか。
今までの案件で、セキュリティーマネージャを設定してあることはなかったのですが、
セキュリティーマネージャの存在を意識した(制限など)コーディングをしたほうがよいのでしょうか?
>>270 これに答えられるほどjavaに精通してるやつはいないのかえ!?
単なる過疎スレだろ。
セキュリティマネージャは、使えるクラスを制限するものだが。
アプレットでも作らん限りは不要じゃねぇの?
273 :
わからーん:2006/05/19(金) 20:22:06
jigみたいなものを研究しているのですが、web自体のデータをキャプチャしてその上にリンク座標を乗っけて表示したいと考えているのですが、どうもリンク座標の抽出の仕方の案が浮かびません。。。
サンプルプログラムみたいなものがあったりすれば幸いなのですが案を出してもらえないでしょうか?
>>270 セキュリティマネージャはサンドボックスがらみでなかったっけ?
J2EE 5が正式リリースしたようなんだが、
EJB3.0ってホントに実務で有効?
セキュリティマネージャは、リソースへのアクセスを制限するための仕組みです。
サンドボックスとかキーワードは関係しますが、
別にアプレットに限った話でもない。
起動するときに、その起動形態によって与えられるアプリに与えられる権限が変わるということ。
例として、リモートにあるコードを実行する時は、基本的にローカルマシン上にある
リソースへのアクセス(ファイル読んだり、書いたり)とかコードがある
マシン以外へのアクセスを禁じたりしている。
これを回避するためには、ローカルのセキュリティポリシーを変えたりする必要がある。
で、リフレクションだが、これもクラスの中をこじ開けてアクセスするような
機能があるため、それを実行するのに権限を要求される
で、恐らく
>>270 は、まぁセキュリティマネージャを意識したプログラムとかコーディングではなく
実行するときに適切にポリシーが設定されるかどうかを気にするべき。
実行環境によって、ポリシー変更が可能か、どうかとか、ポリシーの配布方法
jarへのサインなど、考えることは色ある。
何より、こんな場所で語り尽くせる話じゃないので適切な解説を見つけて熟読すること。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/security/spec/security-specTOC.fm.html 日本語でもあるから。
278 :
JAVA:2006/05/20(土) 21:13:09
こんにちは。質問なのですが、STRUTSでメッセージを日本語で出したい場合には、
どのようにしたらいいのでしょうか?本をよんでみたりしましたが、
よくわかりません。ちなみにエクリプスの中で開発中です。
何かのコードに変換するようなのですが、、よろしくご教授お願いします。
279 :
デフォルトの名無しさん:2006/05/20(土) 22:39:00
オープンソースにすべきだって言ってるアホがいるwwwwwwww
おめでたい連中だwwwwwww
↑誤爆? このスレで「オープンソース」検索したら、60前後まで飛んでしまった
いや、Java仕様をオープンソース化するべきかどうかの議論が
業界内にあるから、そのことを指しているんだろう。
なぜアホと思うのか、おめでたいと思うのか、俺には全く理解不能だが。
283 :
デフォルトの名無しさん:2006/05/22(月) 15:20:25
誰か教えてぇ〜〜マザーボードを変更して、XP等インストールして、動いていたんだけど、JAVAの最新のバージョン6をインストールしたら調子悪くなっちゃった、JAVAを削除したんだけど、やっぱ、駄目だった・・・どうしたらいいの??(; ̄ー ̄川 アセアセ
再インストールすりゃいいだろ。
で、正式リリースされている最新のバージョン5をインストール。
ベータ入れて文句いうな。
285 :
デフォルトの名無しさん:2006/05/22(月) 16:55:42
質問です。
ブラウザにHello worldと表示させる
簡単なプログラムをJAVAで設計しました。
で、実際にhtmlを作り読み込んでみたわけですが
灰色の画面だけで何も表示されません。
描画に時間がかかるのかと思い、しばらく待ってみましたが
やはりそういった雰囲気はなさそうです。
どうすればいいのでしょうか?
286 :
デフォルトの名無しさん:2006/05/22(月) 17:18:23
<html>
<body>
<h3>hellow warld</h3>
</body>
</html>
これじゃぁいかんの?
287 :
デフォルトの名無しさん:2006/05/22(月) 17:19:42
Mac用Javaでフォルダにアクセス拒否するソース
教えてください
>>285 ちょっとそれどこかの無料ホームページ借りて公開しろ。
で、そのURLをここに書け。
289 :
デフォルトの名無しさん:2006/05/22(月) 22:45:42
Javaの正規表現なんですがPerlと違うんでしょうか?
Pattern.matches("ab", "abcde")
がfalseになるんですが・・・
Pattern.matches("ab.*", "abcde")
だとtrueになります。
もしかして部分一致じゃなく完全一致なんでしょうか?
プリファレンスとプロパティ、どっちつかうほうがいいの?
プリファレンスの方が新しいけどレジスタいじくるとか?
293 :
JAVA:2006/05/23(火) 19:36:16
すいません、質問なのですが、STRUTSのFORM画面で日本語が入力された場合、
ACTIONでその値がうまくとれませんん、、文字化けしてします、、
どうしたらいいでしょうか。。よろしくご教授ください。
294 :
デフォルトの名無しさん:2006/05/23(火) 21:58:50
>>291 ありがとうございます。
なるほど。Perl型はfindで全体一致がmatchesみたいですね。
295 :
デフォルトの名無しさん:2006/05/24(水) 01:16:46
>>236 とりあえずエンコーディングを指定する箇所を洗い出して
全部同じになっているか確認してみれば?
jspのcharsetとserver.xmlのconnectorとか
super.super.test
継承っていいね。
System.getProperties("java.io.tmpdir")って取得したディレクトリって、アプリで勝手に使用していいのでしょうか?
ユーザーに聞け
いいかも知れないけどサンドボックスの中からだと使えないかも知れないし、
OSの制限によってアクセス不能かも知れない。
>>297 これは、unixでいえば/tmp何ですかね?
jarファイルのURL表示はフルパスで書かないといけないのでしょうか。
できれば、環境依存しない形式で書きたいと思っています
"jar:file:C:/sample/lib/ibatis-sqlmap-2.jar!/com/ibatis/sqlmap/engine/builder/xml/sql-map-config-2.dtd"
>>300 それか、もしくはLinuxなら/var/tmpかもね。もちろん環境変数優先。
WindowsはTEMPかTMP環境変数でしょう。
…と、確認せずにレスする。しようと思えばすぐにもできるんだが。
java.lang.reflect.Proxyって、インターフェースにしか使えないんだ。
デザインパターンのProxyでいいような気がするけど・・・
>>303 排他はかけているけど重複チェックはしてなかったよ。
ファイル有り無しに関係なく、new File()していた。
URLクラスはファイナルなのか・・・。
手出せねーや。
openStreamをオーバーライドして独自のクラス作ろうとしたんだけど。
コンストラクタでstreamを引数に取るやつは簡単にデータの内容変更できるけど、
URLではきれいにいかないなぁ。
ダミーFileをnewしてURL作成がいいところか。
つくったふぁいるのdelete処理のタイミングが難しい・・・
javaではxmlやプロパティ、普通のファイルなどに専用のクラスでアクセスしますが、
最終的には、ストリームもしくはリーダークラスを使用しているのでしょうか?
最終的には、って普通にReader渡すだろうがよ。
>>296 superのsuperなんてできるのか?
byte[]をchar[]に、char[]をbyte[]に変更するにはどうすればよろしいでしょうか?
>>310 byte[] bs;
char[] cs = new char[bs.length];
for(int i = 0; i < bs.length; ++i) cs[i] = bs[i];
311はワザとかいてるぽいけど、byte(1octet)とchar(文字)は単純に置換できない。
どういう意図かわからんけど中間にStringをはさめば解決しない?
>>310 byte[] bs;
char[] cs = new char[bs.length];
for(int i = 0; i < cs.length; ++i) cs[i] = (char)bs[i];
Class#newInstance()を実行するときに、デフォルトコンストラクターがないと
InstantiationExceptionがスローされるのでしょうか?
どこかに、コンパイラによってデフォルトコンストラクタは勝手に作られるとあったのですが、
勝手に作られるのに、ないそと怒られるのはなぜでしょうか?
標準出力からjavaのソースを読込み、
プログラムでコンパイルして、それを実行することなんてできるのでしょうか?
サーブレットコンテナがjspをそうしているように。
>>314 ソースコード中にコンストラクタが一切無い場合に限り、コンパイラによってデフォルトコンストラクタが暗黙的に生成される。
>>315 できます。
サーブレットコンテナがjspをそうしているように。
>>316 ありがとうございます。
原因がわかりました。
>>317 ありがとうございます。
この機能を実装しろといわれていますが、
コンパイルをし、ロードし、実行することは、かなりの規模になるでしょうか?
>>319 給料上げてくれるならやると言え。
規模は大きくないけど、そんな質問してるレベルで、仕事として組めるとは思えない。
趣味なら勉強になるからやればいいんだけど。
>>320 本当に無理な要求で・・・
仕様が頻繁に変わり、反映した後にサーバーの再デプロイをものすごく拒否られて、
その代わりに、自分で更新機能を作れなどとで、話が舞い込んできました。
HP-Unixでweblogicを使用していますが、クラス再ロード機能をオンにしてクラスを更新しても無反応なので。。。
WebLogicなら業者に相談すれ。たぶん解決する。
クラスローダーから、現状のクラスパスを取得することは可能でしょうか?
通常のJDKのjreのjt.jarは、行番号情報なしでコンパイルされているのでしょうか。
リモート接続して、JDK中のクラスにデバックポイントを張ったらエラーになりました。
>>326 デフォルトのweblogicは C:\bea\JROCKI~1\jre\lib\rt.jar を使用していて、
リモートデバッグはできませんでした。
eclipseで使用している C:\j2sdk1.4.2_08\jre\lib\rt.jar はデバッグできたので、
C:\j2sdk1.4.2_08\jre\lib\rt.jar を C:\bea\JROCKI~1\jre\lib\rt.jar に上書きして再度デバックしましたが
行番号情報がないとのことで、同じくデバッグできませんでした。
原因としてほかに何が考えられるでしょうか?
>>327 だから、コンパイル時のオプションだって言ってるだろ。
そのものズバリの答えをもらっているにも関わらず
そう考えない思考方法をどうにかしない限り、
おまえさんには解決はムリだ。
>>328 いやだから
> eclipseで使用している C:\j2sdk1.4.2_08\jre\lib\rt.jar はデバッグできたので、
> C:\j2sdk1.4.2_08\jre\lib\rt.jar を C:\bea\JROCKI~1\jre\lib\rt.jar に上書きして再度デバックしましたが
だから、C:\j2sdk1.4.2_08\jre\lib\rt.jar は行番号情報ありってことでしょ。じゃなきゃeclipse上でデバッグができないはず。
そいつを上書きコピーしたから、できるはずでしょ。たぶん。
>>329 >だから、C:\j2sdk1.4.2_08\jre\lib\rt.jar は行番号情報ありってことでしょ。
この前提が間違い。Eclipseがコンパイルするときにデバッグ情報を付加するオプションつけてコンパイルしてんだよ。
わかんない奴だな。
>>331 こたえになってない。
うまくいかない要素を書いたつもりはないし、勘違いしているんだったら指摘してよ。
なぜeclipseはうまくいくの?実行時のランタイム指定しているんだよ。
見ているものは間違いなく同じrt.jarじゃん。
>C:\j2sdk1.4.2_08\jre\lib\rt.jar は行番号情報ありってことでしょ。
これが勘違い&思いこみ。アドヴァイスもらってるのにここから思考が動かない。頭悪すぎ。
コンパイル時のオプションだって言ってるのに。
>>333 eclipseはC:\j2sdk1.4.2_08\jre\lib\rt.jarを見て、行番号があるといっている。とさっき書いたが
>>334 本当に頭悪いな。
どの rt.jar を使っても
コンパイル時のオプション次第でデバッグ情報ありにもなしにもなるんだよ。
デバッグ情報の有無はランタイムじゃなくて、コンパイル時のオプションで変わるんだよ。
何度言わせるんだ。
もう帰るから後は自分でなんとかしてくれ
>>335 352で、俺はそのランタイムのデバッグをすると書いたが。
> リモート接続して、JDK中のクラスにデバックポイントを張ったらエラーになりました。
独自のクラスでなく、そのweblogicがファイルを読込むFileクラスで処理を止めたいの。
だから、対象はrt.jarのランタイムが行番号つきかどうかが問題。
JRockitはいろいろアグレッシブなことをやってるのかもしれない。
サポートに問い合わせてみれ。
デバッグモードで起動しているかどうかの違いじゃないの?
ランタイムのデバッグって・・・・
無駄なこと・無意味なことが好きな方ですね。
JVMのデバッグモードって知ってますか?
答えてくれる人に対してこういう態度を取っている限り
適切な回答は得られないということは覚えておいた方がいいですよ。
社会性を身につけましょう。
同意。人にアドヴァイスを乞う態度じゃない。
議論をふっかけたいだけなんじゃないの?
俺には
>>326 が勘違いしたまま絡んだように見えるが。
JVM スレで聞いてみれば?
344 :
338:2006/06/10(土) 01:34:32
むしろEclipseのrt.jarが特別かも。
Sunのrt.jarでも試してみれば?
普通はデバッグオプション付きでコンパイルしてないのかな?
SwingのJComboBoxを使ってオートコンプリート機能を追加しようと思っています。
具体的には、コンボボックスに対して入力もできるし一度入力したテキストは
オートコンプリート機能を働かせたい・・というものです。
JComboBoxにはsetKeySelectionManagerというメソッドがあり、JComboBox.KeySelectionManagerを
実装したクラスを渡すと、入力に応じて行を自動で選択する実装ができるようですが、
この機能では、setEditable(false) の時にしか働かないようです。
なので、この場合新たな入力が行えなくなってしまいます。
入力可能で且つオートコンプリート機能を追加する場合はどのようにすればよいでしょうか?
>>340 デバッグという書き方が紛らわしかったですが、
フレームワークがあるファイルをアクセスしていて、ソースを追うより実行してすぐ知りたいと思い
JVMのFileクラスにブレイクポイントを設定して、目的のファイル名だったら止まる条件を追加しようと考えてました。
確かにしびれを切らして口調が荒くなりましたが、
誤解した人がけなすこと言って批判の対象外になっているのも悲しいです。
Runtime#traceMethodCalls(true)をセットするとメソッド呼び出しのログが取れるようですが、
OSがXPの場合、ログファイルはどこにできるのでしょうか。
標準入力のバッファリングをオフにすることはできますか?
1行単位でなく、1文字単位で読み込みする必要が出てきたので。
標準入力にバッファリングあるか?
どんなクラスをnewするとき、必ずObjectクラスのコンストラクタって呼ばれるの?
って言うか、呼ばれているんだけど・・・
>>350 スーパークラスのコンストラクタは当然呼ばれる。
>>351 public xxx() {
super();
}
と
public xxx() {
}
でも、親のデフォルトコンストラクターは呼ばれるってことですか。
>>352 呼ばれる
ってか、コンストラクタ勉強しなおせ。
親のコンストラクタが呼ばれないと、親のprivateフィールドが初期化できなくなる(可能性がある)。
すると親クラスではprotected以上が必須になり、private宣言すると、実質final classになっちゃう。
だから、明示・暗黙のいずれであっても、親のコンストラクタのどれかは呼ばれないといけないのです。
>>354 すごく納得できました。
ありがとうございます。
>>347 その機能は過去の遺物らしい。
どっかの英語圏サイトに書いてあったような・・・
簡単なTCPIPプロキシを作ったのですが、1文字ごとに「@」がつきます。おかしい箇所を教えてください!
InputStream localIn;
OutputStream localOut;
InputStream serverIn;
OutputStream serverOut;
Socket serverSocket = new ServerSocket(1000).accept();
serverIn = serverSocket.getInputStream();
serverOut = serverSocket.getOutputStream();
Socket localSocket = new Socket("xxx.xxx.xxx.xxx", 23);
localIn = localSocket.getInputStream();
localOut = localSocket.getOutputStream();
byte[] data;
while (true) {
try {
if (serverIn.available() > 0) {
data = new byte[serverIn.available() + 1];
serverIn.read(data, 0, serverIn.available());
localOut.write(data);
} else if (localIn.available() > 0) {
data = new byte[localIn.available() + 1];
localIn.read(data, 0, localIn.available());
serverOut.write(data);
} else {
Thread.sleep(10);
}
} catch (IOException e) {
e.printStackTrace();
break;
}
}
>>357 自己解決
data = new byte[serverIn.available() + 1]
↓
data = new byte[serverIn.available()]
Javamailの質問はここでいいのでしょうか・・?
受信したメールの本文にテキストを付加した上で再送信したいのですが、
その際に元のメールの構造を保ったままで再送信するためにはどうすればいいか分かる方いますか?
サーバサイドで独自の設定ファイル(ファイル形式は*.propertiesや*.xmlなど)を
オートリロード対応するならば、みなさんならどんな実装にしますか?
ぱっと思いついたのは
・設定ファイルが更新されていないかスレッドで監視
・ロードした設定情報(キャッシュ)に有効期限を決めておき(10秒とか)、
キャッシュへアクセスするたびに期限切れか判定(期限切れならロードしなおす)
・Commons Configurationを使う
出来るのかまだ調べていませんが、「設定ファイルなら何でもこい」と
言っているので出来るのかな〜と勝手に思ってます
という感じです。
個人的な現状の状況は、環境はj2sdk1.4.x+J2EE1.4で、テストのために使おうと
考えています。
(なのでそれほどパフォーマンスは考慮しようとは考えていません)
他に何かよい方法があればアドバイスください。
361 :
デフォルトの名無しさん:2006/07/04(火) 21:12:56
時給1000円でJava教えてくださるかたを募集します
場所 所沢(池袋・高田馬場から直通)
i−want−to−study−java@hotmail.co.jp
(アドレスは全角で書いてあるので半角に直してください)
よろしくおねがいします
コンビニのバイトより安いですが、よろしくお願いします。
363 :
361:2006/07/17(月) 21:21:51
教える対象は超初心者です。
専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
jdk-1_5_0_07-nb-5_0-linux-ml.bin
ってのを落としたんだけど、これどうするのん?
すまん、大きな勘違いをしていた
JSPなどで使用される、データだけを保持するBeanクラスに、
setter、getterが存在するのはなぜでしょうか?
セキュリティの問題だとかいろいろあると思いますが、実際実務で
有効に利用できたことってあるんでしょうか?
仕様変更のたびに、変数名とセットで、メソッド名も変更となるため
かなり面倒な感じがするのですが。
どうなんでしょうか。
>>368 本来はカプセル化のためだし、
getterやsetterにいろいろ仕込む手法もあったのだけど、
最近の流れはそうではないよね。
でも当初の思想がそうだったために、各種開発ツールや
ライブラリやカスタムタグがgetter/setterありきで設計されている。
ってとこが現実かな。
変数名とメソッド名を合わせて変更は、IDEが対応しているでしょ。
データを保持するだけの単純なJavaBeanは手書きするもんじゃないよ。
>>369 ああ、なるほど〜もともとはそういう理由で作られていて、
現在はそういう利用がないってことなんですね。
久しぶりにしっかりとした意見が聞けてすっきりしました。
IDEが古くて対応していないプロジェクトなもので、
全部手書きでやっていて・・・。
ありがとうございました。
正直、DAOとか作って値だけのクラスと操作するクラスを
作ってるのって酷い無駄だと思う。
いっそのこと構造体にしてくれって感じ。
372 :
デフォルトの名無しさん:2006/08/31(木) 15:28:30
javaでFTPクライアントソフトを作成したんですが、
認証まではうまくいくんですがPASVモードでの
dataSocket = new Socket(serverIP.replace(',','.'),動的なPORT);
でタイムアウトが発生し接続できません。
windowsでは問題なく実行できます。
環境は
+−−−−−−+ +−−−−−−+
LINUX−−−−| | | |
| ルータ- |−−−−−| モデム |−−−−−インターネット
WIN−−−−−−| | | |
+−−−−−−+ +−−−−−−+
ちなみにlinuxのFTPコマンドではファイル転送も問題なくできます。
原因がさっぱりわかりません。
373 :
デフォルトの名無しさん:2006/09/05(火) 02:42:52
ついに1000体突破かよ
アイロボットみたいだな
株ロボもいつか夢を見るようになるのかなぁ
374 :
デフォルトの名無しさん:2006/09/11(月) 15:38:59
これでダブルクォーテーションも一緒に出力したい場合ってこれじゃ駄目なの?
/**
*
*こんちゃーす
*
*/
class koncha{
public static void main(String[] args){
//標準出力でこんにちは
System.out.println(\""こんにちは""\);
}
}
誰か教えてくれ
>>374 System.out.println("\"こんにちは\"");
376 :
デフォルトの名無しさん:2006/09/12(火) 20:00:19
Javaでオブジェクトを引数として渡す、あるいは返り値とする場合
、C++の参照渡しになるとのことですがC++でいうconst参照を渡す
にはどうやればいいのですか?
378 :
デフォルトの名無しさん:2006/09/25(月) 07:08:41
今更こんな質問周りに出来ないので質問
JAVAとJavaScriptは同じものなのでしょうか?
入門書などを見るとimport java.applet.*と記述すれば
JAVAでアプレットを使えるとありますが、これがJAVAスクリプトなのでしょうか?
あともし別物だったとしてJAVAと比べてJAVAスクリプトは勉強するの簡単でしょうか?
>>379 javaとjavascriptは全くの別物。 多少構文が似ている部分もある。 「多少」ね。
当時マーケティングの都合でjavaに似てるイメージを持たせたかったのでjavascriptという名前になっただけ。
勉強するなら、完全に無関係だと思ったほうがいい。
で、javascriptは、簡単な事しかやらないなら簡単。 凝ったことをやるとjavaより面倒。
好みの問題だが。
>>380 レス有難うございます。
御蔭でかなりスッキリしました。
javaプログラムをexeに変更することはできるでしょうか?
javaならツールを簡単に作れますが、友達に提供しようと思っても
javaをインストールしたくないということで動かせなくて困っています。
>>382 まずは、インストールしてもらおうよ
exeにしてもいい事ないし
どうせ、昔の情報で「Javaおせーしなー」とか言ってるだけでしょ?
入れないなら自分で作れよ、って言う、と。
どうしてもってんなら gcj で。
exewrapとか、JSmoothやlaunch4jはjava入れなきゃダメだから注意な。
有料でよければJETとかもある・・・がコレは俺使った事ない
質問です。
JFormattedTextFieldを使って、HH:mmの形で入力された時刻の差(日数などは考慮に入れない)を求める勤怠時間計算ソフトを作っています。
例えば、2つのJFormattedTextFieldに9:30と20:30の時刻入力があった場合に、3つ目のフィールドに、労働時間"11:00"を出力するというものです。
この場合、文字位置を判定してStringを取得、intに変換して計算するという方法以外に何か良い方法はないものでしょうか?
また、":"の入力を省けるようにMaskFormatter("##:##")としているのですが、SetText(null)とすると、次にフォーカスを得て失うまで":"が現れません。
時刻入力部分だけをnullとして、":"を残しておく方法は無いものでしょうか。
よろしくお願いします。
ターボリナックス8サーバーでJRE1.5を入れました。
で、javaアプリで日本語入力しようとし漢字変換し、漢字候補の画面でクローズボタンを実行すると、javaが吹っ飛びました。同じような現象を経験した方います?
388 :
java初心者:2006/09/30(土) 18:23:53
JAVAでアプリケーションを作成しています。
コマンドプロンプトでコマンドを入力するような機能をつけたいのですが、
何かいい方法はありませんでしょうか?
自分でも調べてみたのですが、
Runtime.getRuntime().exec()で実現しようとすると、
Eclipseに「処理されない例外の型」と注意されてしまいます。
何か設定があるのでしょうか?
System.in
>>388 最低限、例外処理ぐらいは勉強してからプログラム書け。
ここで聞くよりググったほうが回答が多い。 ググれカス。
throws Exception
|∀・)・・・・・・・・・・・・・・・・・・・・・・ とかね
|∀・)・・・・・・・・・・・・・・・・・・・・・・ つかまえたあとどうしよう
これは質問と言うよりも一つの感想だが、内部クラスのインスタンスを生成する時に、
先ず外部クラスのインスタンス名を生成してから、そのインスタンス名でもって
<インスタンス名>.new としないと内部クラスをインスタンスを生成できない事が分か
った。
これは、内部クラスを利用する上で重要な事だと思うけど、私の本に詳しく書いていな
いし、Internetで検索しても余り出てこない。
*印の単なる配列の宣言は、インスタンス名を参照しなくてもいいみたい。
http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000994.html public class H03Dijkstra {
class DijkEdge {int weight; int dest; };
class Vertex {
DijkEdge[] conne;
int nmCn;
};
void dijkstra(Vertex[] graph,int iNmNode,int source) {・・}
public static void main(String args[]) {
H03Dijkstra dij=new H03Dijkstra();
Vertex[] SW2006Sp = new Vertex[5];// H03Dijkstra.Vertex[]でも可←*
for(int i0=0;i0<5;i0++){SW2006Sp[i0]=dij.new Vertex(); }
SW2006Sp[0].nmCn=2;
SW2006Sp[0].conne = new DijkEdge[2];
for(int i0=0;i0<2;i0++){SW2006Sp[0].conne[i0]=dij.new DijkEdge(); }
SW2006Sp[0].conne[0].dest=1; // B
SW2006Sp[0].conne[0].weight=10;
SW2006Sp[0].conne[1].dest=2; // C
SW2006Sp[0].conne[1].weight=3;
・・略・・
dij.dijkstra(SW2006Sp,5,0);
}
}
>393 手持ちの本にJava言語仕様を加えることをお勧めする。
8.1.3 Inner Classes and Enclosing Instances
8.5 Member Type Declarations
15.9 Class Instance Creation Expressions
SWTの話題もありですかね?
org.eclipse.swt.browserで表示したwebの
formにsubmit(psot)したいのだが良い方法ない?
VBとかだとこんな感じ
ieobj.document.forms(0).Submit
ちなみに↓だと、エラーは出ないけど反応無し。
browser.execute("document.formname.Submit")
>>289 Jakarta OROを使えばPerl5互換正規表現を
Javaでも使うことができるぞ
397 :
395:2006/10/15(日) 18:11:22
誰も興味ないかも知れないですが事故解決したので
一応報告。
browser.executeでフォーカスをinputタグにあわせて
awt.robotでエンターキーを叩かせるという力技で何とかしました。
始めはorg.eclipse.swt.browser自体を改造していましたが
OLE操作がいまいち分からずあきらめました・・・。
398 :
デフォルトの名無しさん:2006/10/16(月) 10:30:06
現在アプレットで動作しているものをサーブレットで動くように変換せよ、
との命令を受けた者です。
かなりの初心者で、正直途方に暮れています。
母体(アプレット版)にあまり手を加えずに変換する事は可能なんでしょうか。
物によると思いますが、一般的な手法等について教えてください。
かなり不思議な命令だな
その命令を出した人間が、どこまでわかってるんだろうか。
ちゃんと知ってて言ってるんなら、元のアプレットをwebアプリにしたいんだろう。
この場合、アプレットのロジックとUIを切り離して、UIはJSPなりで表示。
UIはアプレットとhtmlじゃ出来ることが全く違うから、同じにするには物凄い工数がかかる。
ある程度割り切って実装する事も必要かと。
核心のロジックはそのまま使える。 元のアプレットがまともに書いてあったらだけど。
何も知らないオヤジがなんとなく言ってるだけなら、そんな簡単な話じゃないって事を厳しく教育しとけ。
理由も付けて。
windowsのクリップボードのデータって取得できますか?
>>401 できるよ
java.awt.datatransfer.Clipboard
について調べてみればおk
>>402 できました。
ありがとうございます。
クリップボードの監視とかはできるのでしょうか?
C-cしてクリップボードに値が入った場合に、したい処理があるのですが。
作業ディレクトリを移動するにはどうすればよいのでしょうか?
new File(フルパス)
>>406 できるわけねーじゃん。
javaにはカレントディレクトリの移動の概念がないよ。
>>404 カレントディレクトリの管理は自分でするしかない。
Fileオブジェクトに持たせておいて、新しくFileを作るときはそれをベースにしてconstruct
>>403 たぶんコピーしてオーナーにならないとだめかも。
毎回コピーしなおさないといけないのが難点。
410 :
デフォルトの名無しさん:2006/11/11(土) 16:41:32
String#getBytesでUnicodeからbyte[]に変換される際に
テーブルデータみたいのって自分で編集できる?
機種依存文字とかのマッピングを自分で追記したいんだけど。
自分でencoderを作るか、出てきたbyte[]を自力で解析
くらいしか思いつかない
どっかにpropertiesかxmlで定義されてるんじゃないの?
>>410 java.nio.charset.spi.CharsetProvider
jarファイルでライブラリ作って、META-INF/servicesに記述書いておけば
オリジナルのcharsetを作れるはず
414 :
デフォルトの名無しさん:2006/11/12(日) 16:36:17
質問です。
javaで3mpタグの読み込み&編集を行いたいのですが
どうすればいいのかまったく分かりません。
まだjavaを初めて間もない初心者ですが
何か参考になるものがあれば教えていただけないでしょうか?
415 :
mm3:2006/11/12(日) 17:53:05
はじめまして。ビルさんに質問です。1
J2SE1.5.0_09をダウンロードしました。
import java.uti.ArrayList;
class Sample{
public static void main(String[] args){
ArrayList list = new ArrayList;
list.add("moji");
System.out.println(get(0));
}
}
という、簡単なプログラムなのですが、
list.add("moji");が、「無検査呼び出し」というエラーで、
コンパイルが通りません。
J2SE1.5.0_08では、通ります。
1.5.0_09で通すには、どのようにすればよいのでしょうか??
416 :
デフォルトの名無しさん:2006/11/12(日) 20:15:25
板違いなきがするのですが、どうしても分からないので
ここで質問させてください。
XMLの勉強を始めたばかりの初心者なのですが
私が作成したXMLファイルのエラーをチェックするために
コマンドプロンプトから
java dom.Counter (XMLファイル)
という風にやっているのですが、次のようなエラーが出てしまいます。
[Fatal Error] :-1:-1: Premature end of file.
開始タグと閉じタグが一致してないのが原因なのかとソースを何回も
チェックしましたが、そのような記述ミスはありません。
他に原因として考えられること、またはこのエラーの指す意味が
お分かりでしたら教えていただけませんか?
よろしくお願いします。
417 :
岐山面:2006/11/12(日) 22:04:26
>>415 _09の環境がないが、このようにいけるかな。
import java.uti.ArrayList;
class Sample{
public static void main(String[] args){
ArrayList<String> list = new <String> ArrayList();
list.add("moji");
System.out.println(get(0));
}
}
418 :
デフォルトの名無しさん:2006/11/12(日) 23:32:37
今業務で使ってるフレームワークが糞すぎる!
なんかいいのないか?
Strutsも古いから次。
無難にJSF
それで不満があるならWicketかClick
420 :
デフォルトの名無しさん:2006/11/13(月) 23:37:00
リッチクライアントじゃない
ただのWebアプリからWin32APIにアクセスできますか?
(^_^;
JNI使えば可能・・・ってそういうレベルの質問ではなさそうだな。
真面目な質問ではなさそうなので、軽く釣られてやったぞ。
>>420 ActiveX使おうぜ!
と、おいしそうな餌だったので
policyの設定次第じゃないの?
やらんけど。
425 :
デフォルトの名無しさん:2006/11/16(木) 21:26:31
要素10のString配列と
10のString型フィールドをもつBean、
後者のほうが10+Bean自身でコストがかかるっていう考え方はおかしい?
>>425 コストというのはメモリ?
フィールドは名前が付いている分、配列の要素に比べてリッチだろうな
標準入力から文字を取得するとき、javaPG側からキーボード操作などをして
キーボードから「test」を入力した状態にすることは可能でしょうか?
ユーザーが入力する際、親切にデータを書き込んで、目的のものじゃなければ<BS>で文字を消してもらおうと考えているのですが。
java.awt.Robot
>>428 RobotってCUIでも使えたの?
俺もRobotかと思ったけどGUI用かと思ってて
試したらちゃんと動いたから大丈夫
けど、Linuxとでコンソール越しの実行とかされると無理そうよな。
>>428 ありがとうございます。
入力文字を受け取って、大文字に変換してそれを入力したように見せようと思い
for (int i=0; i<input.length(); i++) {
robot.keyPress( input.toCharArray()[i] );
}
とやったのですが、キーコードが不正でエラーになってしまいました。
何が問題なのでしょか。
何をやりたいのかわからん
Throwableの読み方は
スローアブル?
スローエイブル?
>>432 APIドキュメントを読まないか読めないやつだな。
keyPressの引数はキーコードであってUNICODE文字ではない。
キーコードはKeyEventの説明を参照汁。
大文字を打ちたいなら当然シフトキーも押す必要がある。
自分がキーボードを扱う時と同じことをRobotにやらせないといけない。
あと、標準入力への入力待ちをしていると、
WindowsのコマンドプロンプトではkeyPressだけでうまくいくみたいだが、
linuxではkeyReleaseしないと最後にkeyPressしたキーが押されっぱなしになって、
キーリピートしてしまう環境があった。押したキーは放したほうがいい。
436 :
デフォルトの名無しさん:2006/11/19(日) 13:39:57
>>426 ありがとうございます。
もうひとつお聞きしたいのですが、
DBから取り出したデータを
1行1Beanで全行をListに格納と
1列ごとにString配列、列数分配列を用意するのではどちらがメモリ、速度面で有利なのでしょうか。
>436 自分で測れボケ
439 :
436:2006/11/19(日) 23:09:24
すいません。荒れてるんで取り下げます。
メモリ使用量を測れるプラグインとか入れてためしてみます。
>>435 すいません。javadocに書いてました。
キーコードとユニコードの変換は自作するしかないでしょうか?
今入力補填機能を作成していまして、<tab>を押して補填済み文字列をキーボード入力しています。
場合によって、ユーザーが<Left>や<BS>で補填の一部を変えたいらしいので、キーボード入力しています。
標準出力じゃ<bs>で文字を消せないので。unixのshell見たいな物を作ろうとしています
初歩的な質問で申し訳ないですが、"あ"のunicodeをプログラム側で取得する方法を教えていただけないでしょうか。
"あ".getBytes("UTF-16LE")
もしくは
"あ".getBytes("UTF-16BE")
Arrays.asList()で取得できるListはArrayListではないのですね。
removeするとエラーになります。
>>443 asListが返すのはあくまでもListインタフェースを実装するクラスというだけ。
その実装の詳細に立ち入るプログラムは行儀があまりよくない。
もし、ArrayListが必要なら、asListで得られたインスタンスからさらにArrayListで再構築。
線形連立方程式を解くことができるクラスってありますか?
そしてどこにありますか?
教えてください。
実際にプログラムの一部として利用するとなると、
なかなか難しい。
>>445 数値計算用のライブラリはいくつもあるけど、いろいろ詰め込まれた大規模ライブラリなんで、
線形連立方程式を解くことだけに限定するなら、
ガウス法でもガウス・ジョルダン法でもその他の解法にしても
大したコーディングにはならないから自分で書いてもいいんではないかい?
そうかもしれないけど細かいエラー処理とか
コンピュータの数値独特のテクニックとかがあることを考えると
認められてるライブラリを使うのがいいかなと考えたのです。
>>448 んじゃ、javaと数値計算で検索すれば商用、非商用いろいろ見つかるよ。
他にも非JavaライブラリをJNIで呼び出すとか。
Javaって基本データ型のintとかdoubleとか、
参照渡しできないですよね。
でもメソッドのなかで代入したい場合ってどうするんでしょう?
int a[] = new int[1];
って宣言してわざわざa[0]でアクセスするってことにしてみたんですけど、
これって変ですよね。
>>450 呼び出された側で代入したいのなら別に変じゃないと思う。
1個のintに代入したいだけならメソッドの返値として返して呼び出し側で代入する手も。
あとは、intをラップしたmutableオブジェクトなクラスを定義してそれでやりとりするとか。
つ Integerクラス
>>452 Integerはimmutableなんで引数として渡されたIntegerオブジェクトに
メソッド内で新たな値を代入することはできないと思う。
('A`)
じゃあ
class IntCupsel{
public IntCupsel(int i){ value=i; }
public int value;
}
で。
こんな感じで
public class MutableInteger {
private int i;
public MutableInteger(int i) {
this.i = i;
}
public void set(int i) {
this.i = i;
}
public int get() {
return i;
}
public String toString() {
return Integer.toString(i);
}
}
public class bar {
public static void main(String[] args) {
MutableInteger n = new MutableInteger(1);
foo(n);
System.out.println(n);
}
public static void foo(MutableInteger i) {
i.set(i.get()+1); // i=i+1
}
}
被った
454のようにアクセスを簡単にするためにラップしたものをpublicにしてもいいね。
あとはマルチスレッドでmutableなものを使うときは注意が必要なくらいか。
よしお腹一杯になったぞ
サンクス
>>455-456 人の話を聞かなくなってたオレには丁度良い薬だった
プロパティファイルはユニコードじゃないとだめなのに、
何でファイルはユニコードじゃないものでも、java内で日本語表示できるのですか?
そもそも、プロパティファイルじゃなくてもいいような気がするのですが?
素人でその辺が良くわかりません。
Unicodeとネイティブの変換機能はJava内にある。
プロパティファイルじゃなくてもいいというのが
何のことだかさっぱりだが、
たぶんプロパティファイルでなくてもいいぞ。
取りあえずJavaの前に自分の状況を日本語で表現する勉強だ。
>>459 ありがとうございます。
java内と言うのは、エンジンのことですか。それともAPI?
Propertiesのソースを見てみたら、unicodeの変換処理がありました。
それのことですかね。
変換機能は他の用途にも使えそうなので、JDKのAPIにすればいいのにとふと思いました。
new String(byte[] ,String)
で、Stringで指定したCharsetでの変換が機能する。
逆向きは、
String.getBytes(String)
参考:
java.nio.charset.Charset
独自のサーバーアプリを作っていて、tomcatみたいに実行時中に変更されたクラスを再ロードさせたいのですが
どうすればよいでしょうか?
javaの課題がだされたのですが、初心者なので全くわかりません。javaなら俺に聞けさんに助けてほしいです。
多いのですが留年がかかっています。助けてくださいお願いします。12月6日が期限です。
46. クラスを定義して、三角形の2つの角と爽辺をN組読み込んで、三角形の面積、角度および三辺の長さを出力するプログラムを作成しなさい。
72. ニュートン・ラプソン法で、c o s x = xの根を求める13. 角度(x度y分z秒)をラジアンに変換するプログラムを作成し、角度変換表を作成し、プログラムを作成しなさい。
37. nを1から50まで変化させて、各nに対してs 3 = 1 3 + 2 3 + … + n 3= n 3 ( n + 1 ) 2 / 4の値を求めて、数表を作るプログラムを作成しなさい。
86. 次の真理値表を作るプログラムを作成しなさい。(X •Y) + {Z • (X + Y)}
>>463 12/6までならまだ余裕あるな。ちょっとまじめにやってみようか。
まず問題文をコンピュータ関係なしに数学として理解しているかだ。
もし、そこ以前だったら、・・・船の安全を考えて頼むから留年してくれ。
問題文を数学として理解しているのなら
まず、その求め方を日本語/数式で書いてみよう話はそこからだ。
>>463 大学名は晒さない方が良いと思うよ・・・
つーかコレ、学籍番号だったりして・・・ w
教官がここ見てて回答と一緒だと一発留年か。w
俺の学生時代も、レポートのdiff取って一発留年晒し挙げがあったなあ。
アクセス記録によれば、UNIXサーバの他人のディレクトリからかっぱらったらしい。
パーミッション切っておかないのが上手いよな。w
468 :
デフォルトの名無しさん:2006/11/29(水) 15:08:19
java.awt.eventのgetModifiersメソッドについて教えてください.
Swingでこれを使うとSHIFTなら17,CTRLなら18,ALTなら24が帰ってきて,
SHIFT_MASK,CTRL_MASK等のマスクを使った処理がちゃんとできるのですが,アプレットでこの
メソッドを使うと,SHIFTでは64,CTRLでは128,ALTでは512が帰ってきて
マスクが使えません.
どうなってるのでしょうか?
470 :
デフォルトの名無しさん:2006/11/29(水) 15:57:50
何方かjava言語を勉強できる無料サイトって知ってる方いませんか?
一様参考書買って勉強してるんですが・・・なんだか物足りないので誰かご存知の方が居ましたら情報plz つw;
>>469 運用時は自動ロード(開発モード)をOFFにしてるんじゃね?
>>471 tomcatの設定はいじれないので、アプリ側で再ロードはできますか?
あるservletを用意して(管理者IDでない場合は404のエラーを返す)、
textで入力されたクラスファイルの名前を取得し、再ロード(クラスの張替え)する。
こんなことできますか?サーバーの再起動は夜中しか許されないので、
これができると日中でもバンバン修正適用ができるのですが。
エラーになって文句言われたときは自己責任で何とかします。
>>473 クラックされて変なクラスファイル置かれてもいいの?
>>473 自分でクラスローダー実装するしかないだろう。
どちらにしてもTomcatいじる事になるかな・・・
もしくは、古いやり方だがRMIサーバー立てて、クラス修正が頻繁に起こる奴はここに保持とかな・・・
>>475 そっか。デフォルトのクラスローダーは何もしないから、
tomcatは自力で実装しなおして、再ロード可能なクラスローダーを使用しているんだ。
ということは、tomcatのクラスローダーをパクればOK!?
そんな簡単ではないか・・・・
わかりました。もしかしたらまた課題が追加されるかもしれないので、それも含めて考えてみます。いろいろありがとうございます。またよろしくお願いします。
479 :
デフォルトの名無しさん:2006/11/30(木) 12:40:28
javaで代数螺旋のリチュースをかきたいのですが、
public class Lituus extends Applet {
public void paint (Graphics g) {
g.setColor(Color.red);
int centerx = getWidth()/2;
int centery = getHeight()/2;
g.drawLine(0,centery,centerx*2,centery);
g.drawLine(centerx,0,centerx,centery*2);
g.setColor(Color.blue);
int n=360;
double zoomx=10,zoomy=10;
double delta =Math.PI*2/n;
int radius = (centerx<centery)? centerx*3/4:centery*3/4;
double c =Math.sqrt(2*Math.PI)*(radius);
double t = 0.001;
double r =Math.sqrt(ここ);
int lastx = (int)(r*Math.cos(t))+centerx;
int lasty = -(int)(r*Math.sin(t))+centery;
for (int i=1;i<=n;i++){
t+=delta;
r=Math.sqrt(ここ);
int x = (int)(r*Math.cos(t*zoomx))+centerx;
int y = -(int)(r*Math.sin(t*zoomy))+centery;
g.drawLine(lastx,lasty,x,y);
lastx=x;
lasty=y;
}
}
}
ここってかいたとこができればできるらしいのですが、わかりますか?おしえてください
JAVAなら俺に聞け
でも、数学は聞くな
tが、ラジアン角度
rは、その角度、での中心点からの距離
Wikipediaによると
r = a/ √θ らしい、
今、θを0.001から2π/360のステップで刻もうとしている。
つまり、1周分。
あとは何とかしてやってくれ。
PS.
↑のプログラムでは、定数はaではなくc
482 :
デフォルトの名無しさん:2006/11/30(木) 17:03:23
以下のコードでコンパイルエラーが表示されてしまったのですか、どうすればいいですか?
import javax.swing.*;
public class s12 {public static void main(String[] ar) {
// JFrameクラスのインスタンスを作成
JFrame frame = new JFrame(
"ボタンをのせたアプリケーション");
// JButtonクラスのインスタンスを作成
JButton button = new JButton("わたしはボタン");
// フレームにボタンを追加
frame.add(button);
// フレーム(ウィンドウ)が閉じる際の処理を定義
frame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
// Look & Feelの設定
try {
// WindowsスタイルのLook&Feelに設定
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
// 設定を反映させる
SwingUtilities.updateComponentTreeUI(frame);
// エラー処理ブロック
} catch (Exception e) {e.printStackTrace();
}
// フレームのサイズを設定して表示
frame.setSize(250, 100);
frame.setVisible(true);
}
}
483 :
デフォルトの名無しさん:2006/11/30(木) 17:13:10
↑間違えましたすいません<<482ですが、コンパイルはできますが、
実行になるとエラーが出ます;
>>483 またこれかよ。 javaの前に、質問の仕方を勉強しろ。
「エラーが出ます」じゃなくて、その出た例外をそのまま貼れ。
お前は、泥棒に入られたら警察行って「困っています」とか言うのか?
とりあえず勘でエスパーしてやるが、
frame.add(button);
を
frame.getContentPane().add(button);
に変えてみろ。
485 :
デフォルトの名無しさん:2006/11/30(木) 17:27:23
ありがとうございました!解決しました。以後気をつけます!
486 :
デフォルトの名無しさん:2006/11/30(木) 17:32:21
どうもバージョンによっては482でOKみたいです。
487 :
名無し:2006/11/30(木) 17:37:51
スロットを作ってるんですけど画像がそろったときにどうすれば文字(アラート)がでるのか教えてください
多分あとfunction judgeのif文の関数の入れ方だけだと思うんですけど。。
var n=0;var image=new Array(4);function Setimage0(){for(i=0 ; i<4 ; i++){image[i]=new Image(200,150);image[i].src="image"+i+".jpg";}}
var m=0;var image=new Array(4);function Setimage1(){for(i=0 ; i<4 ; i++){image[i]=new Image(200,150);image[i].src="image"+i+".jpg";}}
var l=0;var image=new Array(4);function Setimage2(){for(i=0 ; i<4 ; i++){image[i]=new Image(200,150);image[i].src="image"+i+".jpg";}}
function Scroll0(){time0=setTimeout("Scroll0()",500);document.photo0.src=image[n].src;n++;if(n>=4)n=0;}
function Scroll1(){time1=setTimeout("Scroll1()",500);document.photo1.src=image[m].src;m++;if(m>=4)m=0;}
function Scroll2(){time2=setTimeout("Scroll2()",500);document.photo2.src=image[l].src;l++;if(l>=4)l=0;}
function Stop0(){clearTimeout(time0);}
function Stop1(){clearTimeout(time1);}
function Stop2(){clearTimeout(time2);}
function Judge()
{if(( == ) && ( == )){alert("当たり!");}}
>>486 Tigerか、MustangでContentPaneを取らなくてもイイ改修が入ったはず
トリップのsalt部分を作る関数みたいなのどこかに公開されてませんかね?
Javaだと文字コード体系が違うので変換がめんどくさいです
492 :
デフォルトの名無しさん:2006/12/02(土) 04:35:40
A array[] = new A[5];
のようにオブジェクトの配列を宣言したとき、
これは参照の配列だと思います。
実体も生成されているのでしょうか?
試せやカス
493の付け足しです。
実体も生成されているとしても、
明示的にメンバを初期化したい場合は
結局別々にコンストラクタを呼び出せば良い。
この考えでいいでしょうか?
public class Main {
public static void main(String[] args) {
MyClass[] a1=new MyClass[3];
MyClass[] a2=new MyClass[]{new MyClass(), new MyClass(), new MyClass()};
}
}
class MyClass{public MyClass(){ System.out.println("MyClass "+this.hashCode()+" Created");}}
>>496 コンストラクタは呼ばれないけど、
インスタンスのためのメモリは確保されていると…。
>>497 > インスタンスのためのメモリ
> インスタンスのためのメモリ
> インスタンスのためのメモリ
> インスタンスのためのメモリ
(゚д゚)m9 なんだその「わかってます」風な発言は?!
>>498 初期化されていないインスタンスが作られる?
それはイイスタンスですね
501 :
デフォルトの名無しさん:2006/12/02(土) 09:20:18
tomcatをインストールしました。localhost:8080をブラウザから指定すると、tomcatの画面
にはなりました。次に、webappsディレクトリの下にentryというディレクトリを自分なりに
つくり、その下にWEB-INFディレクトリを作りました。そして、ブラウザから、localhost:8080/entry/
とやると、HTTPステータス404のエラー画面になってしまいます。どうしてでしょうか?
環境変数はCATALINA_HOMEでPATHは;%CATALINA_HOME%binとしました。
コンソールでもset pahコマンドでpathの確認もしました。
なにか間違ってるのですかね?
エラー画面は、
Type: ステータスレポート メッセージ:/entry/ 説明 :The requested resource (/entry/) is not available.
と出てきています。
オブジェクトをメソッドの引数で渡して、
そのメソッドの中で変更できないことに気づいて驚いています。
混乱…参照渡し???
あぁぁこれはひどい。良く考えたら当り前だぁ。
ひどい勘違い…。
引数で渡されるのはオブジェクトへの参照で、
それを受けた仮引数に格納された参照をメソッドの中で変更しても、
呼び出した側の実引数に反映されるわけではないからね。
やるなら、
メソッドが変更後のオブジェクトを引数でなく戻り値で返すようにするか、
変更したいオブジェクトを内部に持つ別のオブジェクトを渡して、
メソッド内で変更するようにするか。
もしくは、変更したいオブジェクトを新たなor用意された別のオブジェクトへ差し換えるのではなく、
かつ、必要な内部状態をそのオブジェクトが変更できるのなら、
メソッド内でオブジェクトの内部状態を変更してやれば、呼び出し元で実引数に渡したオブジェクトを変更したことになる。
負荷が掛かる処理があって、サーバーのCPUを使用しすぎるなと注意されました。
メソッド内の特定の処理だけを負荷がかからない方法はあるでしょうか。
ちなみに、サーバー内でjavaアプリだけが稼動している場合(telnetとかのデーモン形をのぞく。さらに負荷がかかって以内を仮定)、
常にCPUが80%を越えないようにする方法はあるでしょうか。
特定の処理だけ負荷を下げるのなら、VM内ならThreadで優先度を下げておくって手もあるが
サーバ全体だったら、これはOSの話だ。
そのjavaプロセスの優先度を下げておけ。
これでも80%超えるだろうが、他プロセスが優先されれば問題無いんだろ。
servletの話ですが、ウェブアプリで10分後とに定期的な処理をする場合は、
セッション破棄のリスナーを登録し、
あらかじめ決めておいたセッションの破棄だったら処理をするってな感じにしないとだめでしょうか?
ウェブアプリ内で保持している情報を使用したいので、別起動のバッチ処理はなしなんですが・・・
>>509 最初のイベント処理でスレッド作って、ウェブコンテナが終了するまでループしていればいいんじゃないの?
あれ、リスナーイベントやサーブレット内でスレッド作れたっけ。作れればそれでいいんじゃないの
csvファイルを","でsplitするときに、戻り値の配列に","も含めて返すことってできなかったでしたっけ?
commonsのなにかのライブラリか、java1.4のAPIのどれかにそんなことができるものがあったと思うんですが思い出せなくて。
"a,b,c"が"a", ",", "b", ",", "c" の配列になるものです。
Stringのsplitはではできませんでした。
そんなのありましたっけ?
そんなレアな用途のライブラリはないと思われ
,を;,;とかに置換してsplitとか
>>511 こんなにかわいいString#splitが女の子のわけないだろ!
"a,b,c".split("(?=,)|(?<=,)")
,が先頭のときは最初の要素は空文字列になったり、
,が連続したとき空文字列が間に入るわけではなかったり、
一貫していない気まぐれも魅力。
コンパイルしたらIOException createprocess error = 3 とか言われたのですが、これってどんな意味でしょうか?
全角を半角に、半角を全角に変換をする場合、
1つずつ"ア"なら"ア"に変更と地道にやるしかないでしょうか?
split(str, -1)で出来なかったっけ?負数にしないと空を無視したはず。
>>511 String 女の子 = "a,b,c";
String[] 少女 = 女の子.split(",");
String[] 大人の女 = new String[少女.length*2]
for(int i=0;i<少女.length;i++;){
大人の女[i*2] = 少女[i];
大人の女[i*2+1] = ",";
}
結局配列の偶数番目に、","が入ってるだけだって。
519 :
518:2006/12/06(水) 20:50:51
あ、最後の","が余計か。
って、何に使うんだろこんなの。
>>516 計算ではできないからそうするしかないね。
>>516 たかだか数十種類の文字の変換なんだから変換テーブルを用意してやれば簡単だと思う
つか、こういう半角/全角変換みたいなよくあるヤツはライブラリないの?
String.matchesで正規表現の大文字小文字無視オプション適用させることはできるでしょうか?
String.toUpperCase.matchesで大文字としてチェックするで対応しているのですが。これしかないでしょうか?
>>523 真面目にやるならこうかな?
Pattern.compile(正規表現, Pattern.CASE_INSENSITIVE).matcher(文字列).matches()
525 :
デフォルトの名無しさん:2006/12/07(木) 23:11:33
>>525-526 wikipediaの議論はwikipediaで
そのための仕組みもある
528 :
526:2006/12/08(金) 01:35:24
>>525 直ってるね。単純な間違いっぽい。
wikipediaは基本的に誰でも編集できるから、
単純ミスはここへ報告するくらいなら自分で直してあげた方が親切だよ。
>>526 まあ「例えば」だしJavaしか無くても仕方ないかも。
インスタンスの説明として、その例えが妥当かどうかは別として。
よくhashcode()やgetClass().toString()で使用される
インスタンスのアドレス?を使用したいのですが、
hashcode()toString()を親クラスがオーバーライドしていて取得できません。
インスタンスのアドレスを取得する方法はあるでしょうか。
ありゃアドレスではなく、hashcodeのHEX表記だよ。
ObjectクラスのtoString()実装を見りゃわかるが、
return getClass().getName() + "@" + Integer.toHexString(hashCode());
System.identityHashCode(obj) って方法もあるけどな。
つか、何に使うんだ?
>>531 ありがとうございます。
インスタンスごとにユニークなIDを返さないといけない要求がありまして・・・
助かりました。
>>532 System#identityHashCode(obj)が返すデフォルトのObject#hashcode()の値は、
異なるオブジェクトについては「できるかぎり」異なる整数値を返すことになっている。
異なる整数値にならなくてもかまわないので真にユニークであるとは保証されていない。
等価とみなされるインスタンスは必ず同じ結果を返さないといけないが、逆は成り立たないので注意。
Object#hashcode() → Object#hashCode()
インスタンス生成時にアプリケーション内でUniqueIDを生成した方がいいんじゃ?
>>535 俺もそう思う。
ユニークなIDを持たせたいクラスでIDの生成、管理をする方が確実だと思う。
javaに正規表現はありますが、ワイルドカードはないのでしょうか?
>>537 ワイルドカードというのは正規表現の一表記法だと思うが。
もし、0文字以上の任意の文字にマッチするものを*、
任意の1文字にマッチするものを?と書くワイルドカードのことを言っているのだとすれば、
それはJavaの正規表現では、*は.*、?は.と書く。
1文字以上の任意の文字にマッチさせたければ.+と書く。
もしかするとワイルドカードでは*は1文字以上の任意の文字だったかもしれないが。
539 :
518:2006/12/09(土) 01:08:24
表記法じゃなくて省略版だな。
省略版なんだったらそれは正規表現の表記法ってことじゃんw
POSIXの拡張正規表現どころかUNIXの伝統的な正規表現もカバーできない正規表現っぽい表記法というべきだろ
すいません。
以前にもお聞きしましたが、weblogicを開発モードに変更してクラスファイルを更新しても反映してくれません。
あくまで開発中のみの対応として、クラスロードーを自作して自力でアンロード・ロードをさせたいと思っています。
サーブレットを1つ用意して、パラメータで取得したクラスを再ロードする感じです。
loadClassをオーバーライドして、
findLoadedClass(String) を呼び出して、クラスがすでにロードされたかどうかを確認する
いきなりfindClassを呼び出せばいいのでしょうか?
クラスをアンロード?するようなメソッドが見当たらなかったので・・・
FileChannel#transferFromでEOFにぶちあたったかを調べるには
どうしたら良いのでしょうか?
EOFっても-1返さないし。。。
>541
明示的にアンロードする方法は無かったような。
クラスローダがGC対象になったらそのクラスローダから
ロードされたクラスもGC対象になる、だったと記憶している。
# もちろんインスタンスがあるうちはそのクラスはGC対象にできないし、
# クラスがあればそのクラスのクラスローダがGC対象にならないのは言うまでも無い。
クライアントがJBOSSにアクセスしたときにセッションIDを発行と管理を行う機能を
作りたいのですが、JBOSSのみで実現するほうほうが解かりません。
webアプリはデプロイ単位でクラスロードーが違うことをききましたが、
webコンテナが、一デプロイ用の大元クラス(webアプリとしてみたときの一番トップのクラス?)を作るとき、
新しいクラスローダーを生成して、そのクラスローダーのloadClassでその大元クラスをロードしているのでしょうか?
基本的なことがわかっていなく、説明が下手ですいませんが、教えていただけないでしょうか?
どうしてもweblogicの開発でクラスの即時変更を実現したくて・・・
>>544 Seasarのhotdeploy技術でも調べてみなよ。
あれは本当すごい技術だから、使ってみるべき。
>>545 そのクラス(機能)だけ使えるのかしら?
クラスローダは、
AクラスがBクラスをnewする場合、B.class.GetClassLoader()の戻り値はAのそれと同じになるのでしょうか?
ということは、サーブレットのpost処理移行のクラスでインスタンスを作る場合、
サーブレットをnewするときに、リロード可能ClassLoaderのloadClass()でサーブレットインスタンスを作る必要があるのでしょうか?
>547
> AクラスがBクラスをnewする場合、B.class.GetClassLoader()の戻り値はAのそれと同じになるのでしょうか?
なぜ試さない?
public class Foo {
// A=Foo, B=Integer
public static void main( String args[] ) {
System.err.println( Foo.class.getClassLoader( ).equals( new Integer(0).getClass( ).getClassLoader( )));
}
}
551 :
デフォルトの名無しさん:2006/12/14(木) 22:29:27
>>549 見づらい。ナニが言いたいか分からん。
頑張って読んだ
>>550には解説して欲しいところだ
553 :
550:2006/12/14(木) 23:00:34
java.langのクラスはクラスローダーがないって事が言いたいんじゃね?
俺も
>>551と
>>552に言われて試してみて初めて気づいた。
>>548 AクラスがBクラスをnewする場合、B.class.GetClassLoader()の戻り値はAのそれと同じになるのでしょうか?
↑日本語間違えました。これは確認していました。すいません。
ということは、サーブレットのpost処理移行のクラスでインスタンスを作る場合、
サーブレットをnewするときに、リロード可能ClassLoaderのloadClass()でサーブレットインスタンスを作る必要があるのでしょうか?
↑サーブレットクラスを作るのはWEBコンテナですよね。
やっぱりWEBコンテナが実装してくれないとだめなんですかね。
strutsを使っているのですが、ActionServletのデコレーターをつくり、そのクラスのコンストラクタで
loadClass()でActionServletを作ったのですが、
Actionクラスないのクラス変更即時更新ができませんでした。
発想が間違っているでしょうか?
556 :
デフォルトの名無しさん:2006/12/15(金) 13:10:04
Frameを表示したときに、タスクバー右のアイコン軍に登録ってどうしたらできるのでしょうか
アイコン軍のとこにハンコと身分証明書持って行く
軍?
それよりJava SE 6 Mustangがリリースされたのに
このスレでは誰も注目しないんだな
6は興味引かれる機能ってのが無いからなあ
>>556 JDK6入れてSystemTrayとかTrayIconとかから調べてみな
unixのC++言語のロック機能でセマフォって知っていますか?
ロック情報で、インクリメントでロック、デクリメントでアンロック。
ロック: lock++;
アンロック:lock--;
これは違うクラスのメソッド内でも変数にアクセスできれば1メソッド内でなくても、ロックアンロックできます。
javaの場合は、synchronized { }ブロック内でしかできないので、1クラス内でしかロックアンロックできないと認識していますが、
何か別な方法はあるでしょうか
HashMapはHashTableで管理していて高速と聞きますが、
DBのインデックスみたいなものでしょうか?
WEBのページ訪問追跡機能を考えていて、
まず最初に全20000ページをHashMapに登録(map.put(url.hashcode(), url)。
htmlを表示するごとに、filterでリストに追加(visit.add(url.hashcode()))。
訪問履歴を表示する処理で、リストからハッシュコードを取り出して、HashMapからURLを取得使用と考えているのですが。
20000この中からhashcodeで検索するのって効率がいいのでしょうか?
PCで試したのですが、処理は結構早かったのですが、比較対照がわからなかったので。
またマシンの性能もあるし、HashMapの使用仕方の妥当性から考えたほうが良いかなと思いました。
>>560 同じ事がしたければ、同じようにjavaでセマフォを使えばいいだけなんじゃ?
synchronizedブロックが、1クラス内でしか排他処理できないという認識は間違い。
ロックオブジェクトを使って排他制御するから、そのロックオブジェクトが見える場所ならどこからでも排他可能。
>>561 その実装ってどうなのよって件は別にして、DBのハッシュインデックスと同じ特性だと思っていい。
件数が増えても、キーがバラバラなら同じコストで検索できる。 キーに重なりがあると正しく動作しないかも。
データ構造と検索コストの関係をググれ。
>>562 ありがとうございます。
javaでセマフォを使うとは、javaでも直接セマフォと使用できるのでしょうか?
>>563 JDK 5.0以降ならSemaphoreクラスがある。
古いバージョンしか使えない場合は、自分でセマフォクラスなり変数を用意して
最大値と最小値(普通は0か)をセットして、++と--なりする処理を書けばいい。
>>564 すごい。1.5はセマフォがあるんですね。ただ1.4.0.8なので自作しかないですね。
方法がわからないのですが、synchronized { ・・・・ }で「{」がロック、「}」がアンロックだと思うのですが、
Class {
lock() {
・・・
}
unlock() {
・・・
}
・・・をどうすればいいのでしょうか。synchronized{・・・}しか知らないので、ロックの状態でメソッドを抜ける方法がわかりません。
いきなりの質問ですみません。
javaの配列計算時に1からxまでの値を計算して、一定の数値のみを出力するプログラムで、xをある一定の値になると
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
となって計算結果が出なくなりますが、解決法を教えてください
出来れば、一部の数値を残して他の計算結果を消すメモリ節約法があればいいのですが。
>>564 インクリメントは置いといて、ロッククラスを作ってみました。
排他制御が難しくて抜けがあるような気がしますが・・lock・unLockメソッドで排他を掛けています。
public class Lock {
private Stack stack = new Stack();
public void lock() throws InterruptedException {
synchronized (stack) {
stack.push( Thread.currentThread().getName() );
if (stack.size() == 1) {
return;
}
}
wait();
}
public void unLock() throws InterruptedException {
synchronized (stack) {
if (stack.isEmpty() == false && stack.get(0).equals( Thread.currentThread().getName() )) {
stack.remove(0);
notify();
}
}
}
}
>>566 そのxの大きさと実行環境のメモリサイズにもよるけれど、
もしJVMが使うヒープサイズを拡大するオプションを使っていないのなら、
とりあえず-Xmxでヒープサイズを増やしてみるというのは?
mainメソッドを終了するときに、全てのアクティブなインスタンスのgc()が呼ばれると思っていたのですが、
試したら呼ばれませんでした。
これは仕様でしょうか?
mainメソッドが終了するときにガベージコレクタが実行されるなんて仕様はどこに書いてあったの?
>>570 たぶん誤解していて、それが仕様だったと勝手に思い込んでいたみたいです。
gc()は呼べますが、gcを実行するかのタイミングの保証はないので、
main終了のときに、あるインスタンスのfinalizeを呼ばすことはできないでしょうか。
>>571 うむー。finalize()の呼び出しタイミングもVM依存だしね。
後処理が必要な場合はfinalize()に実装せずに、
後処理メソッドを別に作っておいて、
明示的にそれを呼び出すようにした方がいいんじゃないかな。
>>572 そうですね。危険な橋渡りはやめておきます。
ありがとうございました。
org.apache.commons.collections.map.LRUMapでキャッシュのMAP実装がありますが、
古くなり捨てるべきものを捨てるのではなく、シリアライズしてメモリを圧迫させないような実装のMAPって
どこかのプロジェクトにありますかね?
commonsのcollectionにはないですね。
マルチスレッドアプリの中で、あるリストが持っている全てのオブジェクトのトータルメモリ使用量を出せといわれました。
方法としては、シリアライズしてファイルのサイズを調べること意外できないでしょうか?
ただ、シリアライズできないものはアウトですが・・・
576 :
デフォルトの名無しさん:2006/12/21(木) 00:12:07
Spring+Hibernateで開発してるんだけど、検索の種類が多すぎてDAOの
メソッド激増してしまってるんだけど、DAOの外でHibernateのCriteria
使うとなんのためにDAO使ってるのかわからないし、こういう場合って
特定のO/RマッパーやDBに依存しない汎用のCriteriaを作るべきなんでしょうか?
Runtime.getRuntime().exec("xxx")でコマンドを実行したとき、
そのコマンドが標準出力にメーセージを吐き出すもので、
コマンドの終了をアプリで待ちたくないので、
終了しないうちに、javaアプリを終了させていますが、コマンドの起動・終了し方として問題ないでしょうか。
ちなみに、コマンドは問題なく動いています。環境はXPです。
>>577 JDK1.4以下とかの縛りが無ければ、ProcessBuilderでググってみると良い。
>>578 すいません。
その1.4でした・・・。ProcessBuilderのりダイレクト、ホントのいいですねぃ・・・うらやましい
577ですが、アプリが終了しているように見えて終了していませんでした。
public static void main(String[] args) throws Exception {
Process process = Runtime.getRuntime().exec("sleep 10");
System.out.println("end");
}
を実行して、「end」は出ますが、eclipseのデバックコンソールではまだ実行中(停止ボタンの「■」が押せる状態)でした。
勝手に実行させて、そのコマンドの終了を待たずにアプリの終了はだめそうですね・・・。
ただ、WEBアプリ(サーブレット)内でしたいので、1リクエスト中に終わらなくてもスレッドはずっと残るので、
実行したプロセスはほっとけばいい、ほっといてそのうち終わっている、でよいなと勝手に思ってますがどうでしょうか?
つか、シンプルに戻り値のProcess#destroy()ではダメなん?
582 :
デフォルトの名無しさん:2006/12/21(木) 14:27:16
オブジェクト指向によるシステム開発において、カプセル化の目的を述べよ。カプセル化しなかった場合に発生しうる問題をあげて説明すること
誰か教えてください><
>>581 すいません。それだとプロセスが強制終了してしまうので。
WEBでコマンドの実行をして、「実行中です」を表示させて、バックグラウンドでプロセスが走っているようにしたいのですが。
Runtime.getRuntime().exec("sleep 6")って、新しいスレッドで実行していると思ったのですが、
eclipseのデバッグウィンドウで見るとスレッドは生成されていないです。
なのに、カレントスレッドはプロセスとは別に進んでいるなんて・・・
unixのfork()みたいなものなんですかね。子プロセスだった場合Runtimeが子プロセスの面倒を見ているのでしょうか・・・
javaでマウスポインタの制御はできますか?
できるようなら適当なクラスを教えてもらいたいです。
>>583 ほっといて確実に終わればいいけど、もし終わらないままだとずっとスレッド残っちゃうぜ。
ある程度の時間でタイムアウトしたら、強制でdestroy()した方が安全。
>>585 ありがとうございます。
リクエストスレッドではほっといて、ProcessインスタンスはどっかのMapにしまっておいて、
アプリケーション終了処理のサーブレット終了処理で、プロセスが終了していなかったらdestroyっという感じで処理してみます。
ウインドウをマウスでリサイズするときに
ウィンドウの外に現れる枠を表示する方法を教えて下さい。
>>588 いったいどこの住民だ?
環境とか書かないと面倒だぜ?
mainメソッドって他のクラスからも呼ぶことができたのですが、
いい悪いは別にして、コールしても良いのでしょうか?
>>591 構わないよ。
javaアプリケーションの最初に呼ばれるメソッドというだけで、
別に特別なメソッドってわけではない。
こういうことだってできる
class A {
public static void main(String[] args) {
if (args.length == 0) return;
System.out.println(args[args.length - 1]);
String[] newargs = new String[args.length - 1];
System.arraycopy(args, 0, newargs, 0, args.length - 1);
B.main(newargs);
}
}
class B {
public static void main(String[] args) {
if (args.length == 0) return;
System.out.println(args[0]);
String[] newargs = new String[args.length - 1];
System.arraycopy(args, 1, newargs, 0, args.length - 1);
A.main(newargs);
}
}
もちろん単純に再帰しても(例えばクラスAのmainの中で自身のmainを呼び出しても)構わない
Unicodeなら int code = (int)'a'; ですが
シフトジスの文字コードの取得の仕方を教えてださい
自作したThreadを強制終了することができません。
Threadのdestoryをjavadocを見たら、自分で実装しろと書いてあったのですが
強制終了するにはどうすればいいでしょうか?
stop()しても、interrupt()してもとまらないです。
>>595 ここを見て愕然としました。
デッドロックのことはわかるけど、実質的に強制終了ができないなんて・・・
tp://www.ep.u-tokai.ac.jp/~nakazato/API/1.4.0/docs/ja/guide/misc/threadPrimitiveDeprecation.html
>>596 でもweblogicではweblogicをstopコマンドで終了させた場合、スレッドも一緒に強制終了しましたよ。
しかも割り込み冷害は発生している様子はなく・・・
どうやって止めているのだろうか。
598 :
長くてごめんなさい:2006/12/25(月) 16:52:20
Javaじゃなく浮動小数点演算だろ!って言わないでTT
Win2000 JDK1.3 から Win2003 JDK1.5に(当然マシンも)VUPしたら
4350÷1000=4.35 だったのが 4350÷1000=4.3500000000000005に。
import java.math.BigDecimal;
public class DoubleTest {
public static void main(String[] args) {
double exDouble = 0;
Double exDouble1 = new Double((String)args[0]);
System.out.println("@bitで表すと" + Double.doubleToLongBits(exDouble1.doubleValue()));
exDouble = exDouble1.doubleValue() / 1000.0;
System.out.println("Adoubleで演算 " + args[0] + " / 1000 = " + Double.toString(exDouble));
System.out.println(" LongBitで表示 " + Double.doubleToLongBits(exDouble));
Double exDouble2 = new Double(args[0]);
BigDecimal exDec = new BigDecimal(exDouble2.doubleValue());
exDec = exDec.movePointLeft(3);
exDouble = exDec.doubleValue();
System.out.println("BDecimalで演算 " + args[0] + " / 1000 = " + Double.toString(exDouble));
System.out.println(" LongBitで表示 " + Double.doubleToLongBits(exDouble));
}
結果
@bitで表すと4661504890281918464
Adoubleで演算 4350 / 1000 = 4.3500000000000005
LongBitで表示 4616583683022153319
BDecimalで演算 4350 / 1000 = 4.35
LongBitで表示 4616583683022153318
でも別のWinXPマシンだと
@bitで表すと4661504890281918464
Adoubleで演算 4350 / 1000 = 4.35
LongBitで表示 4616583683022153318
BDecimalで演算 4350 / 1000 = 4.35
LongBitで表示 4616583683022153318
この1bit差はどうして起きるの?
xmlファイルをxpath形式で出力することって可能でしょうか?
ある程度、同じ形式のxmlファイルを比較したいのですが、単純にdiffすると、
書き方だけが異なるものまで引っかかってしまうので、
前処理として、正規化(?)したいのです。
一旦、xpath形式に変換できれば、比較しやすくなるのではと考えています。
>>599 無理。xpathは逆の用途だから。そんなものはない
>>599 xpathじゃなくてxmlファイルをフォーマットすりゃいいんじゃないの?
英和辞書を正規表現に変換できれば比較しやすいと言ってるようなもんだな。
>>599 XMLConfigurationで完璧にできるよ
605 :
sage:2007/01/15(月) 00:39:35
ちゃんとコンストラクタ書いてるのに")"とか";"がありませんって言われてコンパイルとおらないんですが何が悪いんでしょうか?
コンストラクタと")"とか";"がありませんって言われてコンパイル通らないことは関係ないから
日本語でおk
文句言われるあたりを張れ
609 :
デフォルトの名無しさん:2007/01/16(火) 03:06:04
k = 0;
for( i = 0 ; i < 3 ; i++ ){
yy = i * card + margin;
for( j = 0 ; j < 4 ; j++ ){
x[k] = j * cardWidth + margin ;
y[k] = yy;
k = k + 1;
}
}
3行目の * でエラーがでます。
どう直せばいいものか、もしわかる人がいるならば教えてください。
>>609 メッセージには何と書いてあった?
catdとmargin, yyは定義されているのか?
それでも解らなければ
エラーメッセージの内容をここにペーストせい。
611 :
デフォルトの名無しさん:2007/01/16(火) 03:33:51
vegetarian.java:52: 演算子 * は int,int[] に適用できません。
yy = i * card + margin;
^
vegetarian.java:52: 互換性のない型
検出値 : <nulltype>
期待値 : int
yy = i * card + margin;
^
これです。どうでしょうか・・
cardじゃなくてcardHeightとみた。
cardとmarhinとyyの型が本当にint型なのか確認しろ
つうかcardじゃなくてcard[i]だったりしてな。そんな予感がする。
intとint[]型との違いくらいわかるよな
>>613に1票
配列変数、小学生でも理解できるから大丈夫だろ
C出身なんですが学校の課題で出たサンプルプログラムで
for(i=0;i<MAX;i++){
button = new JButton();
}
みたいなメモリ確保しっぱなしのコードが出てて脱糞しかけたんですが
こういうのは全部ガベージコレクタ頼りで明示的に解放しないのが普通なんでしょうか?
だとすればガベージコレクタがメモリを回収するタイミングとかは規格で明示されているんでしょうか?
明示的に解放しないのが普通
規格で明示されている
さらに猛脱糞しそうですが
回収タイミングは予測できません。
618 :
615:2007/01/19(金) 17:07:37
返答ありがとうございます
>>617 ひいいいいいい
今となっては、自分でメモリ開放しないといけない方が脱糞する。
Cでやるにしても、GCライブラリ使うな。
おまえら、JAVAの良本を紹介して下さい。
Effective java
>622
すまん、本当に良書か? 原書じゃなくて翻訳本も良書なのか?
「柴田芳樹」って調べると、チャンピオンコミックスの漫画家って出るんだが…。
プ 爆笑した
2001年に翻訳してるが、本格的に翻訳本がたくさんではじめたのは2005年ぐらいからじゃね?
>625
しかし、6年も前に出た本が良書とは…。Javaの世界とはなにか速度が違うな。
言語の世界の最先端が、Javaに実装されるまではタイムラグがありますし。
まあいいものは長くイイ。そういうことでしょう
ライブラリが追加されたり機能が増えたりしても、基本的な考え方は変わらん。
理論と経験に基づく「やっていいこと・悪いこと」が書いてあるノウハウ本が結果的には良書なのですよ。
>>629 日付をよく見ろ、まだ6年も経っていない。
5年前だ。
Java5からJava Genericsが登場したため。
Genericsに対応したEffective Javaを出して欲しいという
要請がある。
あの本、Genericsが出る前のものだったから
TypeSafe Enumクラスの作り方まで丁寧に乗せている。
そういうところは確かに古い。
それからJava Puzzlerはまだ新しいぞ。まだ1年くらいしか経っていない。
Java One Tokyo2005のときに宣伝されていたからな
>>632 enumがなかったからTypeSafe Enumの作り方を丁寧に解説してるというか、あの本のTypeSafe Enumがenum型として取り込まれたという感じだよな。
>>621 「Java Concurrency in Practice」
翻訳の語彙が気にならないのなら->「Java並行処理プログラミング」
nio勉強していますが、あまり使われていないですね。
私はC上がりなので、selectシステムコールの形がすきなのですが
javaはリスンしてからスレッド生成で、みんなで待ちって感じが普通ですかね・・・
配列型ってあるのですか?
getClass()の出力で見ると配列かどうかで違うのですが。
Cではファイルポインタに対してcloseしなくても
main終了後に自動的にflushされていましたが、
javaではcloseしないでmainを終了すると、データが書き込まれていませんでした。
もちろんwriteしてからexitしてます。
これは仕様でしょうか?
仕様
バッファがあっても無くても、flushしなかった場合の結果は保証されない
>>638 ありがとうございます。
すっきりしました。
640 :
デフォルトの名無しさん:2007/02/09(金) 17:20:38
一度描画した後の物体の色を変更したいのですが、CylinderではShape3DのようにsetCapability(Shape3D.ALLOW_APPEARANCE_WRITE)みたいなことはできないのですか?
>>635 チャネルを使うことで非同期処理により、高速化が期待できるのだよ。
>>636 ある。Arrayという型はまた別の型。リフレクション用。
ObjectはObject型、StringはString型だが、Object[]やString[]は配列型
配列型はObjectクラスを継承していると見なされる参照型でもある。
>>637 そういう使用。
エラーで終了しても確実な処理をさせたければ、
finallyでclose()するように。
>>640 マルチポストするなウザイぞ。
なぜウザイか、おまえにわかるか?
で、やり方は解ったんだな?
マウスリスナーについて、いい加減に理解したか?
>>635 いや、普通に、selectに対応するSelectorがあるよ
ただし1.4以降の機能で使いこなせてるひとも少ない
Linuxでは、JDK5_10以降において実装でepollを使えるようになった
これで利用する人も増える・・・かもしれない
flush・配列・selectの件勉強になりました。
ありがとうございます。
これはデッドロックにならないのですが、同じスレッドが同じインスタンスにロックする場合は
デッドロックにはならないでしょうか?
String a = "a";
synchronized (a) {
synchronized (a) {
System.out.println("aaa");
}
}
>>649 マルチスレッド環境ではデッドロックですか・・・
Java言語で学ぶデザインパターン入門 - マルチスレッド編 【Java SE 5 java.util.concurrentパッケージ対応】
を見てみよう。
>>650 どこを読んだら そーゆー解釈になるんだか……
サーブレットでのクッキーの使い方がわかりません…
HTMLのフォームから入力したデータをクッキーに焼くにはどうすれば…??
>>652 英語難しいですね・・・。
日本語のjava言語仕様はwebにはないのでしょうか?
本屋ではありましたが、高くて・・・
翻訳もあるぞ
プログラミング言語Java
っていう本を読め
>>654 古い版のJLSは日本語訳がweb上にあるよ。でも最新版は見たことない。もしあったら教えて。
javaでgnuPGみたいに公開鍵暗号化方式でネットワーク通信したいのですが、
そんなものあるでしょうか?
jakartaのcommonsというツール?にあったのですが、
なにか正式リリースではないようなので他にないかと。
DESっていうのがありました。
>>657 よく分からんけど認証鯖がないP2Pな暗号路を作りたいなら、
鍵交換はDH法でやって、交換された鍵を使ってRCなんかで暗号化するんじゃ無いのか?
このアタリは確実にどこかの誰かがやってて、しかも大きいライブラリがあるから調べるといい
>>657 >公開鍵暗号化方式でネットワーク通信
HttpsURLConnection
あ
System.in.readを使用して、コンソールから1文字入力するたびにreadをリターンさせることはできないでしょうか?
現在エンターを押さないとreadがリターンされません。
ちなみにむりやりバッファリングをしないようにしてみましたが
↓はだめでした。
BufferedInputStream b = (BufferedInputStream)System.in;
Field f = BufferedInputStream.class.getDeclaredField("buf");
AccessibleObject.setAccessible(new AccessibleObject[]{f}, true);
f.set(b, new byte[1]);
byte[] a = new byte[1];
System.in.read(a);
System.out.println(a);
>>664 ありがとうございます。
難しいですけどなんとなくわかりました。
イベントってやつを使わないとだめなんですか・・・
> だめなんですか・・・
まず使ってみてから結論付けしようね
WEBアプリで、WEB-INF/classes以下を含むクラスパス一覧を取得できるでしょうか?
もっといいますと、サーブレットの中で、その時点で有効なクラスパスの一覧を取得したいのですが。
System.getSystemProperty("java.class.path")では、java起動時のパスしか取れなくて、他の手段がわかりません。
ClassLoaderクラスのpublicメソッドにも取れそうなものがありませんでした。
java1.4です。
unixの「file」コマンドで、下記のようにファイルの形式を判断できますが、
javaのクラスで、似たような機能を持つクラスはありますでしょうか。
【unixコマンド】
# file cvs.tar
cvs.tar: POSIX tar archive
>>669 あるっちゃあるけど。
javax.swing.filechooser.FileSystemView#getSystemTypeDescription(File)
現状では Windowsでは「関連付け」の情報を返してくれるけど
*nix ではファイル/ディレクトリの区別ぐらいしかしない。
javax.activation.FileTypeMap#getContentType(File)
現状では デフォルトで登録されてるファイルタイプの種類が少ない。
strutsなどのパッケージ中にあるクラスを入れ替えたい場合、
WEB-INF/classesいかに同じパッケージ名+同じクラス名でclassファイルを置いて、
自作のクラスパスが優先される設定にして、
強制的に入れ替える方法は邪道でしょうか?
強引だけど、ほかにはjarを別構築するくらいしか方法もないし、いいんじゃない?
>>672 ありがとうございます。
strutsなどはapacheライセンスというのでしょうか、そのjarを再構築するのはライセンス違反ですか?
違反じゃないよ。
>>674 ありがとうございます。
その方向で修正します。
リストからイテレーターを取り出してループ処理をしている最中に、
リストに要素を追加するとエラーになってしまいます。
どうもそのような仕様らしいですが、ループ中に追加してもエラーにならない方法はあるでしょうか。
>>676 仕様違反な、エラーにならない List を自作すれば良いのでは?
679 :
デフォルトの名無しさん:2007/04/23(月) 00:22:45
すいませんコンパイルができません・・orz
プリーズヘルプミー
class JPanelset extends JPanel
{
JPanelset()
{
JRadioButton jr_a = new JRadioButton("A", true);
JRadioButton jr_b = new JRadioButton("B", true);
jr_a.getForeground(Color.red);
}
}
getForeground() (java.awt.Component 内) を (java.awt.Color) に適用できません。
jr_a.getForeground(Color.red);
^
↑こんなエラーメッセージが出ます・・・orz
>>680 色を取得したいのか設定したいのかによるけど
jr_a.setForeground(Color.red);
にするか
Color color = jr_a.getForeground();
にするかで解決と思われ。
>>681 助かります。
ありがとうございました^^
すまん、javaの言語仕様の
Integer Literalsで符号の定義が見当たらんのだかどこに書いてあるの?
符号はリテラルではないよ。
単項演算子
685 :
デフォルトの名無しさん :2007/04/29(日) 01:59:10
すみません、ホームページビルダーが作ってくれたjsなんですが
CGIに組み込むと動きませんでした。
単体では動作するので、何か変態な仕様なのかと思いました。
一般的なものに校正していただけませんでしょうか?
よろしくお願いします。
<!--HPB_SCRIPT_CODE_40
function _HpbShowObj(lId)
{
var ob;ob=new Array;
var appVer=parseInt(navigator.appVersion);
var isNC=false,isN6=false,isIE=false;
if (document.all && appVer >= 4) isIE=true; else
if (document.getElementById && appVer > 4) isN6=true; else
if (document.layers && appVer >= 4) isNC=true;
if (isNC)
{
w_str = "document." + lId;ob[lId] = eval(w_str);
if (!ob[lId]) ob[lId] = _HpbFindHiddenObj(document, lId);
if (ob[lId]) ob[lId].visibility = "show";
}
686 :
685:2007/04/29(日) 01:59:40
if (isN6)
{
ob[lId] = document.getElementById(lId);
ob[lId].style.visibility = "visible";
}
if (isIE)
{
w_str = "document.all.item(\"" + lId + "\").style";ob[lId] = eval(w_str);
ob[lId].visibility = "visible";
}
}
function _HpbFindHiddenObj(doc, lId)
{
for (var i=0; i < doc.layers.length; i++)
{
var w_str = "doc.layers[i].document." + lId;
var obj;obj=new Array;
obj[lId] = eval(w_str);
if (!obj[lId]) obj[lId] = _HpbFindHiddenObj(doc.layers[i], lId);
if (obj[lId]) return obj[lId];
}
return null;
}
//-->
Javascript は Web 制作板、CGI は Web プログラミング板へ。
688 :
685:2007/04/29(日) 02:10:40
移動します
ちょっと寂しい気持ちになったが為になった
ありがとうム板さようならム板
690 :
デフォルトの名無しさん:2007/05/01(火) 10:29:45
(´Д`)ノシ
ORマッピングなどでよくStatementクラスのProxyを使っていますが、
これってProxyしなくて、デコレートすればよくない?って思ったのですが、あえてProxyを使うメリットはあるのでしょうか?
692 :
デフォルトの名無しさん:2007/05/02(水) 21:00:39
JAVAでxlsファイル(計3シート)を
csvファイルに変換したいのだが・・・。
どうしてもcsv変換後は前と(セルの中身)配置が違う。
どうしたらいいんだ〜!誰か・・
エレガントなロジックをおしえてくれぇぇ!!
なお、読み込みにはPOIを使用してます
693 :
デフォルトの名無しさん:2007/05/02(水) 21:23:22
>>692 エレガントも何も・・・。
何がどう「配置が違う。」のか分からない。
もう一度質問を読み直してみろ。
まるちんこ
>>691 デコレートは、オブジェクトを作る時点ですでにそのクラスになっていないといけないから、できてしまったStatementオブジェクトに機能を追加するならProxyではないだろうか?
オブジェクト生成がコントロールできるならデコレートが使えるけど、オブジェクト生成はコントロールできないから。
デコレートだと登場オブジェクトはひとつで、Proxyだと登場オブジェクトは元オブジェクトとProxyオブジェクトの2つになる。
コンストラクタの実行に時間がかかるクラスを作ったんで、カウンタ設置してその値に応じてJProgressBarで経過を表示しようとしたんだが、コンストラクタの実行中はバーが全然更新されなくて、実行終了後に更新されてバーがMAXになる。
どうすれば・・・
697 :
デフォルトの名無しさん:2007/05/06(日) 01:38:55
JTextFiedlやJTextAreaで全角文字が入力されたのはどうすれば検出できるでしょうか?
actionPerformed、keyPressed、keyTypedでは半角文字の入力しか検出できなくて・・・
698 :
697:2007/05/06(日) 01:51:52
>>697 自己解決しました・・・
普通にkeyTypedで検出できますね。
keyTyped時に行ってる処理の影響で検出できないようになってましたorz
>696
ひとつのクラスに処理を詰め込みすぎている可能性があります。
まずはクラス設計を見直しましょう。
>>696 長い処理の間は、画面の更新されない。
適当にrepaintかなんかよびだす
>>699 >>700 ありがとうございます。
あとSwingWorkerというものを使う手もありました。
>>701 標準バンドルのSwingWorkerは、JavaSE6以降なので一応気をつけて・・・
でも、コンストラクタに処理を詰めすぎなのはProgressバーの進捗と関係なく
やっぱちょっとコード見直した方がいいと思うよ。
703 :
701:2007/05/07(月) 23:27:37
>>702 最近SE6になったのを知って早速いれました。
やっぱつめすぎはだめなんですね。
自分も作ってるとき少し感じてたんですが・・・
見直してみます。
704 :
デフォルトの名無しさん:2007/05/08(火) 11:23:15
>>1 ではさっそく質問します。
最近PCを購入したのでそれでJavaを始めたいとおもいます。
どうすればいいですか?
いろいろインストールする
必要なものの目安としてはeclipse,JDK,tomcat,各種DBどれか,struts。
0から覚えるの大変そうなので書いてて悪寒がした。
まずJDKだけインストして、他は色々落ち着いたらで。
>>706 いやいや、始めに色々列挙したけど最後ぶった切りすぎだろw
eclipceは入れておいた方が便利すぎる
eclipse確かに便利だが、素人の内は手動でやった方がよくないか?
709 :
704:2007/05/09(水) 11:55:16
アドバイスありがとうございます。
まずはJdkだけをインストとのことですが、
それはどうやればいいんでしょうか?
jdk インストール でググれ
終わったら 環境変数 java でググれ
711 :
704:2007/05/09(水) 14:28:41
ありがとうございます。
JDK1.3.1というのをDLできました。
>>711 釣りか?釣りなのか?敢えて釣られてやる。
せめてJDK 6u1にしてくれい(よりによって1.3.1…)
あと「Java SE 6 ドキュメント」もあわせてDLしておいたほうがいいぞ
釣りにしか聞こえんwってかそっち落とす方が難しいだろ・・・
wwwwJDK1.3.1 持ってこれるってどれだけ熟練してんだかww
初心者です。JDK1.3.1というのをダウンロードする方法を教えてください。
もう釣られないんだからね!
JDK1.3.1 でググって最初のページ
っていうか普通の落とせ
JDKでググって出てきたダウソページから過去のダウンロード見たいなの
たどっていけばダウソできる。
余程の事が無い限り落としてくるな。何故かというと落とした後のサポートレスがダルイからだ。
普通ならJavaSE6、事情があってもJDK5までにしろ。
1.4以前は知っている奴(というかのっぴきならない事情のあるやつ)のみ使え。
719 :
704:2007/05/10(木) 15:56:08
>>712 ありがとうございます。
そっちの 6u1と SE6ドキュメントというやつのDLに挑戦してみようと思います。
ストリングのハッシュコードから文字の復元はできますか?
ハッシュコードでユニークになるということは、復元できるのかなと思うのですが。
ただ復元メソッド的なものは無いので・・・
721 :
704:2007/05/11(金) 13:25:15
>>720 できない。
そもそも、String#hashCode() の戻り値が完全にユニークである事は保証されてない。
>>723 ええええええええええええええええええええ!そうなんですか。
じゃはすべてのハッシュマップへのキーを今から見直さないと・・・
>>724 もしかして、万一
「HashMap にキー "A`" のエントリとキー "BA" のエントリの両方は格納できないのでは?」
と心配しているのでしたら、
内部の 2111 にあたる欄に2つのエントリとも格納されるだけなので、
気にする必要はありません。
>>725 どうもありがとうございます。
先走りました。
等しいと判断される二つのもののハッシュ値は同じにならないといけないが、
等しくないものに対するハッシュ値が同じになっても構わない。
できるだけ違った値になった方が少し効率がよくなるだけ。
Stringの情報をなるべく短くして管理したいと思っています(メモリ節約)。
長さに制限が無いStringを、固定の文字長でユニークにすることはできないと思っていますが、
MessageDigestを使えばできる的な事がどこかで紹介されていました(理屈は書いてませんでしたが)。
確かにパスワードなどでよく使用しますが、MessageDigestで上記が実現できるのでしょうか?
> MessageDigestを使えばできる的な事がどこかで紹介されていました(理屈は書いてませんでしたが)。
無理。
・Stringに必要なメモリ > MessageDigest に必要なメモリが複数あれば、
別々の String に対してMessageDigestが衝突する可能性がある。
・MessageDigest に必要なメモリ > String に必要なメモリであれば、
MessageDigestを使うと逆に必要なメモリが増える。
・そもそも、MessageDigest からは String を復元できない。
>>728 そういうことをやりたいならハッシュやダイジェストがキーワードではない。
普通に可逆圧縮しろ。
圧縮後のデータを管理するときに、さらにハッシュを使うというのはありだけど、
それもメモリ容量の節約にはならない。
ハッシュはメモリを余分に使うことで時間を節約する技法。
ハッシュが事実上一方向関数であるということを認識すべき。
特にMessageDigestのようなものは多対一の写像なので元に戻すのは不可能。
自分で可逆圧縮の実装をするのが面倒ならDeflaterとInflaterがある。
メモリ節約を考えるほどだから、それなりに長い文字列を扱おうとしているんだろうけど、
もし短いようなら、この圧縮方法は向いていないので注意。
使い方のサンプルがDeflaterの説明にある。
>>730 ありがとうございます。
調べてみます。
ちょっと話がずれますがMessageDigestも多対一ということは、
パスワード認証で、入力→ダイジェスト→DBのダイジェストされた値と比較 の流れで実装していますが、
誤認証の可能性もあるということでしょうか。
現在パスワードのマックスは100バイト(全角も可)になっています。
>>731 ダイジェストを得るのに使用しているハッシュ関数が優秀であれば、
誤認証(異なるパスワードで同じダイジェストを生成)の可能性は、
入れるパスワードの数(長さではない)にのみ依存する。
例えば、ハッシュ値長160ビットでダイジェストするとし、
入力された2^10=1024個のパスワードで同じダイジェストになる確率は、
1/2^70程度となる(
ttp://burtleburtle.net/bob/hash/hashfaq.html#unique)。
ということで、管理するパスワードの数にもよるけれど衝突する可能性は結構低い。
でも、衝突しないという保証は決してできない。
>>732 ○ パスワードで同じダイジェストになる確率は、
× パスワードの中で同じダイジェストになるものが存在する確率は、
>>730 ありがとうございます。
Deflaterのjdocを見ましたがサンプルらしきものがなかったです。
>>735 君の目は節穴だな。
DeflaterにもInflaterにもサンプルコードがあるというのに。
あああ
WEBコンテナ実行中にeclipseでデバッグ接続して、ソース変更でホットコードリプレイスによりコード即時置換できますが、
linux環境で、WEBコンテナ実行中(デバッグモード)中に、修正したclassを使用してコードを置き換えることはできないでしょうか。
たとえば下のようなコマンドがあるとか。
ホットコードリプレイスができるコマンド 修正クラス
ランタイムのrt.jarのクラスファイルを置き換えようと思い
rt.jarをjar xfv rt.jarで解凍した後、java.io.File.classを独自なものに置き換えて、jarcfv rt.tar rtってやったけど
圧縮サイズは元のものとぜんぜん違うし、javaを実行すると、java.lang.Object.classが見つかりませんってなります。
どこがいけないのでしょうか?
>>741 無茶するなぁ
動作保証されてる提供クラスを俺様クラスに置き換えって…
悪いことは言わん、元に戻してFileクラス拡張することを考えろ。
>>741 そういうときの為のOOPだと思うんだけど…
ちょっとライセンス斜め読みしてみたけど、rt.jar内のクラス入れ替えってソフトウエアの改編にあたらね?
利用許諾違反になっちまわないか?
> 743
OOPってのは、想定外の用途に対応できるような万能ツールじゃないからな。
> 744
OpenJDKを待てってことだな。
ということでOpenJDK使ってソースからビルドしなおすほうが安全かもね。
>>745 OOはともかくとして、普通は java.io.File を改変するよりも改変せずに済ませる方法考えるけど。
配布とか保守とかの手間考えるとコスト高いし。
ってか、なんで
>>741 は java.io.File 改変したかったんだろ?
Fileに機能拡張したかったんでそ。
APIが返してくるオブジェクトにその機能が欲しかったとか。
欲しいフィールドがprivateだったとか。
まあ、privateメンバにアクセスするならリフレクション使えば問題ないが。
あとは、デフォルトコンストラクタが欲しいとかかな。
JAXBみたいに、スーパークラスにデフォルトコンストラクタがなかったら使えないようなライブラリがあるから、継承して拡張とかは意味なかったりするし。
> privateメンバにアクセスするならリフレクション使えば問題ない
こーゆー感覚も怖いけどな。
> あとは、デフォルトコンストラクタが欲しいとかかな。
これはフレームワークが対応してりゃ 1.6で追加された
java.beans.ConstructorProperties が設定されたコンストラクタがあれば必要なくなってくかも。
まぁ、無視される可能性も高いけど。
privateで持ってる値を見たかったらソース書き換えるかリフレクションしかないだろ。
標準APIでネイティブ関連の情報を持っていたり、フレームワークに関する重要な情報があったりすると、はっきりいってそれしか選択肢はないしな。
ConstructorPropertiesって、複合型のプロパティ指定するやつだから、デフォルトコンストラクタがないことの解決にはならんような。
5.0対応のライブラリもようやく出揃ったくらいなのに、6の機能使ったライブラリなんか皆無だな。
> はっきりいってそれしか選択肢はないしな
private で持ってる値を見なくても良い方法を考えた方が……
> ConstructorPropertiesって、複合型のプロパティ指定するやつだから
プロパティに初期値与えられるようにするもの。
デフォルトコンストラクタ + setter/getter だけだったものが
@ConstructorProperties 付きコンストラクタ + getter でも表現できるようになるわけで。
ブートストラップを変えればすむだろ?
741ですが、やりたかったことはフレームワークが使用しているファイルを調査したかったから。
ソース添付してFileのコンストラクタで条件付ブレイクを張れば簡単にできるけど、
しょっちゅう呼ばれるクラスに条件付ブレークを設定するとものすごく遅くなるので、Fileのコンストラクタで
設定ファイルからファイル名を取り出して、そのファイル名でコンストラクタを呼んだときにブレイクさせたかっただけ。
>>750 privateで持ってる値に興味があって、普通には見れないときには、ほとんどの場合ほかに手はないよ。
>>753 private になってるって事は他人が見てはいけない/見なくてもいいはずのもの。
見ないで済む方法を考えるのが先っしょ。
だから、見ないで済む方法がないときにどうすんのって話してんのさ。
低レベルに近かったり、フレームワークに近かったりするほど、そういうことは多々ある。
きれいごとじゃプログラム組めないよ。
privateになってるってことは、他のクラスからも見えないってことだから、そのクラスにアクセス手段がなければリフレクションしかないってことだからな。
>>755 > だから、見ないで済む方法がないときに
だから、
>>747 はそれを確かめずにリフレクションの話してるから怖いって言ってるのさ。
水掛け論だが754のレス先の753では「普通には見れないとき」とわざわざ断ってるわけだが。
フレームワークの機能拡張する場合には、そういう場面に遭遇することがある。
フレームワーク作者は、フレームワークを単純に利用することだけ考えがちで拡張についてはあまり考えが至らないことがあるからな。
privateになってるってことは、privateって書いたやつが「見てはいけない/見なくていいはず」と思ったというだけであって、そうではないこともある。
特に、privateのフィールドまでたどりついたときには、他に手がないことがほとんど。
>>758 まずはフレームワークの修正が本筋で、
どうしようもない時は回避策として利用してもいいかもしれないが
でも、リフレクションとか使った拡張はあくまで回避策と認識しておくのがよいな。
セキュリティーマネージャとかがいると、プライベートアクセスに問題があるの?
>>753 逆に言うと、それまで 2〜3個レスがあるのに断り書きすら出てこないわけじゃん。
怖いよなぁ、やっぱり。
> そうではないこともある。
読む方が そう思わなかったというだけであって…… と言い返されたら水掛け論。
あんまし自分の能力を過信しない方が良いと思うよ。
>>760 ReflectionPermission "suppressAccessChecks" が許可されてないと、
AccessibleObject#setAccessible が SecurityException 食らう。
基本は拡張には開かれてて、修正には閉じられている。
個人的には、privateアクセスやfinalクラスは好きではない。
本人がそうしたくても、他人から見たらそこに有意義なコードがあれば再利用したいし、
拡張の発想なんてたくさんの人が多岐に持っていると思う。
privateやfinalにしないで、コメントで注意してね見たいなjdocタグがあればいいと思う
>>763 たしかに!Stringやラッパークラスがfinalがゆるせない。
注意できない奴等が引っ掻き回しやがるから利便性を捨ててでも制約をかけざるを得ないんじゃないか
>>1 おれはこの3年間必死にJAVAを勉強してきた。
実際クソみたいな言語仕様だが改良に改良を重ねた1.5はチト使える。
よって、まともな言語としての扱いを受けるスタートラインにやっと立ったと言える。
ってあるけど、javaよりいけてる言語は?
Q.いけてる言語は?(複数選択可)
□JAVA ☑3年間必死に勉強してきたJAVA ☑Java □java □その他( )
JavaFX , Pnuts
>> 764
Stringとかラッパークラスは、実装上しかたない部分もあるんだよ。
誤解してるやつ多いみたいだけど、JavaFXはJava言語で使えるよ。JavaFX用の言語はJavaFXScriptだ。
>>761 レス先に書いてあることを無視して話すすめられたら、やりとりにならんわけで。
ひとりで怖い怖い言ってればいいよ。
マルチスレッドである変数に並列アクセスする場合、
代入、参照の先勝ち、後勝ちがどうでもいい場合でも、ロックをして同期をしなければならない?
スピードアップが求められる処理なので、なるべくロックはしたくないなと。
もっというと、javaの場合、複数ロックしたとき開放される順番がロックを書けた順番ど通りになることが保障されないから
ロックかけたくないんだよね。今回順番が大事だから。
読み込みスレッド
multiReferenceInstance = overrideInstance;
使用スレッド
operationInstance = multiReferenceInstance;
operationInstance.xxx();
Cの場合だと、確か代入でアドレス書き込み中にでも、その変数アドレスの読み込みが走って
アドレスがおかしくなるからだめだったような。
>>751 -Xbootclasspath/p:でいけました。
privateアクセスで、setAccessible(true);やった後setAccessible(false);にする必要時はありますか?
影響があるのは、setAccessible(true);かけたインスタンスだけですか?
776 :
デフォルトの名無しさん:2007/05/21(月) 16:54:18
半角で-0000と入力した場合,1文字目が記号のためエラーとなる処理を行いたいのですがどうすればいいでしょうか?
if("-0000".startsWith("-")) throw new Error("記号ではじまってるよん");
boolean is記号(char c){
//cが記号ならtrueを返す処理を、776のプログラムでの記号の定義に従って書く
return c == '-';
}
void hoge(String str){
char c = str.charAt(0);
if(is記号(c)) throw new Exception("記号のエラー");
//続きの処理
}
779 :
778:2007/05/21(月) 17:11:18
先をこされて悔しいのでバリエーションを
if("-+/*・・・(記号の羅列)・・・".indexOf("-0000".charAt(0)) >= 0) throw new Error("記号っす");
いやきっと
>>776は
> 半角で-0000と入力した場合,1文字目が記号のためエラーとなる
という方法は知っていても
> 処理を行いたいのですがどうすればいいでしょうか?
という処理の行わせ方がわからないんだろう
つまり
>>776はJavaを見たことはあるけどやったことがない新人と捉える
最適なアドバイスは「プログラムを書いてパソコンに処理を行わせればいいよ」と言うことだ
わかった。
プロにまかせろ!
ってことか。
String str = "aaa";
この場合、Stringクラスの適当なコンストラクターが呼ばれるのでしょうか?
>>782 すいません。乗ってました。
String str = "abc";
は、次と同じです。
char data[] = {'a', 'b', 'c'};
String str = new String(data);
>>783です。
上のように書いてありましたが、new String(char[]);にデバッグを張ってもとまりません。
new String(new char[]{'c', 'c'}); は止まりますが、
"bb";は止まりません。なぜでしょうか。
>>784 止まるわけないよ。
だってString str = "abc";はnew String(char[])を呼んでないんだから。
コンスタントプールから"abc"のエントリーを取り出しているだけ。
"abc"のインスタンスが無いときにどう生成するかはVMの実装次第。
Stringをnewして<init>をinvokespecialするString str = new String(data);と違って、
String str = "abc";はldcしているだけ。
>>785 ありがとうございます。
コンスタントプールはJDKにはなかったですが、標準クラスではないのでしょうか?
あとldcってなんですか?
>>786 コンスタントプールってのは、クラスファイルとかVMの方の用語だ。
ldc は定数をロードする JVM のインストラクション。LoaD Constant かな?
Stringのような不変クラスは、中身書き換えられる心配ないから
インスタンス使い回しをした方が効率いいから使い回せるもんは使い回してる、と。
>>786 詳しくはJava VM仕様を。
でも、仕様文書そのものよりも、それを解説しているものがあれば、その方が理解しやすいとは思う。
String str = "abc";とかString str = new String(data);が、どうコンパイルされたかは、
クラスファイル名がHoge.classならjavap -c Hogeとやれば生成されたバイトコードが見られるから、
シンプルなプログラムを書いてみて、バイトコードを比較してみれば違いが分かる。
>>789 確かにnewと""ではコードが違いました。""の時クラスファイル内部ではnewしていなかったので、
VMが何らかの方法でStringを生成して、ldcでプッシュしているって感じですかね。
リテラルからのStringクラス生成は、VMレベルなので、ブートストラップを変更しても制御できそうにもないですね
っと、とりあえず自分で考えた結論ですがあっているでしょうか。
xml文章のある要素を取得したタイミングで、スタックとレースをダンプしたいと考えています。
javaのxml処理について調べました。おかしい点があれば指摘していただけないでしょうか。
・読み込み向けはsax、更新する場合はdomと、jdkでは2つのインターフェースを定義している。
・sax、domを実装したモジュールが各ベンダーから配られている。
基本、すべてのベンダーはsax、domを実装している。
・jakartaなどのxml関連ライブラリも、sax、domAIPを利用(拡張実装もあり)している。
・なので、ブートストラップでNodeクラスを変更したクラスにパスを通し、値をセットするときのコードを変更し、
xxだったらトレースをダンプするコードを書けば、
目的の要素をどこのクラスから読み込んでいるかを追うことが出来る。
>>792 要素を取得したタイミングをいうより、
ある要素を処理するタイミングという訳ね。
静的な解析手法でなくてよいのだったら、
eclipseなんかのデバッガで、DOM,SAMの実装クラスの要素処理のコードの所で
ブレイクポイント置いてそこで止めてみては?
だれか助けてください!!
jdbやeclipseのデバッグ、その他なんでもかまいませんが、
あるインスタンスを参照している箇所(ソースの行数またはクラス名のみでも可)をリストアップすることはできるでしょうか?
classの参照って、普通にeclipseで見られなかったっけ?
>>795 String hoge = "hoge";
bean1.setString(hoge);
bean2.setString(hoge);
bean3.setString(hoge);
としたときに、
このローカル変数のhogeの参照サーチってやると、
bean1、bean2、bean3って出てくることを望んでます。
そんなことできましたっけ?
>>792 読み込み・書き込みの違いじゃなくて、saxは1タグ・1属性ごとのコールバック処理、domは全部一気に取得してDOMツリーを扱う、という違いです。
実装てきには、DOMはSAXを使って読み込みをしたXMLツリーの全体をDOMオブジェクトとして返すという感じです。
そのため、DOMの場合はすべてのタグが対応したちゃんとした形のものしか読めません。不完全なXMLファイルを読み込んで正常部分だけは処理したいなどという場合にはDOMは使えません。
あるタグを読み込んだ時点で処理を行うということはできません。
一方SAXはコールバック形式でプログラムを組むので、複雑なプログラムを書く必要があります。
で、その欠点を補ったStAXというライブラリがJavaSE6から追加されています。
StAXは逐次読み込み/書き込みを行うライブラリですが、プログラムが組みやすい形式になっています。
対応ライブラリを使えばJava2SE5.0以前でも使えます。
ということで、今回の件ではStAXをオススメします。
他に、JavaにはJavaBeansとXMLの相互変換を行うJAXBというライブラリもあります。
XMLファイルの中身にあまりこだわらず、データとしてJavaに取り込みたいという場合には非常に楽です。
>>792 プロファイラー使ったことないけど、プロファイラーならトレースが出ると思うし追えるんじゃん
プロファイラー自体がどのような技術で実現しているのかわからないけど
メソッドをトレースするからjavaエンジンレベルで何かしているのだろうね。
メソッドの引数はローカルスコープでしか有効でないので、
ローカル変数みたいに値を代入したりしても問題ないですよね?
xx(String str) {
str = str.toUpper();
.
.
}
801 :
デフォルトの名無しさん:2007/06/01(金) 11:03:38
おk
>>800 言語仕様的には問題ないけど、
たまにコーディングルールで禁止とか非推奨な場合もあるから気をつけた方が良いかも。
803 :
デフォルトの名無しさん:2007/06/05(火) 01:12:03
JavaでWebアプリ作った場合、一般的にFullGCかかる頻度って
どの程度が理想的なんでしょうか?
根拠はないけれど10分くらい?
アプリによる。以上。
jadでデコンパイルできますが、行数が元のソースと合いません。
そのため、eclipseのjadエディターでブレイクポイントを指定しても、同期が正しくない状態で止まります。
行数が元のソースと同じ状態で出コンパイルすることはできないでしょうか。
またはメソッドを定義している行数だけでも知る方法はないでしょか?
リフレクションでprivateにアクセスすることはできましたが、
finalのフィールドを変更することはできないでしょうか。
URLクラスのメモリ用なんてありますか?
new URL("mem://xxx");
よくフレームワークで、リソースをストリームではなくURLのみで受け付けるものがあり、
ByteArrayOutputStreamの場合、一度ファイルに書き込まなければならないので
そこを何とかしたいです。
>>808 無理。
ファイル作りたくないだけなら、FTPサーバかHTTPサーバになりすまして
そのURL渡す方法もあるけど、ファイル作るよりよほど手間かかるぞ。
>>806 finalはコンパイル時に実値に置き換えられるから、無理
たとえば
class A{
public static final int a = 5;
}
があるとき
class B{
void a(){ System.out.println(A.a); }
}
は
class B{
void a(){ System.out.println(5); }
}
としてコンパイルされる。
その後a=10としてclass Aだけをコンパイルすると、class Bではa=5の値が使われ続ける。
>>808 ここはム板だ。無ければ作ればいい。
URLで指定して読み込みたいんだから、そのURLを開いて得られるストリームは、
ByteArrayOutputStreamでなくてByteArrayInputStreamでいいんだよね?
必要ならByteArrayOutputStreamをパイプ入力ストリームに繋げばいいし。
class MemURLStreamHandlerFactory implements URLStreamHandlerFactory {
public URLStreamHandler createURLStreamHandler(String protocol) {
if (protocol.equals("mem")) return new MemURLStreamHandler();
else return null;
}
}
みたいなファクトリを作ってURL#setURLStreamHandlerFactoryでセット。
URLStreamHandlerを継承したMemURLStreamHandler内でopenConnection(URL)を実装して、
URLConnectionを継承したMemURLConnectionを返すようにする。
MemURLConnectionのgetInputStream()で該当するByteArrayInputStreamを返してやるように実装する。
おおまかにはこれで、
InputStream in = new URL("mem:").openStream();
みたいにしてデータを読み込めるようになるので、
URLとしてnew URL("mem:")を、そのフレームワークに渡してやればいい。
まあ、どのストリームを返すかをURL表記でどう表現するかとか、
それを解釈して実際のストリームにどう関連付けるかとか、細かな実装はがんばってみてくれ。
決まったByteArrayInputStreamを返すURLならプロトコルの"mem:"だけでいいし実装も簡単だ。
URL#setURLStreamHandlerFactoryの呼び出しはJVM動作中1回だけなので注意して。
>>811 できました。
ありがとうございます。
URLがfinalだったので、これはどうしようもないと思っていたのですが、
こんな機構が用意されていたのですね。
while (1000回) {
"xxx".replaceAll("xxx","yyy");
}
この場合、無駄に正規表現のコンパイル処理が走るので、
コンパイルしたMatcherでreplaceしたほうが、処理が早くなるでしょうか?
実際試しましたが、ほとんどかわりはなかったですが・・・
>>814 1000回くらいでは差があまり見えないのでは?
int i = 100000;
long a = System.currentTimeMillis();
while (--i > 0) {
"xxx".replaceAll("xxx","yyy");
}
System.out.println(System.currentTimeMillis() - a);
と
int i = 100000;
long a = System.currentTimeMillis();
java.util.regex.Pattern p = java.util.regex.Pattern.compile("xxx");
while (--i > 0) {
p.matcher("xxx").replaceAll("yyy");
}
System.out.println(System.currentTimeMillis() - a);
と
int i = 100000;
long a = System.currentTimeMillis();
java.util.regex.Matcher m = java.util.regex.Pattern.compile("xxx").matcher("");
while (--i > 0) {
m.reset("xxx").replaceAll("yyy");
}
System.out.println(System.currentTimeMillis() - a);
だと、1番目は2,3番目より時間かかるね。2,3番目はあまり違わない。わずかに3番目が速いか?
コンパイラやVMでの最適化の関係もあって正確な測定ではないけれど。
実際に扱うデータ量で測定してみてあまり変わらないのであれば、記述の分かりやすさを選べばいいと思う。
>>815 ありがとうございます。
100000回くらいで差が出てくるほどでした。
Pattern#flags()でフラグのセットが返りますが、Pattern.DOTALLが含まれているかの確認はどうすればよいのでしょうか。
Cでビット演算はしたことがあったのですが、忘れてしまいました。
(Pattern#flags() & Pattern.DOTALL) != 0
>>814 気にするほど遅いならばそのメソッド自体が提供されていないと思う。
819 :
デフォルトの名無しさん:2007/06/17(日) 14:34:08
符号無し演算のオーバーフロー判定ってどうやるの?
具体的には、文字列からintへの変換で、"0xffffffff"は
OKだけど、"0x7ffffffff"はNGって扱いたいんです。
resultが前の桁を適用した結果、
digitが今回の桁の値だとして、
Cみたいに符号無しの比較が出来れば
unsigned value = (result * radix) + digit;
if (value <= result) {
// オーバーフロー
}
こう書けるんだけど。
先に右シフトして桁を落としてやる以外に思いつかない・・・。
if ((((result >>> 16) * radix) + digit) >= (1 << 16)) {
// オーバーフロー
}
>>819 要件がよくわからんけど、こんなのじゃ駄目?
String str = "0x7FFFFFFFF";
int value = 0;
try {
value = Integer.decode(str).intValue();
} catch (NumberFormatException nfe) {
//オーバーフローやフォーマット不正
}
>>819 桁読み込んだ後に、result の更新と判定の順番変えて
digit = .....; //一桁読み込み
if (0xFFFFFFF < result) {
// オーバーフロー
}
result = (result * radix) + digit;
822 :
819:2007/06/18(月) 07:53:06
自己解決しました。
glibcのソースやら何やら眺めてたら、
基数毎にこれ以上桁増やしたら必ずオーバーフローする
限界値を計算しておいて確認する以外は無理っぽいです。
>>820 decode()じゃ結局parseInt()と同じなので、
0x80000000以降がオーバーフローしちゃうんです。
よくよく考えてみると、符号無し演算が可能でも、
>unsigned value = (result * radix) + digit;
>if (value <= result) {
これで判定出来ないケースがあるんですね。
1.4でコンパイルしたクラスを、1.5のエンジンで実行させることはできるのでしょうか。
jakartaなどのライブラリのダウンロードで、JDKのバージョンが乗っていないので動くような気がするのですが。
試せば早いのですが、モデム環境なので1.5のダウンロードが・・・
ちなみに、javaのエンジン(ランタイム?)としてbeaが出しているjrokectなるものがありますが、
仕様はsunが提示したものにのっとっているので、使う側としてはsunとbeaどちらを使用しても正しく動作するけど
処理が早い、遅いの差があるから、好きなのを選んでよいですよって感じなのでしょうか?
> 1.4でコンパイルしたクラスを、1.5のエンジンで実行させることはできるのでしょうか。
できる。
>>823 >好きなのを選んでよいですよって感じなのでしょうか?
よいですよ
>>824 実行できましたが、実行が恐ろしく遅いです。
ただ、任意の処理の2回目からは通常通りのスピードなので、
おそらくクラスをロードするときに時間がかかるものなのでしょうか?
ファイルのエンコードがEUCかSJISかを判断してから、そのエンコードでファイルを読み込みたいのですが、
ファイルのエンコードを判断する方法がわかりません。
そうすれば判断できるでしょうか。
イメージはUNIXのnkfのように、ユーザーに元のエンコードを意識させず、
特定のエンコードでデータを取得させたいのですが
>>827 Hotspot というキーワードと
JIT というキーワードでググってみるといいかもしれない。
後は、クラスのローディングコストに興味があれば Class Data Sharingとか。
>>830 ありがとうございます。
JDK1.4なのですが、実行すると5.0をサポートしていないというようなエラーが出ました。
java.lang.UnsupportedClassVersionError: org/mozilla/universalchardet/UniversalDetector (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at other.Free.main(Free.java:37)
普通にJISAutoDetectじゃだめなん?
>>832 ClassVersion 50.0 だから 5.0 とは違う。
ClassVersion 50.0 って Sun の JDK だと 1.6 が吐く奴だっけか?
IMAPでメール受信できるクラスありますか?
commonsのNetというパッケージにPOP3Clientクラスがあり、これにより簡単にメールを受信することができました。
但し、メール情報の戻り値がReaderで、ヘッダーを含む生のデータとして出しか取得できません。
受信メールのバイトデータから本文やヘッダーを取得できるクラスはJDKのAPIにあるでしょうか?
JavaMail
839 :
デフォルトの名無しさん:2007/06/22(金) 21:32:52
HATS(IBMの製品。HostPublisherの後継。)を使って、ホスト(PL/I)画面
の見かけだけをWeb化し、JSP化しようと思います。
この時、ホスト画面で「入力不可のテキストボックス」になっていて次画面
に値が引き継がれるものは、HATSで変換した後もやはり「入力不可のテキス
トボックス」になってしまうのでしょうか?例えば、Web化した時に、
<input type="text" value="次画面に引き継がれる値" disabled>
となってしまうと、ユーザがインターネット一時ファイル内の「次画面に
引き継がれる値」の部分を改竄してしまうことを懸念しているのです。
ホスト用のエミュレーターで、「次画面に引き継がれる値」の部分が保存
されるなら良いのですが、どなたかお分かりでしょうか?
それはHATSの人に聞くしかないだろ
>>831 まさにこれでした。
ありがとうございます。
>>839 そういう金がかかってる製品の細かいトコを
掲示板で解決できると思うセンスはやばいです
Serializableを実装する場合、serialversionUIDを実装しないと何が問題になるのでしょうか?
実装しなくても処理は正常に動いています。
>>844 ありがとうございます。
参考になりました。
linux環境にて、weblogicのWEBアプリを起動しています。
プログラムのどこかで不具合があり、アプリが応答しない状態です。
CPUがフルなので、多分どこかで無限ループしてます。
しかもリクエストスレッドをすべて使用中にしてしまい(おそらくすべてで無限ループ)、
サービスが全滅している状態です。
デバックモードで起動していないですが、この状態のスタックトレースをダンプすることは可能でしょうか。
JDK1.4です。
>>847 QUITですか?
そのダンプってC言語のダンプになりますかね?
>>848 すみません。何が何だか分かりません。
言葉に出来る違和感は、JavaじゃなくてCが出てくる辺りくらいまでです。
>>847 のシグナルを該当プロセスに送ればスレッドダンプがコンソールに取れる。
まだJVMが生きていたら。
コアダンプが欲しければ・・・すまん、linuxはよく分からん。Solarisなら分かるが。
>>849 ありがとうございます。
javaがシグナルを補足して、javaの処理としてすべてのスタックをダンプして終了する処理になっているということですよね。
確認してみます。
>>850 あー、遅いかもしれんけど・・・kill -3では、スレッドダンプするだけで
終了はしないはずですよ。
852 :
デフォルトの名無しさん:2007/06/28(木) 16:15:36
JSP では、 jsp:include タグよりも <%@ %> ディレクティブのほうが高速だ
という認識は当たってますか?
853 :
デフォルトの名無しさん:2007/06/28(木) 21:37:36
>>852 どちらも一度実行し、ファイルの更新は、もうしないとしよう。すると、
今後はどちらも、同じ程度の行数のクラスファイルを実行するだけだから、
速さは殆ど変わらないはず。
854 :
デフォルトの名無しさん:2007/06/29(金) 09:37:23
>>853 あれ?jsp:include は実行時にインクルードするんじゃなかった?違うか?
855 :
質問!!:2007/07/02(月) 23:21:50
こんにちは。
WEBアプリケーションでよくファイルアップロード機能があると思います。
その仕組みとして直接クライアントで指定したファイルを
サーバにアップロードしないでDBにBLOGなどで登録は可能でしょうか?
可能であればその仕組みを教えてください。
よろしくお願い致します。
856 :
デフォルトの名無しさん:2007/07/03(火) 09:37:01
ん?
DBがサーバーにないってこと?
Javaでは、Unicodeを使った識別子名が使えますよね。しかし
int Δx;
int 凅;
とすると、上は通りますが下は「\8895 は不正な文字です」とエラーになります。
8895は16進数で0x22BF、つまり凾フ文字コードです。
このように、使用不能な文字コードには、他に何があるでしょうか? JDK1.4です。
全角スペース
全角数字も怪しかった気がする
>>857 Character#isJavaIdentifierStartとCharacter#isJavaIdentifierPartに簡単な説明が書かれてある。
実際に分からない時はこのメソッドの返値の真偽を見ればいい。
''は識別子には使えない文字だが、'1'は2文字目以降には使える文字ということに。
ありがとう。java仕様とUnicode仕様の交差点は、まさに伏魔殿ですね
> 使用可能な文字
Java 仕様できちんと定義しているようなので、伏魔殿は言いすぎかと。
20.5.16 isLetterOrDigit 辺りを見ると書いてあります。
IEで見れる時計の作り方を教えて欲しいです。
これを適当なアプレットに埋めこめ。
paint(Graphics g){
g.drawString(new Date() + "", 10, 20);
new Thread(){
public void run(){
try{
sleep(100);
}catch(Exception e){}
repaint();
}.start();
}
update(Graphics g){
}
スレッドをデーモンにする、と仕様書に書いてあるのですが
デーモンにするとしないとでは何が違うのでしょうか?
weblogicにkill -3を送ってスレッドのダンプを取ろうと思っています。
ただ、weblogicのスタートのシェルを他社が製造していて、標準出力のリダイレクトをどうしても許可してくれません。
らちが明かないので、アプリ内でSystem.setOut()、System.setErr()を使って出力先を変えました。
アプリのコンソール出力はうまくいきましたが、killの出力はうまくいきません。
killのイベントはOSレベルなので、nativeメソッドで出力をしているようですが、
System.setOut()ではnativeレベルでのファイルディスクプリタの変更ができないようです(動かして感じたレベル)。
何か対策はないでしょうか。
>>868 以前の質問と同じ人だとすると環境は Linux + J2SE 1.4 かな?
以下のような方法はどうでしょ(但動作未確認)
・リモートデバッグを有効にして、eclipse とかで接続
・(一時的にJava5を使用して)ThreadのgetStackTrace()、getAllStackTraces()を使う
リクエストの受信スレッドが枯渇してるなら、自分でダンプ指示受信用のポートを開けとくとか
・(同じくJava5で)JConsoleを使う
・HPROFを使う。java -Xrunhprof:thread=y,monitor=y,file=<file>... とか。
ただし、かなり重くなるので、再現性が高い現象でないと辛いかも。
あと、他のオプションをOFFにしたりするのも必要。
>>869 ありがとうございます。
1.5にはThreadのgetStackTrace()、getAllStackTraces()なんてあるんですね。
何とか対応できそうです。
これ頂きます。
DESで質問です。下記のクラスを作り、mainから呼び出すとエラーになります。
問題が見つけられません。ご教授いただけないでしょうか。
public class CompressUtils {
private static final Cipher encrypt;
private static final Cipher decrypt;
private static final SecretKey sk;
static {
String kagi = "abc12345";
DESKeySpec dk = new DESKeySpec(kagi.getBytes());
SecretKeyFactory kf = SecretKeyFactory.getInstance("DES");
sk = kf.generateSecret(dk);
encrypt = Cipher.getInstance("DES");
encrypt.init(Cipher.ENCRYPT_MODE, sk);
decrypt = Cipher.getInstance("DES");
decrypt.init(Cipher.DECRYPT_MODE, sk);
}
public static String decrypt(String string) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException {
byte[] base = string.getBytes();
byte[] dec = decrypt.doFinal(base);
return new String(dec);
}
public static String encrypt(String string) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException {
byte[] base = string.getBytes();
byte[] enc = encrypt.doFinal(base);
return new String(enc);
}
}
String ret = CompressUtils.encrypt( "hogehoge" );
System.out.println( CompressUtils.decrypt( ret ) );
>>871 正しくは「ご教示」ね。
それはさておき、この辺りが参考になると思う。
ttp://forum.java.sun.com/thread.jspa?threadID=361230&messageID=3820872 UTF-8 + Base64方式を使ったら、問題なく動いてるように見える。
Base64 だけでなくて、別のエンコード/デコード方法でもいけそうな感じ。
javax.crypto.* パッケージは初めて使ったから、なんか間違ってるかもしれんけど。
変更点:
getBytes() -> getBytes("UTF-8")
encrypt()#return new String(enc) -> return Base64.encode(enc)
decrypt()#decrypt.doFinal(base) -> decrypt.doFinal(Base64.decode(string))
InputStream(FileInputStream)からオープン対象のファイル名を取り出すことはできないのでしょうか?
>>874 無理。FileInputStream 自体がファイル名を記録してないはず。
>>875 確かにファイル名は捨ててますね・・・
ありがとうございます。
jspやテンプレートでstaticメソッド群を持ったをユーティリティクラスを使用したいと思ってます。
その場合インスタンス化する必要があり、コンストラクタを持っているものはnewしてから
テンプレートなのでメソッドを呼んでいます。
特に問題は出ていないですが、
そもそもstaticメソッドの非静的アクセスは、いい悪いを除いて何が問題なのでしょうか?
>>877 インスタンスメソッドと間違えるのでヒューマンミスを助長しやすい。
インスタンスメソッドだと思って上書きしようと思ったらできねーとか、
実はインスタンスが null だったけどクラスメソッドだから動いちゃってたとか。
>>878 なるほど。ありがとうございます。
機構的には問題ないけど、紛らわしいのでやめてねって事ですね。
>>877 staticメソッドは非静的アクセスなんかできないよ。
ようするに、非静的アクセスしてると誤解してしまうのが悪いんじゃねえの?
class A{
static void a(){
System.out.println("a");
}
}
class B extends A{
static void a(){
System.out.println("b");
}
}
A a = new B();
a.a();
なんてコードを書いても、aと表示される。
B a = new B();
a.a();
b
xmlをxpathで検索するにはどうすればよいのでしょうか?
jxpathというフリーな?ソフトがあったのですが、これを使わないといけないのでしょうか?
Collections.synchronizedList(list)した場合、SynchronizedListを返すからダウンキャストするとエラーになります。
これを回避するためには、リフレクションのプロキシを使うと解決できるといわれましたが、
調べても使い方や仕組みが分かりません。
同じようになるって言われても違うクラスだし・・・
すいません。なぜエラーにならない(キャストできる)かを簡単に説明していただけないでしょうか。
継承を考えるとき、ベースのクラスを、
インターフェースとAbstractどちらを選べばいいか良く分かりません。
Collection、Listはなぜインターフェースをとったのでしょうか?
ある程度上位で決まった動作があれば、抽象クラスにしてもいいのではないかと思うのですが。
実際問題、選ぶような局面にならんと思うぞ
Interfaceが必要なのは使う側の話で、
Abstractが必要なのは使われる側の話。
必要がないのにInterfaceとAbstractのどちらがいいとか考えるから
わけがわからなくなる。
>>884 interfaceにできるときはinterfaceにしておけ。
2chみたいに情報が少ない状態で言えるのはそんくらい。
887 :
デフォルトの名無しさん:2007/08/06(月) 00:54:48
Swingアプリからデスクトップにドラッグアンドドロップするにはどうしたらいいですか?
ドロップした箇所にテキストや画像を書き出す感じ。
Swingのドラッグ&ドロップの方法がそもそもわからない?
Swingのドラッグ&ドロップは出来るけどデスクトップにドロップできない?
classファイル実行時の総文字列取得方法を探しています。
実行環境はWindowsXP
SWTを利用しWin32APIをコールして取得できるもくろみでしたが
SWTのDll(?)に未定義でした。
何かよい手段はありませんか。
「classファイル実行時の総文字列」ってどういう意味・・・?
ターミナルとかで
「java Test args1 args2」
と実行するもうそのもの全てです。
説明不足もうしわけない。
その例だと何文字?
引数の文字数は動的ですから
2,3文字の場合もあれば極端に言えば100〜以上の場合もあります。
>「java Test args1 args2」
で、この例だと何文字?
>>894 「java Test args1 args2」の場合
java で5文字
Test で5文字
args1が「ABCDE」として5文字
args2が「あいうえお」として5文字
となり計20文字です。
args1、args2は動的な値です。
>java で5文字
なんで5文字?スペースも数に入れるの?
>「ABCDE」として5文字
こっちはスペース入れないの?
アワワワ間違えました。
訂正します。
「java」で4文字
「 Test」で5文字
args1が「 ABCDE」として6文字
args2が「 あいうえお」として6文字
となり計21文字でした。
argsの要素数+argsの各要素長さ+4
かな?
>>898 目的としているのは文字列長ではないです。
argsの要素中に"や'が入っていると
TestクラスのMainメソッドに正しく値が引き渡されないので
「classファイル実行時の総文字列」を取得しようと考えています。
クラスファイル実行時って
class Hoge{
public static void foo(){
Test.main(null);
}
}
みたいな感じのこともあるから、「クラスファイル実行時の文字列」 じゃだれもわからんと思うから。javaコマンド実行時の文字列って言ったほうがいいと思う
そんなもの取得して何がしたいの?
>>899 > argsの要素中に"や'が入っていると
> TestクラスのMainメソッドに正しく値が引き渡されないので
コマンドラインでjava Test A"Bとかやってargs[0]にA"Bが引き渡されないって意味なら、
それはjavaプログラムの中でどうこうできるものではない。それはシェルの問題だ。
標準のシェルを使ってるならjava Test A\"Bのようにエスケープする。
でも、'についてはCMDは普通に引き渡すと思ったが。
そうでなくて、正しく"を引き渡しているにも関わらずargs要素中に正しく入っていないというのなら、
たぶんTestクラス中でargsの扱い方を間違えて、入っていないようにみえるだけだ。
>>905 確かにその通りでなんですが
起動時にエスケーブ処理をかませられないんです。
だからSWTのWIN32コール機能を使おうとしてたのてす。
そんなことするなら、exe作って前処理すればいいのに
>
>>907 そのとおりですね
ただJavaでは絶対に出来ないと思えなかったので。
cmdのユーザインタフェースから起動する限り何を起動しても
コマンドライン引数での特殊文字の処理は変わらんと思うんだが
Attach APIでAttachされる側からAttachを拒否るにはどうすればよいのでしょうか?
AttachPermissionはAttachする側でのチェックでしかないですし。
| \
|Д`) ダレモイナイ・・オドルナラ イマノウチ
|⊂
|
♪ Å
♪ / \ ランタ タン
ヽ(´Д`;)ノ ランタ タン
( へ) ランタ ランタ
く タン
♪ Å
♪ / \ ランタ ランタ
ヽ(;´Д`)ノ ランタ タン
(へ ) ランタ タンタ
> タン
正規表現で\p{xxx}のいろいろなグループがありますが、
半角かながありません。
正規表現で半角かなを簡単に指定する方法を教えてください。
[\p{InHalfwidthAndFullwidthForms}&&\p{Katakana}] こんな感じ?
[\uff61-\uff9f] の方が簡単かもしんない
>>911 おお、こんなものが。
ありがとうございます。
lhaの解凍クラスってJDKにないのでしょうか?
ないねー。
あれは日本のローカルなものだからねー。
Java で書かれたフリーな lha 解凍ライブラリはいくつかあるみたいだから、それ使ってみたら?
JDK1.3でJavaからJCOMを使ってActiveXを呼び出せるんですが以下のような出力パラメータの受け渡しでJVMがコアダンプします。
func(String outarg1[],String outarg2[])
このようなパラメータを呼び出す方法やライブラリはありますでしょうか。
918 :
デフォルトの名無しさん:2007/09/22(土) 18:52:26
これからやろうとしているのだが、
環境変数をどう設定するのでしょうか?
超基礎質問スマソ。
javaてc/c++よりも全然簡単じゃないですか?
メモリ管理を考えなくていいところは、簡単だな。
リフレクションも評価してやってください
double value;
valueが小数点以下が0の場合のみ Math.round を使いたいのですが、
小数点以下が0(整数)の判断はどうすればよろしいでしょうか?
value % 1 == 0
value - ((int)value) ==0
>>925 valueが1e20とかだとfalseにならないか?
それにオーバーフローとかは置いておいても
そう書くならvalue == (int)valueの方がすっきりしないか?
927 :
デフォルトの名無しさん:2007/09/26(水) 18:07:25
画像上の、指定した座標の色を返してくれる関数ってありますか?
画像ってのは java.awt.Image のこと?
だったら PixelGrabber を使う
int[] color = new int[1];
new PixelGrabber(image, x, y, 1, 1, color, 0, 1).grabPixels();
Color c = new Color(color[0]);
unixのdiffコマンド的なものをjavaで実装したいのですが、
お勧めなクラス・jarなどあれば教えてください。
InputStream
InputStreamReader
BufferedReader
HashMap
ArrayList
LinkedList
StringBuilder
あたりでできるのではないだろうか
932 :
デフォルトの名無しさん:2007/09/27(木) 11:35:13
933 :
デフォルトの名無しさん:2007/09/27(木) 14:37:13
javaで輪郭追跡処理を勉強しているのですが詳しい人いますか?
居る
935 :
デフォルトの名無しさん:2007/09/27(木) 18:14:41
>>884-886 interfaceとAbstractの使い分けは
そのクラスの抽象レベルによってつかいわけるんだよ^^
継承する具象クラスが一部の機能だけを継承するならinterface
クラスとして継承するならAbstract
ある意味抽象度で言えばより曖昧な存在がinterafaceであり
より具象化しているのがabstract
より曖昧な存在のinterafaceならポリモーフィズムを利用してよりたくさんの
クラスを扱える
936 :
デフォルトの名無しさん:2007/09/28(金) 00:26:48
白い背景の中に黒の点が一つある画像を左上から調べて黒い一点の座標がいくつなのか
自動的に調べられるプログラムを作ってみたいのですが
考えがつく人いらっしゃいますか??
あんまりうまく伝えられなくてすいません。
よろしくお願いします。
それは、普通に考え付くだろ
938 :
デフォルトの名無しさん:2007/09/28(金) 00:54:47
すいませんプログラムおしえていただけませんか??
939 :
デフォルトの名無しさん:2007/09/28(金) 00:57:42
すいません936で書いた内容のプログラムおしえていただけませんか??
940 :
デフォルトの名無しさん:2007/09/28(金) 01:01:26
普通わかるよ
>>936 課題などで自分ではプログラムを作りたくない、作る技量が無いってことなら、
もっと仕様をきちんとまとめて宿題スレに投げればやってくれる人がいるかもよ。
自分でそういう「プログラムを作ってみたい」って言うんなら、
その程度のことは自分で思いつかなけりゃ結局全て他人任せのプログラムにしかならない運命だ。
なんだ
結局作ってみたいとかってのは嘘だったってことか
->
を使ったプログラムを作れ
お前が命令できる立場か
class _{
public static void main(String __[]){ System.out.println("->"); }
}
ServletContext.getRealPath("/")
これは、Linuxでルートコンテキストのパスまでにシンボリックリンクが使われていたときは、
リンク先のフルパスが戻るということでしょうか?
その場合、リンク先のパスを使いたくない場合は、
ServletContext.getResource("/")..getPath() で大丈夫でしょうか?
手元にWindows環境しかなく確認できません。
よろしくお願いします。
Virtual PC が無料で使える時代なんだから、Virtual PC 上に Linux インストールして自分で確認すればいいじゃん
Virtual PCって無料で使えるようになったの?
あ、去年から無料になったんだ。
Virtual PCってLinuxインストールはライセンス的にOK?
だめならVMWareとかXenでいいけどね。
Virtual PCってprofessionalじゃなきゃ駄目だけど
>>947のホストOS次第だな
Virtual PCが無料なんだからって流れからすればVMWareやXenは候補に挙げられんだろ
じゃあqemu?
homeはだめなのか・・・それはすまんかった。
>>947 Linuxでやってみましたが両方ともリンク先(自体)のフルパスでした。
955 :
デフォルトの名無しさん:2007/10/08(月) 09:34:07
コマンドライン引数から文字列を取得して数字かどうか判別したいから
isDigitを使ってたんだけどこれだと小数と負の数が数字じゃないことになってしまう・・・
ちゃんと数字だと判別させるためにはどうしたらいいかな?
Double.parseDoubleやってみて例外が発生しなかったら数字、っていうのが一番簡単
957 :
デフォルトの名無しさん:2007/10/08(月) 10:33:35
958 :
デフォルトの名無しさん:2007/11/16(金) 15:59:09
パイプで標準入力を受け取って処理することはできるのでしょうか?
例えば
ls -al | java Hoge
のようにコマンドの標準出力をJavaに直接渡したいのですが何か方法
はありますか?
xargs
>>958 普通に System.in で受け取ればいいんじゃない
961 :
958:2007/11/16(金) 16:16:50
>>959 そんなコマンドがあるなんて知りませんでした!!!
でも、バイナリデータも渡したいので、直接渡せたらいいんですけど・・・
>>960 System.inだと起動時の標準入力は受け取れないようなんですが、書き方が
悪いんですかね・・・
書き方が悪いに一票
963 :
デフォルトの名無しさん:2007/11/16(金) 22:56:05
>>963 わからないところだけピックアップして訊けよ
>>963 やさしいオレ様が、4行程度教えてやろう。
49行と51行と53行と55行は、それぞれ左上、左下、右上、右下と表示する。
あとは自分で勉強すれ。
>>963 やさしいオレ様が、少しだけ教えてやろう。
「00010:」って左に書いてある数字はプログラムじゃないぞ。
あとは自分で勉強すれ。
967 :
デフォルトの名無しさん:2007/11/17(土) 08:39:29
PHPとJavaなら、PHPでしょ?どっち?
インターネット派の俺が聞いてみる。。。(・∀・)ニヤニヤ
次の質問をどうぞ
969 :
デフォルトの名無しさん:2007/11/17(土) 10:34:13
ちょ。。。
970 :
デフォルトの名無しさん:2007/11/17(土) 12:27:41
>>963 すいません。場所は
13行目から22行目の内容と63行目から73行目ですよろしくお願いします。
>>970 13-22 行目がわからないとなると、初心者本で勉強した方が良いのでは
としかいいようが無い。初めの方に書いてあるはず。
972 :
デフォルトの名無しさん:2007/11/17(土) 16:58:42
質問なのですが、
eclipse3.2を使っております。
Javaでログを取りたいのですが、テキストファイルなどにはFINEST〜SEVERまでキチンと排出
されるのですが、エクリプスのコンソールにはconfigまでしかでません、レベル設定はどうやったらいいのでしょうか?
jre/lib/logging.propertiesファイルをいじればいいんじゃね
>>972 ログレベルはLoggerとHandlerで別個に指定できるので両方が自分の用途に合っているか確認
975 :
デフォルトの名無しさん:2007/11/20(火) 01:06:58
977 :
デフォルトの名無しさん:2007/11/20(火) 01:27:36
ききたいから聞いてるだけんだけど
おしえていただけないんですか??
聞くためのスレで聞きたいことを聞くのは構わんが、
今まで質問を投げたスレで質問を閉めた旨を通知したレスをしたことがあるか?
投げっぱなしのマルチは死ぬがよかろうて。
979 :
デフォルトの名無しさん:2007/11/20(火) 02:16:12
返答するぐらいの暇があるなら教えたっていいんじゃん
じゃーここのスレ何のためにあるん??
あんたみたいに愚痴言うためにあるのか??
悪質な質問者に教えるわけがないよ。
>>975 で、具体的に何がわからんの?どこまではわかるの?
>>979 そこらじゅうに貼り付ける暇があるなら一報くらい入れればいいじゃん
それすらできないの?
983 :
デフォルトの名無しさん:2007/11/20(火) 12:46:18
>>981かたありがとうございます。
わからないのは63行目から82行目なんですが
70行目と82行目なぜ平方根して計算することによってどういうことが得られるのかがしりたいのと
またint topとint rightは何のために作っているのかがいまいちわからなくて
よろしくお願いします。
82行目って、そもそも calcDistance はどこからも呼ばれてないじゃん
使われてないコードを、どういうことが得られるもなにもないもんだ
ところで
>>983 は、このプログラムが何をするものなのか (何を与えると何を出力するのか) 理解してるか?
985 :
デフォルトの名無しさん:2007/11/20(火) 13:10:51
>>984 そうなんですか??
このプログラムは黒い点の座標を取得するものでとる場所は左上と左下と右下と右上なんですけど
なぜ四つの点だけをきれいに取れるのかがわからなくて19行目から21行目だけだとひたすら黒い点の座標
だけをとってしまうのでってことはcalcPointで何かしてるのかなと思いみてるんですけどわかんないんです。
>for(int right = 0; right < 2; right++) {
>for(int top = 0; top < 2; top++) {
>int apex_x = width * right;
>int apex_y = height * top;
より、それぞれpointsのindexが1,2,3,4の時、左上、左下、右上、右下からの要素について計算。
>Math.sqrt(Math.pow(x - apex_x, 2) + Math.pow(y - apex_y, 2));
で、その要素からの距離を出して、
>if (dist_apex < points[index].distance)
ですでに入ってる距離よりも小さければ代入。
初期値のときはDouble.MAX_VALUEなので確実に代入されるお、と。
コードの中に同じ部分があるcalcDistanceの計算は単なるピタゴラスの定理(sqrt(x^2+y^2))だよ。
すいません教えてください
テキストから一行ずつ読み込んで、読み込んだ語を集計するプログラムを組みたいんです
元テキストには一行ごとに、URLかキーワードのどっちかが書いてあります
仕様の条件として
1、URLは集計に含まない(httpを含む文字列は無視?)
2、URLとURLの間に同じ語があっても一語としてカウント があります
2番を無視したやつはできるんですけど…
988 :
デフォルトの名無しさん:2007/11/20(火) 23:12:12
>>986 なるほど☆
よくわかりました。本当に助かります。
ありがとうございます。
>>987 語=1行なのか?
データフォーマット教えれ