【初心者】Java質問・相談スレッド124【歓迎】
けけけっ勝手に立ててやったぜ
4 :
デフォルトの名無しさん :2009/02/22(日) 22:59:27
Object3つを1つのbyte[]に入れたいのです。 さらに、それをJMSで別サーバに送信し、byteの配列から Objectを3つ取得したいのです。 どうすればよいのでしょうか?
6 :
936 :2009/02/22(日) 23:08:20
BoxRoomMainに player.setEnemy(enemy); を追加して Playerには public void setEnemy(){ } でいいんでしょうか? で、そこからEnemyにPlayer内の数値を渡して受け取るには何がいりますか?
>>6 プレイヤーにエネミー渡せば、今までどおりのエネミー.セットターゲットで値渡せるじゃん
BoxRoomMainに player.setEnemy(enemy); と記述した後 具体的にどうすればいいのか教えていただけないでしょうか・・・
>>8 今までプレイヤーの中でnewしてたエネミーはもうnewしない。
その代わり、セットエネミーで貰ったエネミーを、プレイヤーのクラス変数エネミーにセットする。
セットターゲットとやってることは同じだろ!
プレイヤーからエネミーに値渡すのは、もう書いてあるから、そのまま動く筈だぜ
※セットディレクトの中でやってるセットターゲットな
ん〜 2日寝てないせいか頭が回らない・・・ >セットエネミーで貰ったエネミーを、プレイヤーのクラス変数エネミーにセットする ってのはどう記述するんでしょうか? Player内で enemy = new Enemy(); を消して public void setEnemy(enemy){ } と追加したけど 型 Player のメソッド setEnemy() は引数 (Enemy) に適用できません とのエラーが・・・ メソッドとかセッターとかの用語とJavaの記述で頭の中で関連付けできてないから いまいち理解ができなくて・・・
>>10 セットターゲットとやってることは同じって言ってんだろw
変数の型がイントかエネミーかの違いだよ
最近もこみちの名前みなくなったけど、何やってるか分かります?
同じといわれてもあまり理解できてないので・・・
public void setTarget(int tx){
cx = tx;
}
見たいに書いてもらえないでしょうか・・・
intかエネミーの違いといわれても
intは型だけどenemyは型じゃないし
enemyだけだと
>>10 に書いたようなエラーが出てしまうので・・・
セッターゲッターでぐぐって調べてみればいいじゃん intもEnemyも型じゃん
セッターとかメソッドとかコンストラクタとかいう用語がどれがどれにあたるのかを 昔習った以来でもう覚えてなくて今はどれがどれなのか理解していなくて そういう用語でごちゃごちゃ説明されても頭が回らない今理解できないので そういう遠まわしなのじゃなくて 直接プログラムで教えてもらえないでしょうか
しかたないなセットエネミーはこうすりゃ直るんじゃねえかな public void setEnemy(enemy){ } ↓ public void setEnemy(Enemy enemy){ this.enemy = enemy; }
>>13 あんな、よくわからんが、長さ4の配列を用意して 1-3 だけ使うようなのはやめい。
長さ3を用意して 0-2 を使いなさい。
クラスEnemy について
メンバ int cx; は初期化されていない。よってオブジェクト生成時には0が入る。
cx は paint が呼び出されたときに muki に代入されている。
muki の有効値は 1-4 。
setTarget が呼ばれる場合には 1-4 のいずれかが muki 入る呼ばれ方をしている。
しかし、setTarget が呼ばれないうちに paint が呼ばれて、再度 paint が呼ばれる場合には
pan[0] が呼ばれる。この要素値には null が入ってる。
引数に使われている drawImage の先で NullPointer例外が発生する可能性がある。
まだやってたのかよw 甘いな
>>16 ありがとうございますできました
(Enemy enemy)と並んでるのがなんとなくしか理解できてませんが
そうすればいけるってことですね
これであとは時間との戦い・・・
あと8時間・・・眠い・・・orz
>>17 確かにそうですね
キー入力の判定のサンプルのところで1〜4でやられてたのでそのまま使ってました
いろいろなサンプル見ながら突貫で作ってましたが
やはりそういう細かいところから考えてやらないとマズイですよね
時間があればいろいろ基礎からやり直して練って作りたいんですが
今はとりあえずしょうがないですね
>>18 テスト勉強でもテスト直前に今まで勉強してなかった教科を
公式だけから勉強していくよりも公式+答えであぁこういう風になってるんだぁって勉強するでしょ?
時間があればじっくり勉強したいんだけどね・・・
いろいろできて面白そうだし
とりあえず皆さんご迷惑おかけしてすいませんでした
>>20 >テスト勉強でもテスト直前に今まで勉強してなかった教科を
>公式だけから勉強していくよりも公式+答えであぁこういう風になってるんだぁって勉強するでしょ?
そんなもんに人を巻き込むな
>>21 思考力が身につかないのに、よく出来た気がする最悪のパターンだよな。
失敗と言うことが無いし。
初心者歓迎の質問スレで質問に答えずに文句と基礎から勉強しろとしか行ってないヤツが
巻き込むなとか言ってもしょうがなくねぇか?
教えてあげたらちゃんとお礼も言ってるし
状況が状況だし答え聞いて理解するのもいいんじゃねぇの?
>>20 見るとまだ理解できてはいないみたいだけど
>(Enemy enemy)と並んでるのがなんとなくしか理解できてませんが (int tx) 意味はこれと同じようなもんだボケ
26 :
936 :2009/02/23(月) 00:37:19
>>21 ごめんなさい
期限が明日なもんで焦ってたんです
>>22 そうなりそうですね・・・
とりあえず明日ある程度の形にしたものを提出できたら
次回完成させて提出するまでには基礎から勉強したいです
>>24 それと同じようなものだなぁとは理解してますよ
ただそれそんな感じなんだろうなぁって思ってるだけだからなんとなくってことです
27 :
17 :2009/02/23(月) 01:07:04
>>20 最初の段落は無視して良いから、他の段落を読んでくれ
やるかやらないかは勝手だが
そんな切羽詰まってる時点で設計に手を付けることを強いたりはしないよ
28 :
17 :2009/02/23(月) 01:15:42
手っ取り早い解決法が書いてないから無視しただけなら、 private int cx; の行を private int cx = muki; にでも換えて下さい。
29 :
936 :2009/02/23(月) 01:44:03
>>17 さん
いえ、ちゃんと全部読みましたし
書いてある内容もちゃんと理解してますよ
ただ製作過程では突貫でサンプルのツギハギレベルで作ってたので
そこに気づかなかった感じです
今はちゃんと0から始まるように記入しなおしました
指摘していただきありがとうございます
新しいクラスを作る時にクラス内にコンストラクターって作りますか? 作らなくても、new()出来ますよね? 何故コンストラクターを定義しなくてもnew()出来るのでしょうか?
>>30 明示的にコンストラクタ一つも定義しないと、
言語仕様により引数一つも取らないデフォルトコンストラクタが生成される。
>>30 まぁnewされたくなかたらprivateのコンストラクタ作ればおk
>>30 クラスの継承にて。
サブクラスのコンストラクタで、親クラスのコンストラクタを明示的に呼び出さない場合、
引数を一つも取らないコンストラクタが呼ばれます。
記述が簡略にでき、便利です。
親クラスで、引数を取るコンストラクタだけを作成した場合、
サブクラスでは、コンストラクタを作成する必要があります。
さらに、親クラスで定義されているコンストラクタの何れかを呼び出す必要があります。
オブジェクト生成に必須なパラメータを明示でき、不用意な生成を抑制できます。
>>31 ≫32≫33
さるでもわかる教え方で大変判りやすかったです。
ありがとうございました。
シンボルを解決できませんってなに? 柴田先生の明解javaでScannerクラスをインポート?しようとしてもScannerが書いてある文全部にシンボルエラーが出ますたsけて
jdk1.4だとか・・? Scannerは1.5からだよ
>>36 な、なんだってー!1?
ちょっと調べたら確かに1.4でしたご指摘ありがとうございます。
可変長引数が忘れ去られてるんだろうなw 5.0の変更点として。 曖昧になるから俺は使ってないし。
Integer.valueOf()のような、インスタンスからではなく型から呼び出すような関数はどのようにして作るのでしょうか? また、そういった関数に特別な名前があれば教えてください。
>>39 /* ソースは、適切に設定した Eclipse で F3キーを押しましょう。*/
静的メソッド (static method) と呼ばれる物です。
静的メソッドの修飾子には static が付与されています。
あとは適当にぐぐってください。
>>40 おお、ありがとうございます、これでぐぐれます。
42 :
デフォルトの名無しさん :2009/02/24(火) 16:14:17
iframeの表示領域は、あらかじめwidthとheight属性で規定しておく必要がありますが、
表示内容が想定より大きくなったり、小さくなったりすると、表示が崩れてしまいます。
javascriptを使って他のページをフレームに合わせて表示するにはどうしたらいいのでしょうか?
例えば、こんな感じにしたいのです。
↓
http://www.w-index.com/main1.htm
javaインストールの時の コアファイルの解凍に失敗しましたってなんだろう・・・
>>44 ダウンロードしてきたファイルが壊れてた、とかじゃね?
ObjectOutputStreamを使ってファイル出力しているのですが、 Stringを複数含んだクラスにおいて、文字列に漢字が入っている時 NotSerializableException: javax.swing.text.GapContent$StickyPosition が出てしまいます。 出力するクラスのすべてStringインスタンスというわけではなく、 特定のインスタンスに漢字が含まれると例外が発生するという状況です。 原因や対処策は分かりますでしょうか。
まんまだよ javax.swing.text.GapContent$StickyPosition どういうクラスか知らんけどとりあえず直列化されてないからってのが理由ね。 対策は、それにかわるものでSerializableなやつを自作するしかないなぁ 見てないけど結構骨が折れそうだね 具体的にどういうオブジェクトの保存?
staticなメソッドからは、staticなフィールドにしかアクセスできないの? 初歩的な質問でごめんね
new でインスタンス作ってやればアクセスできる staticなメソッドはnewしなくても使えるだけと思えばいいっす
なんか日本語がおかしい newでインスタンス作れば、staticじゃないフィールドメソッドもアクセスできる インスタンス作らない場合は、staticなメソッドフィールドしかアクセスできない 伝わってたと思うけど訂正
53 :
46 :2009/02/24(火) 22:30:07
>>47 GapContentは自作クラスではないのでライブラリのクラスと思われます。
イメージとしては
public class Item extends SuperItem {
String stra;
String strb;
・・・
}
※SuperItemにおいてSerializableを実装。
ObjectOutputStreamのインスタンスoosにおいて、
oos.writeObject(Itemクラスのインスタンス);
として書き出しています。
このとき例えば strb = "漢字";
となっている場合に、前述の例外が発生します。
strb = "alphabet";
の場合には発生しません。
今日からというかさっきから始めた超初心者で申し訳ないんですが・・・ 流儀の問題なんですけど、エラー処理はtry catchで受けるものですか? それとも自力でチェックするものなんでしょうか。 たとえば引数の未定義をチェックするのに perlで言えばif( !defined($hoge)){ みたいにするよりも catchで場合分けして受けるのが正解?
>>53 それは本当に漢字のせいですか?
javax.swing.text.Position を実装したクラスのインスタンスをどこかで直列化してませんか?
>>54 未定義、、Javaで言えばnullチェックぐらいなら普通にif文で良いよ
基本的に自分でチェックできるものはしますよ
57 :
46 :2009/02/24(火) 23:23:17
>>55 そう言われると自信が持てなくなってしまいますが・・・
あくまで現象としてはアルファベット・ひらがなでは問題なく、
漢字の時に例外が出ているということです。
>javax.swing.text.Position を実装したクラスのインスタンスをどこかで直列化してませんか?
すみません。
理解力不足でどのようなことか分かりませんでした。
javax.swing.text.GapContentクラスのインスタンスということでしょうか?
58 :
55 :2009/02/24(火) 23:34:47
>>57 NotSerializableException: javax.swing.text.GapContent$StickyPosition の解説をします。
NotSerializableException は直列化可能インタフェースを持つ必要があることを示す例外です。
出力文字列のコロン以降はその対象クラス名で、ドル記号の後ろはクラス内クラス名です。
GapContent$StickyPosition は Position インタフェースを実装しています。
ここで 55 の話に繋がります。
本当に漢字のせいですか? と。
59 :
46 :2009/02/25(水) 00:43:31
>>58 ありがとうございます。
ドル記号の後ろはクラス内クラス名なのですね。メソッド名かと勘違いしていました。
(GapContentのソースも確認してみました。)
ここまでのご回答から、被疑のクラスを見直していったところ、
直列化しているクラスのフィールドにJDialogクラスを継承した自作のクラスを
含んでいることが分かりました。
そのフィールドに対してtransientを修飾することで問題が解決しました。
原因の根本はおっしゃる通り漢字うんぬんでは無かったということになります。
本当にありがとうございました。
60 :
デフォルトの名無しさん :2009/02/25(水) 02:10:28
学生レベルでJAVAの中級者以上ってどんなレベル?
学生レベル
>>54 その辺は実は深い問題なので、あんまり「こうしとけばOK」というやり方はない。
おおまかな指針なら「Effective Java」って本に載ってるので、Javaに一通り慣れたら読んどけ。
高校生なら将来は情報系に進学するんだろうけど、大学生なら別にどうってことない。 それよりも英語が出来ないと次の技術に追いつけないから中級か初級かの違いはあまりない。 中級者というならランタイムのソースぐらい読んでないと恥ずかしいが。
サンは教育に力入れてるから小学生だとしてもジャバなら積み木のように何でも作れるって外人は多い。(ジャバだけしかつかえないけど) C#と比べても実際そんなに複雑じゃないし。
>>63 今の学生は情報系よりプログラム教える専門学校の方が上だと
信じ切っててそのまま専門入って洗脳されるパターンがあるんだな。これが。
んで底辺同士で変な潰し合いやってメンヘラ化。
ITドカタ以下だからねぇ。食えるんだろうか。エロゲの外注マくらいしか思い付かん。
そういうと視点なら実際は底辺大学入っても同じ。エロゲを作るのか、半エロのオンラインゲームの受注を受けるのかの違いはあったとしても。 MARCH以上じゃないと、専門でも大学でもそんなに差があるとはいえないんじゃないか。 少しお花畑の話をすれば、情報の技術者を医療系のように国が保護して補償してないからこういう事態になるんだろうけど(携帯業界とかIT派遣とかで顕著でしょ)
医者よりは芸術家とか職人のような扱いの方がいいのではないかと思う。 他の匠と違って朝すげー遅いが他は似たようなものだろう。
ぶっちゃげ六帝大でも実践的なプログラミング技術を教える体制や カリキュラムが出来ているかというと、正直かなり微妙だと思う。 教科書レベルの例題や、きちんと正解が出るように仕込み十分な プログラミング演習の課題は一通りなぞっていても、課題だけを ボンと投げられてそこから自分で設計したり必要な要素技術を 探し出したりしながらちゃんと動くものをゼロから作れる、そういう 学生は本当に希。 そういう実践力は現状のカリキュラムで教えるのはとうてい無理で、 むしろ課外時間に趣味とかバイトとかで実践的なプログラミングに 取り組んだ学生は研究室配属直後などは本当に強い。 他方で下手に経験があるだけに変に自信を持ってしまい、我流に しがみついて体系的に学ぶことを拒否する学生もいる。 そう言う学生が後から来た素人に抜かされるのも時々見る光景。
>>68 その実践的なプログラミングってどの程度の話?
>>68 まあ言いたいことは分かるけどね。
しかし大事なところが抜けてるから一応補足しとくと、君は自分の能力と同等なものをその学生やらなんやらにも求めてないか?
どの分野でも何もないところから自分で設計したり実践したりすることなど出来ない。
小さいときに君は学習塾で先生に手取り足取り「解法」を学んで今やっとそのように「やる気があれば何でもできるだろ」ようなことを言ってるんじゃないかな。
どうでもいいけど、君に実力があるというなら、得意な分野でいいから誰にでも理解できる本を書いてみたらどうだろう。
プログラミング関係の書籍はほとんどが粗大ゴミだけど、君が書くプログラミングの記事もまたそのゴミの一つかもしれない。
>>68 我流にしがみつくような学生の方が、率先してゼロからでも課題をこなしていくタイプじゃないのか?
その長文で主張したいことは、どうも矛盾してるようだけど・・・
我流の学生なら、変な癖のところを指摘してやれば充分じゃないかと思うけどね。
海外だと学生のときに作ったプログラムで成功してるのが多いでしょ。(GIMPとかYAHOO.COMとか)
情報というかプログラムの世界は、工芸職人みたいだけど、課題をこなすような人材よりも我流でアクが強い方がいいもの(道具)を作る世界なのかも。
>>69 自分が関わっているところはどっちかというと理屈系の比重も
大きいから規模も複雑度も企業内でのプログラミングに比べ
たら全然大きくないと思います。
ただ痛切に感じるのは「実践力」のある使える学生というのは
量的というより質的に違っていて、明確な答えのない課題に
対して自分で答えを見つけたり、類型の問題に対する既存の
アプローチを色々組み合わせて自分で解決策をほじくり出して
しまうスキルがある。情報の探し方と探しどころを経験で学んで
いるんですね。で、こういう無形のスキルを伝達するのが実際
一番大変で難しいので、色々なところで苦労していると思います。
>>70 能力を求めてはいないし自分も実力があるわけでは無いですが、
カリキュラムで学べるプログラミング技術と研究の現場や企業で
求められるものとでは質的に大きなギャップがあるのは間違い
無いです。プログラミング技術が必要となる研究室では多かれ
少なかれ内部指導の体制を試行錯誤していると思います。
プログラミングは手段であって目的では無いのも悩みどころです。
>>71 そう。まさに我々の周りでも「変なクセがある」と呼んでいます。
クセを指摘して聞いてくれる学生だと良いんですが、時には妙に
固執する頑固な人もいて・・・。掲示板みたいに規模はともかく
前例やベストプラクティスが存在する対象をクリアして自信を
つけてものの、そういうものがない対象を扱うようになって途端に
はまる人を何度か見かけました。
むしろ学生のうちは、 どうして01の足し算だけでコンピュータが動くのか?とか 基本的なアルゴリズムとかその他学術的なことを しっかりやってほしい。 会社に入ったらそういったことを勉強する機会は少ないし、 実践的なことしか勉強できなくなるから。 現場にいない大学の先生に現場で必要な実践的なことを教えるのには限界があるしね。
真夜中から長文ご苦労。 引き続き質問スレに貢献してくれ。
75 :
デフォルトの名無しさん :2009/02/25(水) 13:09:40
どうして01の足し算だけでコンピュータが動くの?
01の足し算だけでコンピュータが動くじゃなくて コンピュータは01の足し算だけで動いているの方が若干正しい気がする
>>76 それならどうして01の足し算だけでコンピュータが動くのか教えて
01の足し算だけでは動かないと思うぞw
足し算だけじゃどう頑張っても無理ではなかろうか
少なくとも条件分岐は必要だな。
Javaと関係ねーよー おかーちゃーーん
学生さんにはしっかりと足し算だけでコンピュータが動くしくみを 勉強していただきたい
javaできる奴ってどれくらいいるのかな?
クラスでjavaできる奴何人いたって意味↑
>>85 そろそろ病院行ったほうがいいんじゃない?
心療内科は結構いいよ
88 :
デフォルトの名無しさん :2009/02/25(水) 20:12:41
ジャンプってプログラムカウンタの足し算だよな
「だけ」をいうのであれば足し算というより排他的論理和だな。
1 - 1 = 1 + -1 2の補数
スレチだけども、学問と実践、研究者と技術者の区別がついていないんだと。。。
92 :
デフォルトの名無しさん :2009/02/26(木) 00:58:12
Linux(CENTOS)でアパッチがインストールされていれば Java(サーブレット)を動かせますか
>>92 無理。サーブレットの実行にはTomcatなどのサーブレットコンテナが必要。
Apacheとサーブレットコンテナを連携させることはできる。
javaでcgiすりゃいい
>>94 それだとセッション管理が大変になるだろ。
96 :
デフォルトの名無しさん :2009/02/26(木) 16:21:30
すみません OutputStreamの中身をbyte[]型で出す方法ってありますか?
java.io.ByteArrayOutputStream
>>95 マジリアクションするなよwwwwwwww
MQを使って別プロセスと通信を動機的にすることは可能ですか? MQを使った時点で非同期になるのでしょうか?
家でjavaをはじめようと思ってます。 まず何をしたいかと言うと、 Realtekのカニさんマークの用に 画面の真ん中にウインドウ枠を消した状態で カに以外を表示したいです。 段取りを教えてください。
Realtek のことはよく知らないけど スプラッシュスクリーンのこと?
104 :
デフォルトの名無しさん :2009/02/27(金) 16:39:25
(1)jspのページを直接表示させた場合 (2)サーブレットからリダイレクトによってjspのページに遷移させた場合 (3)サーブレットからフォワードによってjspのページに遷移させた場合 何で(1)と(2)では文字化けしなかったのに(3)は文字化けするんでしょうか
>>103 スプラッシュスクリーンがまず最初ですかね。
僕としては、今後そのスクリーン上で、フォルダを指定して、
画像データとかを表示したいなと思っています。
まったく別物ですか?
別物 java スプラッシュスクリーンでまずぐぐれ
起動処理中のサーバに接続したい場合、 サーバの起動に時間を要するので、起動確認してからtelnetしたいです。 手入力のコマンドですとpingで確認するところですが、 Javaのプログラムだとどういう方法で確認するのがよいでしょうか?やはりpingを実行するのでしょうか?
要求を、適当な時間間隔で適当な回数、リトライするんじゃ駄目?
Telnetメソッドを数回リトライということですか?
そもそも、pingが通ればtelnetも通る? telnetそのものでトライするのが確実だと思うよ。
なるほど。納得しました。 ありがとうございます。
WebページにあるフォームにGetで送信したいんだけれども、どうしたらいい? ヒントくれ
HttpClient
わざわざ外部のライブラリ使わんでも標準でHttpURLConnectionあたり使ってできるよ まぁ使い勝手は最悪だが。
116 :
デフォルトの名無しさん :2009/02/28(土) 20:32:26
public static void main(String[] args) throws IOException { BufferedReader reader = null; BufferedWriter writer = null; reader = new BufferedReader( new FileReader("F:\\temp\\Test.txt")); writer = new BufferedWriter( new FileWriter("F:\\temp\\Test.txt")); writer.write("Test"); String str = reader.readLine(); System.out.println(str); writer.write("Test"); str = reader.readLine(); System.out.println(str); reader.close(); writer.close(); } これ実行するとnullnullって表示されるんですけど何故ですか? ファイルにはちゃんと出るのに。
書き込みながら読み込みとかやってる事が高度すぎる 書き込み終わってから、読み込みの順番ならちゃんと表示されるよ
System.out.println("Test"); とすればちゃんと表示されますよ
>>116 writer.write("Test"); の後に writer.flush(); してみれば?
120 :
116 :2009/02/28(土) 21:50:36
!?('A`
122 :
デフォルトの名無しさん :2009/02/28(土) 22:00:33
ストリームっていのがよく理解できてなくて・・・
深い話が聞けるかなと。
>>119 ありがとうございます。
windowsで言うところの.exeファイルってどうやって作成するんですか? .javaから.classは作成できましたが、classをダブルクリックしても実行できません。
ArrayListに「obj連番の数字」という名前のオブジェクトを、効率よく格納したいのですが obj1、obj2、obj3・・・・・objNとなっているのを ArrayList<*> test = new ArrayList<*>(); test.add(obj1); test.add(obj2); test.add(obj3); ・ ・ test.add(objN); と書いています。これをfor文を使って綺麗に書くことができますか? できるのならば、おしえてください
そもそも何でそんな名前のオブジェクトがあるんだ。
>>123 JAR (Java Archive) というファイルを作る。
Windows 限定なら
Java アプリケーションを EXE に変換するソフトもある。
>>124 フィールドにそんな名前をつけること自体
設計がよくないと思う。
強いて言うならリフレクション使う。
>>126 jarファイルを作成し、実行できるようになりました。
有難うございました。
基礎を勉強した後に読む本でおすすめはありますか?
スレチかも知れないけど メモ帳でtabインデントを8→3にするのってどこで設定するんですか?
>>131 しらん。
エクリプス突っ込むか、フリーのテキストエディタを
使った方が幸せになれると思うのだが、
顧客が馬鹿でメモ帳以外使わせないとかなのか?
改行コードって\r や \n そしてこれらの組み合わせがあるようですが ファイルに書かれている改行コードが何か判別するにはどうしたらいいのでしょうかm(__)m
バイナリエディタで開く
Javaのプロセスが急に落ちるときの原因は何が考えられますか? その際、アプリログを見ても、何も吐き出されていないのです。 環境はTomcat+Apatch+Sunで動かしているWebアプリです。
>>136 サーバーのログとは何ですか?
Javaのプロセスが突然落ちたのです。
コアダンプもエラーも何も出ずに、落ちてました。
>>137 /var/log/httpd/error_log とか。
140 :
デフォルトの名無しさん :2009/03/01(日) 17:46:51
ファイルの指定行への書き込みや、 指定行からの読み出しは、 ループを回さなければならないんでしょうか?
org.apache.commons.io.FileUtils の readLines とか writeLines とか使えば?
各行のオフセットをどこかに記録しておけばループは不要
143 :
デフォルトの名無しさん :2009/03/01(日) 18:08:45
そんなクラスないみたいなんですけど・・・ orgはietfからみたいです。 そう言えば、java以外まだ使ったことないですけど。
146 :
デフォルトの名無しさん :2009/03/01(日) 22:11:41
標準クラスライブラリ以外使用不可ならどうすればいいんでしょうか? 問題 テキストファイルの指定行に文字列を書き込むメソッドを作れ。
"128hoge" が 128 になるような寛容な変換メソッドはありますか? Integer.parseIntだと例外が飛んでしまいます。 なければおとなしく切り出そうと思います。
int i = Integer.parseInt("128hoge".replaceAll("\\D", ""));
>>146 指定行までを読み込んで
文字列を追加して
ファイルの残りを読み込んで
まとめて書き出せばいい
150 :
147 :2009/03/01(日) 23:12:36
>>148 このほうが短いですね。ありがとうございました。
いや、普通はこうだろ (Cのatoiとか) replaceFirst("\\D.*","") 何れにしても、空になると例外出るから、初期値0にするのにもう一手間いるけど
\DってCで反応するの?
153 :
147 :2009/03/02(月) 00:15:53
"123hoge456".replaceAll("\\D", "")が"123456"になってしまいますね。
>>151 ありがとうございます。こちらも試してみます。
String s = "128hoge".replaceFirst("\\D.*", "");
int i = foo.isEmpty() ? 0 : Integer.parseInt(s);
ScheduledFuture<?> s = ほげほげ s.cancel(true); の cancel() の引数なんですが、true と false の違いがよくわかりません。 セツメーショにはこう書いてありますが... >このタスクを実行しているスレッドに割り込む必要がある場合は true >そうでない場合は、実行中のタスクを完了できる これ読んでも意味がわかりません。 「割り込む必要がある」って??? 実行中のメソッドを*処理の途中*で強制停止してしまうってこと? 「そうでない場合」の「そう」はどの「そう」? true でない場合はタスクを完了できないってこと??? じゃ false の存在価値は? ちんぷんかんぷんです。おしえてくだしあ
if (obj != null && obj instanceof クラス) っていう文をよくみかけますが、どんな意図があるんでしょう。 外人が書いたフリーソフトのソースコードなので本人に直接は聞けません。 if (obj instanceof クラス) よりも if (obj != null && obj instanceof クラス) の方がパフォーマンスが高いとか? サーバアプリなんですが、 CPUの負荷にやさしいのは、どっちの書き方でしょうか?
>>155 場合分けとしてはどちらの場合も同じ。
null instanceof Hoge の場合は必ず false
勘違いしているか、null チェックだけでもやっておいた方が早く動くと思ってるか。
他にも何か理由があるのかね...
>>155 演算子の優先順位は明らかなのに わざわざ括弧つけたりするのと同じで
冗長でも意図が明確に書いてあるってだけでは?
ループで時間計ってみたら先にnullチェックで落とした方が半分以下の時間で済んだ。 nullチェックで落としたら、後のinstanceofが評価されないのは分かってたけど、 どれくらい時間かかるかわからんかったから、コード書いてみた。
>>154 実行中に割り込み食らうとキャンセルされるように作ってあれば、
true 渡してやればタスクが既に実行中の場合タスクを実行しているスレッドに割り込みかけてキャンセルできる。
false の場合はタスクが既に実行中なら諦める。
実行中に割り込まれても無視するように作ってある場合は
true にしようが false にしようが同じ。
すみません、質問です。 javaでロックのかかったエクセルファイルのロックを解除して セルを取り込んだ後、またロックをかける。 といったことは可能でしょうか? エクセルのロックのパスワードはわかっています。
正確に言うとシートがロックされていて、 javaのプログラムでシートのロックを解除して、もう一度ロックをかける。 ということがしたいのですが・・・無理でしょうか?
おすすめ本あるでしょうか?
163 :
デフォルトの名無しさん :2009/03/02(月) 17:32:24
swingのJColorChooserで指定した色のrgb値を取得するにはどのように すれば良いのでしょうか、いま指定した色と調和する色を表示するアプリケーションを 作っているので、ご教授願います。
String.format("%.1f", hoge) // 注意: % と 1 の間に小数点があります で小数点以下2桁で四捨五入するのですが hoge = 1 のときは「1.0」ではなく「1」と出したいのです。 おしりの0を省く方法ありますか?
クラスライブラリを使うとき、ヘッダファイルは、いらないの? コンパイルされたクラスファイルがあればいい? ソースコードもいらないの?
167 :
デフォルトの名無しさん :2009/03/02(月) 19:13:19
log4jってクライアント側のアプリに使うと下手したら デバッグログまで丸見えになってしまいますか?
168 :
デフォルトの名無しさん :2009/03/02(月) 19:19:48
>>167 log4jって、吐き出すログのレベルを簡単に切り替えれたのじゃなかった?
public class クラス名<E>{ の、<E>って何よ?
人に聞いてばかりで自分で出来ないようなら、いつまでたっても上達しませんよ。
171 :
デフォルトの名無しさん :2009/03/02(月) 19:27:50
>>168 はい、だから設定ファイル変えられたらトレースされて丸見えになってしまうなーと。
ググッっても向いてる用途が書いてないので、ここで聞いてみました。
>>167 知っているユーザーが設定ファイルを書き換えたらそうなるかも。
気になるならユーザー配布物にはダミーパッケージでも
つっこんどきゃいい気がするけど、どうなんだろう?
ばっちり見えまくり あと、javaはjadっつーので逆コンパイルすると、 ばっちり読めるソースが出てくる。 そこは.netも同じらしいけど
>>171 複数人が関わったり、テスト工程をちゃんとやるような
大規模・中規模開発や統合開発環境やユニットテスタで
テスト回せないような開発では必須。
少人数で回せる様なものなら、エクリプスとかでのデバッガや
Junitだけで使わなくても十分だと思われ。
175 :
デフォルトの名無しさん :2009/03/02(月) 19:33:58
設定ファイルなしで、設定の情報をプログラムコードで設定できるのじゃね? log4jは、設定ファイル必須なの?
176 :
デフォルトの名無しさん :2009/03/02(月) 19:46:10
設定ファイルでログレベルが変えられるのが売りなので、埋め込みだとあまり使う意味が無いかなと思います。 あと、Apacheライセンスなので、使っていることはばっちりバレバレですね。 クライアント側で使うべきではないようですね。
177 :
デフォルトの名無しさん :2009/03/02(月) 19:49:41
>>174 そういう用途はぐぐると出てくるのですが、クライアントサイド等のアプリ種別につい
て知りたかったのでした。
設定ファイルが暗号化されてたりで簡単には変えられない仕組みとかあるのかと思った
のですが、なさそうだし、クライアントサイドの用途は想定されていないのかなと。
使いたかったのに。
>>177 まあ、お客さんがログ見たかったら見ればいいってのはありじゃね?
デバッグログ見られたって困ることはないだろ
179 :
デフォルトの名無しさん :2009/03/02(月) 20:27:00
デバッグログを暗号化して出力すればいい
181 :
163 :2009/03/02(月) 21:04:10
>>182 たぶん一時的じゃない。数日前ダウンロードしたときも同じ状態だった。
CやC++でもリバースエンジニアリングやヒープをダンプされたら暗号化しようが中身丸見えだよ
隠すほど凄いモノを持っておるまいに……
市販アプリがダラダラとデバッグログをはいてたらその会社のレベルを疑うだろ普通。 チンコまるだし、ブリーフ、トランクス、ズボンはいてるのじゃ大違い。
客がチンコまるだしを望むならそれもありだろ ズボン、トランクス、ブリーフを脱がす権利は客にあるんだから
ちんこ丸出しの男はキチ外じゃん。 ズボンとパンツを脱がそうとするやつは変態じゃん。 そういうこと。
客がズボンとパンツを脱がそうとする変態ならそれもいいじゃないか 納品するのは、最初からちんこ丸出しの変態じゃない、ちゃんとズボンとパンツ履いてる紳士だ。 客(変態)の要求で紳士にもキチ外にもなる、俺はそんなクマ吉になりたい。
ログだだ漏れ=ちんこ丸出し log4jの設定いじりでログ漏れ=ブリーフ一丁 リバースエンジニアリング=ズボン脱がし
191 :
デフォルトの名無しさん :2009/03/03(火) 00:21:11
露出狂がいるスレはここですか?
そんなことより超々初心者の質問を聞いてくれあんちゃんたち スーパークラスにprivateメンバ変数とセッタゲッタがあって、それをextendsしたサブクラスにはprivateメンバ変数は継承されないんだよね? なのになんでサブクラスをインスタンスしたら継承していないはずのメンバがセッタゲッタでやりとりできるんでしょう? ちょっと理屈がわからない
>>182 ご親切にありがとうございました!無事にダウンロードできました。
感謝です。
194 :
デフォルトの名無しさん :2009/03/03(火) 00:52:32
>>192 privateメンバ変数は、継承されてる。
195 :
192 :2009/03/03(火) 00:56:50
>>193 てことは、直接参照できないだけでインスタンスには含まれてるってことなんでしょうか?
196 :
192 :2009/03/03(火) 00:57:25
初心者な質問ですいませんが教えてください。 ImageLabel に、画像(Image)を繰り返し貼り付ける方法を教えてください。 Panel上にImgeLabel(240x240ピクセル)を配置しています。これにImage(10x10ピクセル)を 連続で貼り付けて背景にしたいのです。 ちなみにこれはpaintメソッドではなく class mPanel extends Panel ・・・ 内です。
198 :
デフォルトの名無しさん :2009/03/03(火) 01:17:29
ディレクトリの中のファイルの総数を返してくれるメソッドってありますか?
>>198 listFiles()でとって、.length?
なにかおすすめな書籍はあるでしょうか?
201 :
197 :2009/03/03(火) 02:08:44
自己解決しました。 ImageLabelからGraphics g をどうにかして取得できないかと思っていたのですが、 ImageLabelでなく、Imageで、Image.getGraphicsで取得できました。 ありがとうございました。
Javaにおけるデザインパターンについて質問です。 Prototypeパターンでインスタンスをコピーする際にclone()を用いますが、ある本で 「自分のクラス(およびサブクラス)からしか呼び出せないのでほかクラスからの養成で複製を行う場合には、createCloneのような別メソッドでcloneをくるんでやる必要があります」 とありました。単純にcloneのアクセス修飾子を変えてpublicにして実装しないのは、Objectクラスでのclone実装を残しておきたいからなのでしょうか?
なんじゃそりゃ
>>203 質問の意味が分からないということでしょうか?
Hogeというクラスと、それを拡張したHogeExがあったとします。
HogeはPrototypeパターンで、createClone()というメソッドをもっており、その中でObject#clone()を呼び出しクローンを作成します。
HogeExではcreateCloneをオーバーライドします。
ここでもしcreateCloneというメソッド名ではなく、public修飾子のclone()とすると、HogeExではObjectクラスの純粋なcloneを呼び出すことはできなくなってしまいます(たぶん)。
この事が、私が読んだ本(
>>202 の引用部分)で敢えてclone()と別にcreateClone()を作成した理由なのでしょうか?
という質問です。
205 :
192 :2009/03/03(火) 12:35:46
割り込み失礼
継承理解しました
extendの認識を誤っていました
>>194 氏ありがとうございました!!感謝
206 :
デフォルトの名無しさん :2009/03/03(火) 14:45:50
練習問題でも ランダムに設定した数を当てるプログラムを作りなさい なお、10回までに当たらなければ、正解を表示して終了すること。
>>206 宿題ですか?
・設定するのがプログラム、当てるのがユーザの場合
1.ランダムに値を設定し、その値を格納する
2.ユーザに入力を求める
3.入力された値を数値に変換する
4.1で格納した値と比較し、一致したら(fatal error : 問題に定義されていません)
5.10回繰り返していない場合は2へ
6.1で格納した値を表示する
7.終了する
・設定するのがプログラム、当てるのもプログラムの場合
1.ランダムな値を取得し、その値を格納する
2.ランダムな値を取得し、1で格納した値と比較し、一致したら(fatal error : 問題に定義されていません)
3.10回繰り返していない場合は2へ
4.1で格納した値を表示する
5.終了する
ヒットアンドブローってやつだな。 新しい言語を覚える時、必ず作ってみるわ。
勉強になるな
もっと大雑把なのは今でも書くな
間違えたときにヒントは出ないのか? ゲームとしては問題があるな
ヒント:誰もゲームとは言ってない
214 :
デフォルトの名無しさん :2009/03/04(水) 21:12:06
継承とオーバーライドで悩んでいます。 BクラスでAクラスのinitをオーバーライドしています、 Bクラス内でもAクラスのinitを実行したいのですが 「static でない メソッド init() を static コンテキストから参照することはできません。」と出てコンパイル出来ません。 class A{ int a = 0; void init(){ a = 66;} } class B extends A{ int b = 0; void init(){ A.init(); <---コンパイルエラー b = 67; System.out.println(""+a+":"+b); } } void exe() { B c = new B(); c.init(); -------------- 実行結果 66:67 となるようにしたいです。 どうすればいいでしょうか?
super.init();
216 :
デフォルトの名無しさん :2009/03/04(水) 21:31:23
java製のwebアプリ経由で別サーバのファイルをダウンロードしたいのですが 実現方法が思いつきません。 操作手順は以下の通りです。 (1)ユーザがブラウザでwebアプリ(サーバAに設置)にアクセスしたら、サーバBのファイル一覧を表示する。 (2)ユーザはファイル一覧からファイル名をクリックし、ダウンロードを行う。 複数のサーバに点在しているログをブラウザ経由で簡単に取れるようにしたいというのが 趣旨なのですが、一般的にどういう感じで実現されているんでしょうか?
>>217 各サーバのファイルにリンク張れば、クリックで開いたりダウンロードしてくれるべ
この回答だとjavaの質問と回答になんねーけど
>>218 後だしで申し訳ないんですがユーザPCからサーバBは見れないようになっているんです。
リンクというと、「\\「IPアドレス\フォルダ名\ファイル名」という感じでファイル一覧で表示させるんですよね?
このパスをエクスプローラに貼ってアクセスしようとすると、アクセスが拒否られるんです。。
220 :
デフォルトの名無しさん :2009/03/04(水) 21:58:51
サーバーBのディレクトリを、NFSやsambaなんか使ってサーバーAで
マウントすればええやん。という意味だと
>>218 は思われる。
>>221 なるほど、なんとなくイメージが湧きました。
この場合、ファイルはサーバB→サーバA→ユーザという風に
サーバAを介してダウンロードされますよね?
速度的にはダウンロード*2の時間が掛かってしまいますか?
>>221 すいません、
>>223 ですが当然2倍時間掛かってしまいますね。。
100Mほどのファイルもあるので難しいかもしれません。
>>222 なんとなくしか理解出来ていないのですがこれも同じような時間が掛かってしまいますか?
というより、普通にDLさせたいんならサーバBから直接取る方法を考えなければならないんでしょうか。。
>>224 うん、2倍かかっちゃう。
>>222 の方式も同じく、結局ファイルはネットワーク上を流れるんで、
100Mのファイルが2回ネットワークを流れることになる。
>>225 そうですか〜。となると
(1)ユーザからサーバBのDL対象フォルダだけを見れるようにする。
(2)webアプリで表示する一覧では「サーバBのIP+ファイルパス」をリンク表示する。
(3)ユーザが(2)をクリックして直接サーバBからダウンロード。
という形がベストなのでしょうか。
(1)が可能かどうか確認してみます。
皆さんご回答頂きありがとうございました。
サーバ、サーバ言ってるけど、何サーバなの?
>>227 実はサーバは6個くらいあるんですが、それぞれwebサーバだったりDBサーバだったりします。
ちなみにwindowsserverです。
229 :
デフォルトの名無しさん :2009/03/05(木) 04:10:27
Tomcat6環境でデータソースを利用したサーブレットを書いています。 データソースを取得すると、Tomcatから次の警告がでます。(エラーにはならず動作は予定通り) Invalid value {1} for server variable named {0}, falling back to sane default of {2}. ですが警告内の{1}や{0}が何をさすのかわからず、意味がわかりません。 web.xmlなど各設定の記述順の違いかと思い見てみましたが、影響してそうな部分は見つかりませんでした。 printなどで確認すると、 Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Hoge"); db = ds.getConnection(); //ここで警告がでる模様。取得したデータソースが×? 原因を推測できる方いたらお願いします。
230 :
デフォルトの名無しさん :2009/03/05(木) 04:32:26
ファイルを読み込むクラスA ファイルに書き込むクラスB javascriptからの値を受けとるクラスCを作成したのですが クラスCからクラスA、Bの機能を使うにはどうすればいいのでしょうか?
232 :
デフォルトの名無しさん :2009/03/05(木) 14:17:34
<%@ page language="java"%> <%@ page contentType = "text/html; charset = Windows-31J" pageEncoding = "Windows-31J"%> <html> <head> <title>テスト</title> </head> <body> <form method="post" action="Test"> <input type="submit" name="test" value="確認"> </form> </body> </html> これで実行したところエラーになるのはなぜでしょうか
どこかが間違ってるからじゃないでしょうか
234 :
デフォルトの名無しさん :2009/03/05(木) 15:56:13
あげ
235 :
デフォルトの名無しさん :2009/03/05(木) 16:57:15
禿げだとぉ?
>エラーになるのはなぜでしょうか 病院に行ってお医者さんに 「どこか具合が悪いので診てください」 って言ってるようなもん。 頭が痛いのか、チンコが痛いのか、なにか症状を言えよ。 なに?お医者さんだったら体のあちこちを押さえて 「ボク、ここがいたいでちゅかぁ?じゃ〜こっちでちゅか?」 って聞いてくれるだって? じゃぁ、おまいも 「ボク、何てエラーがでたんでちゅか〜?コンソールやログにメッセージが出てまちぇんかぁ?」 っていちいちこっちから尋ねんと答えられんのか?
実は・・・・チンコが痛いんです(アハ
>>236 初心者の頃、自分の場合は質問を丁寧にまとめようとすると自己解決してしまった経験よくあった。
だが、それがいいのかもしれない。。
239 :
デフォルトの名無しさん :2009/03/05(木) 18:59:15
今GUIで色々作ってみて遊んでるんですが、 ボタン(b1)を押すとフォーカスがボタンについちゃって その後、そのウィンドウでキー入力を受け付けてくれなくなってしまいます。 this.remove(b1);としてもキー入力ができなくて困っています。 フォーカスの外し方があるのなら、ご教授ください。
何が分からないか分からないと言った人が 何が分からないかを調べる責任があるらしい
すかしっぺの法則だな
>>239 (1)
requestFoucs() を呼んでフォーカスを移動する
(2)
ボタンの setFocusable(false) を呼んで
ボタンがフォーカスを持てないようにする
(3)
ボタンにも KeyListener を追加して
ボタンがフォーカスを持ってるときキーが押されても
キーイベントが発生するようにする
>失敗します。 病院に行ってお医者さんに 「どこか具合が悪いので診てください」 って言ってるようなもん。 頭が痛いのか、チンコが痛いのか、なにか症状を言えよ。 なに?お医者さんだったら体のあちこちを押さえて 「ボク、ここがいたいでちゅかぁ?じゃ〜こっちでちゅか?」 って聞いてくれるだって? じゃぁ、おまいも 「ボク、何てエラーがでたんでちゅか〜?コンソールやログにメッセージが出てまちぇんかぁ?」 っていちいちこっちから尋ねんと答えられんのか?
テンプレに載せたいぐらい的確な罵倒だ。
>>245 そうですね。表現が悪かったです。
例外が起こったりは全くありません。
申し訳ありませんが、対象アップローダのPHPの方のソースをご覧ください。
そちらのUpload failedのメッセージが出ます。つまりformデータが適切に送られていません。
症状としてはこれだけですが、バイナリレベルでやりとりされてるデータを見ると、MIME Multipart Media Encapsulationの内容は同じであるにも関わらず、WireShark(パケット解析ソフト)ではまずboundaryが認識されていないのです。
そこでそれまでのデータに問題があると考え、上のレベルで比較したところ
>>244 で書いたようなTCPのSource Portに違いがありました。
私が調べられたのはここまでで、もし問題点などが思いついたら教えていただきたいのです。
248 :
デフォルトの名無しさん :2009/03/07(土) 00:44:36
パケットキャプチャするとね・・・ばれちゃうんだよね・・・
250 :
239 :2009/03/07(土) 01:56:28
>>243 ありがとうございます。
(1)を使って無事解決しました。
ボタン(b1)とテキストエリア(t1)がある場合、
this.requestFocus();
this.remove(b1);
this.remove(t1);
の2行目と3行目を入れ替えるとうまくいかないのですが、、
とりあえず解決したので、これはこれ!それはそれ!としておきます。
252 :
sage :2009/03/07(土) 06:08:35
>>251 スレッドが適切ではなかったですね。すみませんでした。
>>242 --バウンダリ文字列 →開始
--バウンダリ文字列-- →終了
だったんですね。私の知識不足でした。
わざわざソースまで提示していただき、本当にありがとうございました。
254 :
デフォルトの名無しさん :2009/03/08(日) 19:08:28
findbugsのeffortオプションいじったら何が変わるんですか? 公式のドキュメントにはメモリ使用量なんかが変わるとしか書いてなくて困ってます。 findgubsのソースを読んだらbugをfindする際のオプションの切り替えをしている所は見つけたんですけど それぞれどんな意味があるのか分かりまあせんでした。
現在javaを勉強中ですが、文字のエンコードはUTF8が良いですか?それともEUCの方が良いですか?
UTF-8
257 :
デフォルトの名無しさん :2009/03/08(日) 21:32:41
ソースコード中に機種依存文字の、全角マイナス(0x817c)を含めた文字列を記述した場合、 コンパイルのエンコードオプションによって、2種類のUnicodeに変換されるということですが、 これはコンパイルする環境には依存しないのでしょうか? 例えば、Windows付属の文字コード一覧表には、Unicodeの「0xff0d」は存在するが、「0x2212」は存在しないため、 Windows環境で「CP943c」のエンコードオプションでコンパイルした場合、出力されたクラスファイルの中では、 0x2212に変換されていないのでは?(文字化けが発生している?)と疑問をもっています。
>>257 MS 製の環境でプログラム作ったことがないから良くわからんが
心配なら UTF-8 のソース書くか実験すれば済む話だと思うが…
知らないならレスしないでください
260 :
258 :2009/03/08(日) 22:54:34
>>257 仕様的には外部エンコーディングを UTF-8 に変換する手法までは決められていないので
どこの度のバージョンの処理系を使用しているか書かないと答えは得られない
261 :
デフォルトの名無しさん :2009/03/08(日) 23:54:58
>>258 判りにくい質問で申し訳ないです。
今回疑問に思っていることは、ソース中に「全角?」(0x817c)文字列が含まれている場合、
コンパイル時に、コンパイルを実行する機種に依存せず、1対1の変換(シフトJIS→Unicode)
を変換を行うのか?ということです(変換後のUnicodeはどの機種でも同じ)。
しかし、実際に、2通りのエンコーディングでコンパイルしたところ、変換後のUnicodeは、
MS932: 全角マイナス(0x817c) → 全角マイナス(0xff0d)
CP943c: 全角マイナス(0x817c) → 半角?(0x3f)
となり、MS932は意図した通りで、CP943cは、0x2122に変換されるはずが、そうではなかったので、
もしかしたらWindowsには、Unicodeの0x2122(全角?)が存在しないので、0x2122に変換してくれる
ないのでは?と思っています。
>>260 環境は、
OS:WindowsXP
Java:JDK1.5
です。
「UTF-8 に変換する手法」とは、エンコードの仕組み(エンコーディングごとのUnicodeへの
変換マップ)は、コンパイラの実装次第ということでしょうか?
262 :
デフォルトの名無しさん :2009/03/09(月) 00:00:40
>>260 なんどもすみません。
エンコーディングにお詳しいようですが、どのようにして知識を得られたのですか?
一応、今回の疑問で、私なりにSunのサイトや、書籍など調べたのですが、解決には
至りませんでした。
Javaのコンパイル時のエンコーディングの仕組みについて何かお勧めの書籍やサイトなど
よろしければ教えて頂けないでしょうか?
263 :
デフォルトの名無しさん :2009/03/09(月) 00:18:09
未熟者ってことだろ
>>262 教えてgooのjavaカテゴリで聞けば
凄腕のお姉さんが教えてくれるよ
265 :
デフォルトの名無しさん :2009/03/09(月) 00:50:38
>>264 ありがとうございました。
このようなサイトがあるとは知りませんでした。
専門的な事柄についての質問も多いですね。
もう一度自身で整理してから利用したいと思います。
みなさんありがとうございました。
266 :
デフォルトの名無しさん :2009/03/09(月) 01:56:28
Stream でソースコードと異なるディレクトリのファイルを指定するにはどうしたらいいのでしょうか?
このスレには凄腕はおりません
>>265 C:/ほにゃらら
って感じでフルパス指定しる
レス番号間違えたw あと、../ほにゃらら って感じで..つけると一つ上のディレクトリを指定できる
270 :
デフォルトの名無しさん :2009/03/09(月) 02:30:21
すいません ソースコードからの相対パスを使う場合にはどうすればいいのでしょうか InputStream is = new InputStream("Documents/Text/目的のファイル"); のような感じで
普通は実行時のカレントディレクトリからの相対パスしか取れない。 ソースコードからの相対パスは無理。 ただ何らかのIDEを使っていて、IDEの実行メニューから実行した 場合はプロジェクトのルートフォルダがカレントディレクトリになって いるんじゃないのかな(もちろん変更も可能だけど)。 なのでIDE上で実行する分にはある程度相対パスを決め打ちに 出来るはずです。
コンパイルされたクラスファイルから ソースコードの位置を特定することは無理でしょ クラスファイルからの相対パスなら取得できないこともない
Runtime#exec() で実行したシェルスクリプトがさらに子プロセスを起動するとき、 シェルスクリプトは終了していてもproc.waitFor()では子プロセスが終了するまで 帰ってきません。シェルスクリプトの終了で戻ってくるようにする方法は ありますでしょうか?&をつけて起動しても駄目でした。 やりたいのはtomcatの実行(catalina.sh start)を叩きたいだけなので、数秒まって proc.destroy()しても実害はないのですがなんか気持ち悪くて。 よろしくお願いします。
274 :
デフォルトの名無しさん :2009/03/09(月) 21:41:09
J2SE 1.4.2 のAPIリファレンスをダウンロードしようとSUNの公式ページにアクセスしたら、 「もう配布は終了したの、ごめんね」と言われてしまいました。 どこかのミラーサイトか、アップローダにないでしょうか?
>>275 ありがとうございます。
emoneの狭い画面でちまちま見ていて、下の方を見逃してました。
みなさんGUI関係でお勧めの書籍はありますか?
教えてください GUIプログラムにおいて、 JTextFieldクラスのオブジェクトを複数設置した場合、 タブキーで移動できますよね? その際にテキストフィールド内のテキストが 選択された状態にしたいんですが、 どのようにやればいいんでしょう? JTextFieldクラス内のメソッドでは無いんですかね?
int i1=100; String s1="00000"; とあるんですが、このi1を、Stringのs1に入れて文字列で"00100"としたいんですが、 具体的にどう記述すればいいですか? ちなみにs1の桁数はいつも5ケタで変わらず、i1は0-99999まで変動します。 int i1=20;だったらString s1="00020"、 int i1=120;だったらString s1="00120"・・・って風にしたいんです。
String good = "" + i1; String s1 = "00000"; s1 = s1.substring(0,s1.length - good.length) + good; 動かしてないから間違ってるかもしんないけど、サブストリーングで00000をgoodの文字数だけ削ればいくね?
s1 = String.format("%05d", i1);
s1 = new DecimalFormat("00000").format(i1);
s1 = ""; while (s1.length <= 4) { s1 = (i1 % 10) + s1; i %= 10; }
if(i1==20){ s1="00020" } else if(i1=120){ .....
ttp://www.kpdus.com/jad.html jad.exeのサイトがドメイン切れになってるみたいだけど、
どこか他に落とせるところ知ってる人いない?
もしくは、Eclipseでjarからソースを読みたいだけなので
jad.exeがなくても同等のことができるプラグインみたいなのがあればいいんだけど…
290 :
デフォルトの名無しさん :2009/03/12(木) 13:18:01
OutputStreamをByteArrayInputStreamに変換する方法はありますか? 具体的には、 1.XML+XSLをJAXPに通し、解析して吐いたOutputStreamを 2.zipに圧縮したOutputStreamを吐き出す仕組みを作りたいです。 1で出来たモノを2でZipOutputStreamに渡すために、ByteArrayInputStreamの形でないとダメなようで。
291 :
279 :2009/03/12(木) 14:06:19
>>280 ありがとうございます。
なんかややこしいですが調べてみます。
少し教えて欲しいのですが… 現在、jcom.jarでサーバ側でEXCELのテンプレートを開いて帳票作成を行なっているのですが 繁忙期にどうやらEXCELの競合が発生してwebサーバが落ちる現象が発生しています。 このような状況を避ける為にはどのようにすればよろしいでしょうか? j-Integraのようなcomを扱う正規商品を買う以外方法は無いのでしょうか? また、買うとすればお勧めはありますか? すいませんが、アドバイスお願いします。
POIでがんばる。 OpenOfficeのテンプレートに変えて、OpenOfficeSDKから操作でがんばる。 どっちともやったことあるけど、どっちも面倒だよ。 金はないけど時間があるなら、がんばってみても良いと思う。
>>290 やったことないな。
java.io.PipedInputStream
でなんとかするんじゃね?
>>290 ByteArrayOutputStream に出力させて
出力後に toByteArray() で得た byte[] を
ByteArrayInputStream のコンストラクタに突っ込む
VBSのバッチでExcel作らせてそれキックならやったことあるぜ
String name = obujekuto.getClass().getName(); とすると、フルで長〜いクラス名が帰ってくるのですが 末端の短い名前だけ取得する方法はありますか? 例: "jp.co.uncoproject.hoge.fuga.Unko" → "Unko"
>>297 おれなら、そんな無駄なメンバまで用意しない。
自分でちょん切るしかないんだろ
>>297 Class#getSimpleName()
300 :
297 :2009/03/12(木) 15:16:24
>>299 ありがとうございました。もっとよくマニュアルを読むべきでしたね。
>>298 豆腐の角におちんちんぶつけて氏ね
JTable + JScrollPane でプログラムで選択した行を表示範囲に含めるには どうしたらいいですか? 行選択は SelectionModel を取得すれば出来るんですが。
>>302 表示したい行のセルを含む矩形をJtable#getCellRectで取得して、
JScrollPaneのビューポートに対してJViewport#setViewPositionを使って
その矩形が表示されるようにビューの座標を設定する。
手っ取り早くRectangle#getLocationで得られる位置をsetViewPositionで設定すれば、
ビューポートの左上にそのセルが表示される。
セルがビューの下端近辺とかなら左上にはならないかもしれないが少なくとも表示範囲内のはず。
できるだけビューポートの中央に表示したいとかなら、
ビューポートの大きさとセルの座標からビューポートの左上に位置付けるべきビューの座標を計算できる。
304 :
デフォルトの名無しさん :2009/03/13(金) 07:12:45
豆腐の角におチンチンあてがうと気持ちいいよね〜 砕け散った豆腐のカスがおチンチンにこびり付くし・・・
javaでインストール時にファイルが開かないと出たエラーだけど je6?のフォルダ内を削除したらインストール出来るようになりました! レジストリのjavaにもっとも関係するのを削除して マイコンピューターの環境変数の設定(削除など)して やったら直りました。 ただ、レジストリをいじくるとPCが起動しなくなったり 壊れて使え物にならなくなったりするから注意 java 環境変数 などグーグル検索してよく調べてからインストールした方が良いよ
>>302 テーブルのgetCellRectでとってきた範囲をnullチェック後
テーブルのscrollRectToVisibleで設定する
>>303 ,306
thank you, guys
308 :
デフォルトの名無しさん :2009/03/13(金) 09:18:51
appletから同胞してるJarの中のbinaryファイルを InputStreamで読み込めない。アクセス違反。 txtは読み込める。appletviewerだと読み込める。 こんなもんかな?
javaのフリーソフトを落としたのですが jarダブルクリックしても Could not find the class:Program will exit というエラーが出てしまいます。 どうしたらいいのでしょうか? 自分はプログラムのことは全く分かりません。 javaランタイムは6-12入れています スレ違いならすみませんがどなたか教えて下さい よろしくお願いします。m(__)m
そのフリーソフトの説明書を読んでよ。
>>310 ソフトの説明にはjavaランタイムが入っていればjarファイルをダブルクリックで起動出来ますとしか書いてありません。m(__)m
>>311 他のjar起動のソフトもエラー出るので、自分のPC環境がおかしいと思われますm(__)m
java.lang.Stringにannotationを付与したいんだけど、リフレクションでは付与できず javaassist等でもjava.lang.Stringには手を出せない。 どうするのが一番簡単だろうか?
素直にあきらめろ
無理なんじゃね? JDKのライセンスで「java.*とjavax.*はいじるなゴラァ」となってたような。
>>312 それ、何でか知らねーけどいつの間にかなってるんだよな。
とりあえずコマンドプロンプトで起動する方法をぐぐれ。
java -jar "JARファイル"
Swing (AWT) のイベントディスパッチスレッド内のアプリケーション処理で例外が発生した時、 デフォルトだと標準エラーにスタックトレース出すだけですよね? これを一括でハンドリングしたい んだけど何か良い方法ないですかね? 膨大なイベントハンドラ全てに try-catch 仕掛けるのは 現実的ではないし、ThreadGroup#uncaughtException() みたいな機能があれば良いんですけど。
sunのコンソールがみれなくなった
>>316 入れ直してみたけど駄目でした(/--)/
>>317 もう一度ググってみますm(__)m
コレクションのHashMapは全要素を取り出す〔表示〕できないんでしょうか? ArrayListなどだと要素番号が0から規則正しく始まるのでfor(int i=0;i<a.length;i++) などと要素全部取り出せますが、HashMapはキーの型が不規則なので 全表示できませんでした
コレクションから値取り出すときってiterator+whileじゃないか普通
キーワードは「Java Map Iterator Map.Entry(必要なら)」だ。検索を。 まず゜SetをとってきてあとはIteratorで全要素をとってくるイメージ。
インナークラスを外側のクラスの別の場所で継承したいんだけど 下記みたいなへんなコンストラクタ作んないとコンパイルが通らないっす。 もうちっと簡単スマートな書き方ないっすか? 外クラスのオブジェクトを引数にとらなきゃいけない宿命なんすか? あとインナークラスの無名派生クラスを生成するときは o.new Inner(){}; ってかけるのに 名前つきの派生クラスだと o.new ExInner(); ってかけないの? public class Outer { public class Inner{ } } class ExInner extends Outer.Inner{ /* * ココ! */ public ExInner(Outer o){ o.super(); } }
>>321 HashMap<String,String> map = new HashMap<String,String>();
map.put("a", "ほげ");
map.put("b", "もげ");
map.put("c", "ふが");
for (Object key: map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
>>324 > 外クラスのオブジェクトを引数にとらなきゃいけない宿命なんすか?
別に引数に取らなくてもいいけど、
コンストラクタを明示的に呼ばないといけないから
new Outer().super(); とかしないと駄目。
> o.new ExInner(); ってかけないの?
無理。
>>324 public class Outer{
public static class Inner{
}
}
バイト列を対象にしたReaderについて教えてください。 テキストファイルを読み込んで解析するプログラムを作っているのですが、 ファイルが巨大であるためBufferedReaderで直接読み込むとアクセスランプが付きっ放しになって エライ時間がかかってしまいます。 傍目に見ても効率がよさそうではないため、いったんメモリに読み込んでbyte[]にしてから解析をしようと思うのですが、 InputStreamのソースをbyte[]にする方法が分からずに悩んでいます。
>>328 java.nio.ByteBuffer 使った方がいいんじゃね?
BufferedInputStream bis = new BufferedInputStream(new InputStream(new File("ファイル名"))); int c; byte[] b = byte[1024]; while((c=bis.read(b))!=-1) /* 処理とか */ のようにすればいいと思われ。 1024は適当に値いじればいいと思うよ
あー、対象が文字列なら、CharBuffer の方がいいかな。
>>329-331 早速のお返事ありがとうございます。
APIリファレンス確認するとByteBufferでうまくいきそうな気がしてきました。
トライしてみます。
サイトのトップに幾つかの画像をランダム表示させることはできたのですが 幾つかのフラッシュファイルをランダムに表示させることができません。 どのように記述すればよいの教えていただけないでしょうか よろしくお願いします。
336 :
デフォルトの名無しさん :2009/03/15(日) 19:02:51
JSPの表記で <%, <%!, <%=, がありますよね。 このタグに名称はあるのでしょうか? 基本的なことだと思うのですが使い所がわからなかったので 定義を調べようとしたところ 名称さえわからず ぐぐる事さえできず困っています。
JSPタグ
スクリプトレット 宣言(declaration) 実行時式(Runtime Expression)
Javaを本格的に勉強しようと思うのですが 独学でやる場合に適した入門書でお勧めの ものを教えていただけないでしょうか。 始めようにも路頭に迷ってるって感じで・・・・ 御指南よろしくお願いします。
目標レベルと現在のレベルでも書いたほうがいいと思う。
342 :
334 :2009/03/16(月) 04:10:22
誰か教えてください。急ぎなんです。 先払いで10000wm払いますのでお願いします。
>>341 現段階は少し前に高田美樹著のJavaスタートブック
を一通りやってみたといったところです。
ただ詳しい説明が乏しく感じられほとんど
理解に至ることなく丸暗記という状態です。
そこで改めて別に入門書を購入して勉強し直そうと
思っています。
目標としてはとりあえず既にJavaで組まれたソフトの
ソースコードを読んで理解できる程度になりたいと思っています。
キー入力待ちの仕組みについて教えてください。 どの処理が「入力待ち」になっている処理かわかりません。 下記の二行は一連の流れです。 1-BufferedReader keyIn = new BufferedReader(new InputStreamReader(System.in)); 2-while (true) { System.out.println(keyin.readLine()); } 1のキー入力では、BufferedReaderがリターンキーを感知するまで返さないという原理で「入力待ち」ができていると考えています。 しかし、2の場合においても「入力待ち」ができます。 考えでは、whileし続けた場合はkeyin = nullとなると思うのですが(ファイルを読み込んだとき、ファイルの終わりがnullになるため)、なぜ「入力待ち」処理ができるんでしょうか? 2はkeyin.readLine()→1の処理で待ちという流れになるにしても理解不能です。
>>345 while (true) {
BufferedReader keyIn = new BufferedReader(new InputStreamReader(System.in));
System.out.println(keyin.readLine());
}
これなら納得するってこと?
>>345 >1のキー入力では、BufferedReaderがリターンキーを感知するまで返さないという原理で「入力待ち」ができていると考えています。
何を返さないって?
348 :
345 :2009/03/16(月) 18:24:08
>>346 それは理解できます。
BufferedReaderで待ち状態を作って、リターンキーが帰ってきたらprintlnで表示されますよね。
>>347 返さないというか返ってこないというほうが表現が正しかったです。
BufferedReaderが\nか\rを感知sるうまではプログラムはその先に進まず「入力待ち」になるという考えです。
なんか勘違いしてるっぽいな・・ BufferedReader keyIn = new BufferedReader(new InputStreamReader(System.in)); これは入力待ちじゃなくて標準入力のリーダーを生成しただけだよ。 インスタンス生成して入力待ちとか無い無い
350 :
345 :2009/03/16(月) 21:27:32
ちょっと勘違いしてたようです。 いろいろ試したところ、System.inは標準入力からのバイト配列でした。 あくまでBufferedReaderはまとめて表示するのを手伝ってるだけで、System.inが「入力待ち」を作ってるわけですね。 ということは、readLine()も仕様上、「入力待ち」という考えなんでしょうか 1回目は、最初のSystem.inから得られた1行を取得できますが、 whileで2週目が回ってきたときはあらたにSystem.inを取り込む処理を書いてないので普通に考えればnullとかになるはずですよね? この“見えない”System.in取り込みの処理はどういう内部構造になっているのかなと。
351 :
345 :2009/03/16(月) 21:36:27
納得しました。 keyinはSystem.inを取り込むインスタンスである以上、必要があれば常にSystem.inからの入力を求めるわけですね。 keyinがSystem.inとひもづけられているという考えをするとスッキリしました。 ありがとうございました。
StreamTokenizerの挙動について教えてください。ダブルクォーテーションに囲まれたテキストを引用符として扱いたいのですが、quoteCharの使い方が分からず、困っています。 下記のようなコード例で、ダブルクォーテーションの中身が無視されてしまいます。解決策をご教示頂ければ幸いです。 import java.io.StreamTokenizer; import java.io.StringReader; public class StringTakenizerTest { public static void main(String args[]){ String test="1 \"aaa\" 2 \"bbb\" 3 \"bbb\""; int kind; System.out.println(test); StreamTokenizer st=new StreamTokenizer(new StringReader(test)); st.quoteChar('\"'); // ダブルクォーテーションを引用符として扱って欲しい try{ while((kind = st.nextToken()) != StreamTokenizer.TT_EOF ){ switch ( kind ) { case StreamTokenizer.TT_WORD : System.out.println("文字列: " + st.sval); break; case StreamTokenizer.TT_NUMBER : System.out.println("数字: " + st.nval); break; } } }catch (Exception e) { e.printStackTrace(); } } }
353 :
352 :2009/03/16(月) 23:22:36
期待している出力は 1 "aaa" 2 "bbb" 3 "bbb" 文字列: aaa 数字: 1.0 文字列: bbb 数字: 2.0 文字列: ccc 数字: 3.0 というものなのですが、このコードを実行すると 1 "aaa" 2 "bbb" 3 "bbb" 数字: 1.0 数字: 2.0 数字: 3.0 となってしまいます。
355 :
352 :2009/03/16(月) 23:46:36
>>354 ありがとうございます。
失礼しました、公式に記載があったのですね。
…なるほど、そういう挙動だったのか…
文字コードについての質問です。 Strnig str = "あいうえお"; // UTF-16 という文字列があったとして、これを他の文字コードに変換するにはどうすればいいんでしょうか? String str2 = new String(str.getBytes("ISO2022JP")); などとすると、中の日本語表示がおかしくなってしまいます。 同様に、OutpuStreamでの文字コード指定でも表示がおかしくなるようです。 なにかいい解決方法はないでしょうか?
nio.charset.CharEncorderをつかう。
>>356 byte[] iso2022jp_string = "あいうえお".getBytes("ISO2022JP");
ソースコードがShift_JISだろうがUTF-8だろうが、
Stringは全部UTF-16でしか扱わない。
UTF-16以外の文字コード扱う場合は
基本的にバイナリデータ扱いになる。
java.io とか java.lang では 主に byte[] で
java.nio では主に ByteBuffer で扱う。
359 :
デフォルトの名無しさん :2009/03/17(火) 18:12:08
Graphics2D.drawString( ) を使ってマルチバイト文字を描画すると 文字化けします ( □□□□ になる) 正しく描画するにはどうすればよいでしょうか 目的としてはイメージファイルを生成したいだけです。 appletなどではありません。コマンドラインから実行するだけです。 描画したい文字列を new String(str.getBytes("UTF-8"),"UTF-8") など変換したり、入力の時点でさまざまな文字コードを試してもすべてダメのようでした。 バージョンは 1.6.0_02 で その実行環境はlinuxです。 あまり関係ないと思いますが、 実行前に export LANG=ja_JP.UTF-8 としています
クラス配列についての質問なのですが、例えばPointクラスで Point[] p = new Point[3]; として、pのすべての要素を初期化したい場合 for( int i =0; i<p.length; i++){ p[i]=new Point(); } と書くのと Arrays.fill( p, new Point()); と書くのとでは、なにか大きな違いはあるのでしょうか?
下の方はp[0] == p[1] == p[2]になる
363 :
356 :2009/03/17(火) 20:44:29
>>357-358 回答ありがとうございます。
文字コードの変換についてもCharsetEncoderを使ってもうまくいかなかったのですが、
テストと処理周りの見直しを行った結果、仕様の見落としが原因でした。
申し訳ないです、ありがとうございました。
364 :
h.t ◆S5hjT7ruak :2009/03/18(水) 10:35:58
先週も質問させていただいた292です。
>>293 の意見を受けて、現在POIでテスト中です。
で、また疑問が出てしまいましたので質問させてもらいます。
POIのver2.5で以下の記述を行いました。
001 FileInputStream in = null;
002 HSSFWorkbook workbook = null;
003 //エクセルオープン
004 in = new FileInputStream(fname);
005 try{ in = new FileInputStream(fname);
006 POIFSFileSystem fs = new POIFSFileSystem(in);
007 workbook = new HSSFWorkbook(fs);
008 }catch(IOException e){ System.out.println(e.toString());
009 }finally{ try{ in.close();
010 }catch (IOException e){ System.out.println(e.toString());}
011 } }
012 //シート取得
013 HSSFSheet sheet = workbook.getSheetAt(0);
014 //行取得
015 HSSFRow row1 = sheet.getRow(1);
016 //CELL番号
017 short cell_no = 0;
018 //CELL取得
019 HSSFCell cell1 = row1.getCell(cell_no);
020 if (cell1 == null){ cell1 = row1.createCell(cell_no); }
021 // 日本語対応
022 cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
023 // 事業所名セット
024 cell1.setCellValue(INdatas[0].Jigyoseg_name.trim() );
これを、最新のPOI ver3.2にする為、017行目のcell_noをintに、022行目を削除したのですが
019行目に「メソッドgetCell(int)は型HSSFCellで使用すべきではありません」
024行目に「メソッドsetCellValue(string)は型HSSFCellで使用すべきではありません」
のワーニングが表示され、実行すると015行目で落ちてしまいます。
POIのver2.5では問題なく動くのですが…だれかご教授お願いします。
スイマセン。落ちるのは019行目でした… ちなみに開発にはEclipse3.0を利用して外部jarで poi-3.2-FINAL-20081019.jar poi-contrib-3.2-FINAL-20081019.jar poi-scratchpad-3.2-FINAL-20081019.jar を追加しています。 上記ワーニングはEclipseで表示されます。
行番号付いてるけどBASICのプログラム?
>>366 馬鹿、代入に LET が付いてないだろ。
N88 なら 10 番飛ばしがデフォ
LETは省略可
>>366 説明するのにくっつけただけです。
3桁なのはなんとなくですw
371 :
デフォルトの名無しさん :2009/03/18(水) 18:12:16
コンパイルはできるのですが ちゃんと出力できませんorz class practive1 { public static void main(String args[]) { int a; int b; int c; a = 2; b = 5; System.out.println("a = " + a ); System.out.println("b = " + b ); System.out.println("値の入れ替え"); c = a; a = b; b = c; System.out.println("a = " + a ); System.out.println("b = " + b ); } }
>>370 OpenOfficeだったらわかるんだけどなー
iアプリの勉強をしてるのですが ClassSample1.java import com.nttdocomo.ui.*; public class ClassSample1 extends IApplication { public void start(){ int Kekka1, Kekka2; Menseki Zukei;//クラスの参照を宣言 Zukei = new Menseki();//クラスのインスタンスを生成 //@フィールドの利用 Zukei.x=30; Zukei.y=20; //Aメソッドの利用 Kekka1 = Zukei.Sikaku(); Kekka2 = Zukei.Sankaku(); //B出力 System.out.println("フィールドxの値:"+Integer.toString(Zukei.x)); System.out.println("フィールドyの値:"+Integer.toString(Zukei.y)); System.out.println("変数Kekka1の値:"+Integer.toString(Kekka1)); System.out.println("変数Kekka2の値:"+Integer.toString(Kekka2)); } } 行番号5 \12288は不正な文字です。と表示されます どこが可笑しいのでしょうか?
>>375 俺には 5 行目に全角スペースが見える。
>>376 ありがとうございます。ご指摘通りスペースの部分を削除したら動きました
感謝です
378 :
デフォルトの名無しさん :2009/03/18(水) 22:06:46
すいません、Java初心者です。 配列の領域値が1040KBに設定されている理由ってわかりますか?私は1024KBだったら納得いくのですが・・・ わかる方、教えてください。 よろしくお願いします。
IBMがSUNを買収するかもってニュースを見たのですが、 Java使いの立場からすると喜んでいいのか悲しむべきか・・
安心しろ、すでに Java は親元 Sun を離れて JCP で輪姦中だ。
サンのハード売れてないしなあ。 レッドハットのポジションを、自社ハードとソラリスで囲い込めば成功もしたかもしれないが。 コバルトキューブとか買収したのにうまく逝かせないのはもったいなかった。
おまいらに Sun が救えるのか
俺達がSunだ!
384 :
デフォルトの名無しさん :2009/03/19(木) 16:52:20
またまた、スイマセン。また、POIの質問です。申し訳ありません。
>>373 さんの意見を受けてやったのですが、やはり旨く動きません。
コンパイルは通るのですが…
で、間違ってるのかと思い以下の記述をしてみました。
HSSFRichTextString s_VAL = null;
s_VAL = new HSSFRichTextString( "TEST" );
そうすると、2行目で落ちます。
で、HSSFRichTextStringのソースを見ると
47 public HSSFRichTextString( String string )
48 {
49 if (string == null)
50 string = "";
51 this.string = new UnicodeString(string);
52 }
の51行目のUnicodeStringで落ちてましたので、テストソースにUnicodeStringを以下のように書いて見ると、
import org.apache.poi.hssf.record.*;
import java.util.*;
UnicodeString uni_T = UnicodeString("TEST");
の箇所でjava.lang.NoSuchMethodErrorで落ちました。
java.lang.NoSuchMethodError: org.apache.poi.hssf.record.UnicodeString.<init>(Ljava/lang/String;)V
これは、J2SDKのバージョンの問題なんでしょうか?
現在J2SDK Ver1.4.2を使用していますが…
>>384 POI全く使ったことないけど、そのエラーはJ2SDKの問題じゃないよ
UnicodeStringのStringを引数としたコンストラクタが見つからない、もしくはアクセス不可能であると考えるのが普通だろうね
386 :
デフォルトの名無しさん :2009/03/19(木) 20:38:50
<form method="post" action="
http://w1m.docomo.ne.jp/cp/iarea ">
<input type="hidden" name="ecode" value="OPENAREACODE">
<input type="hidden" name="msn" value="OPENAREAKEY">
<input type="hidden" name="nl" value="URL">
<input type="hidden" name="posinfo" value="1">
<input type="submit" name="ok" value="Open i Area">
</form>
パラメータ不正のため接続できませんでした。
となってしまいました。
どうすればいいでしょうか?
スレタイと
>>1 を 100 回読み直すと良いと思うよ
>>384 とりあえずうちの環境1.6では特に問題なし。
JOptionPane の OK_CANCEL_OPTION でキャンセルボタンに初期フォーカスを 合わせるにはどうしたら良いですか? 自分でボタン指定するしかない?
>>389 JOptionPaneのフォーカスに関連した話題がswingスレでやられているからあっちへ池
DocumentBuilderでHTMLのDOMオブジェクトを作りたいのですが、方法はあるのでしょうか?
>>391 HTMLはXMLではないのでHTMLからXMLに適合していない部分を補って無理矢理DOMを構築できるような
DocumentBuilderの実装を自作するかどこかから持ってこない限り無理。
XHTMLとして書かれているならそのままXMLとしてDocumentBuilderで扱える。
やはり標準ではできないんですね。 ありがとうございます。
>>393 HTMLを解析することが目的ならDOMではないけれど、
javax.swing.text.html.HTMLEditorKit.ParserCallbackのサブクラスを作って、
javax.swing.text.html.parser.ParserDelegatorに渡してやれば、
Readerから読み込まれるHTMLをSAXっぽい感じで扱える。
ParserCallbackの各ハンドルメソッドでツリーを構築してやるようにすれば
DOM的なデータ構造にもできると思う。
>>394 ありがとうございます。実装することになればその方法を用いてみようと思います。
Imageの中にpngから部分的に切り取った画像を入れたいのですが 切り取る矩形を引数にとって 切り取った画像をImageで返してくれる関数って有りませんか?
>>396 java.awt.image.BufferedImage#getSubimage(int, int, int, int)
>>397 ありがとうございます!
やってみます!
Javaで.NETでいうFile.ReadAllTextみたいなメソッドって無いんでしょうか。 BufferedReaderで全行読みつつ改行コード付け直す作業が不毛で仕方ないです。
>>399 標準APIにはない。
commons IO にはorg.apache.commons.io.FileUtils#readFileToString(File, String) とかあるよ。
クラスの中に複数のメソッドが入る これが基本ですね。
プレイヤーにコードを書き換えられたのを察知してゲームを強制終了やフリーズさせるのは何て仕組み?
必殺チート殺し
まあ通信エラーでも誤判定される諸刃の剣だけどな。
あるクラスにはフィールドを書き換えるAメソッドと フィールドを読み込んでなにかするBメソッドがあって、 AメソッドとBメソッドは別のスレッドから呼び出されるとします。 そのとき、Aメソッドで書き換えている途中に、Bメソッドがよびだされり しても大丈夫ですか? それとそれがおこらないようにするにはどうしたらいいですか? どうしても分かりません。よろしくお願いします。
406 :
デフォルトの名無しさん :2009/03/22(日) 11:25:28
>>407 syncronizedは一つのメソッドを同時に他のメソッドから呼び出せないことで、
syncronizedのついた別々のメソッドは同時に呼び出せるんじゃないんですか?
×syncronized ○synchronized
しらべたらあってました。 有難うございました。 さようなら。
入門書くらい読めよ
まぁ俺様が Java 始めた頃は入門書すらなかったけどな。
*7がどうのこうの言ってた時代が懐かしいw
*7ってなに?
俺様が始めたころはJavaす いや、なんでもない。
真空か いや何でもない
tibiaってゲームしってます? これはjavaで作られてるんですか?
よく解らんけど公式のトップページの拡張子は思いっきりphpだが
>>417 よくわからないが、クライアントは違うと思う
420 :
デフォルトの名無しさん :2009/03/23(月) 09:26:29
クラスのメンバとしての定数宣言で、以下のように書くと・・・ private static String REPLACE_ID Eclipseの警告メッセで、 >名前 'REPLACE_ID' はパターン '^[a-z][a-zA-Z0-9]*$' に一致しなければなりません。 というのが出ます。 ビルドして実行するのには問題無いですが、何か定数に名前付けるルールみたいなのあるんですか? これはそれに違反しているという警告ですか?
オブジェクトがいまいちわからない>_<
423 :
420 :2009/03/23(月) 13:37:18
正確には private static String REPLACE_ID = "文字列"; と記述したときにその警告が出ます。
SunとかのJavaの命名カルチャーだと思われる 先頭単語はすべて小文字、続く単語は先頭のみ大文字 ってどうですか?
final 付けたらOKとかない?
'^[a-z][a-zA-Z0-9]*$' に一致しなければなりません。 を素直に読むと、 一文字目は英小文字(aからzまで)で、 それ以降は英数文字(aからz、AからZ、0から9)が最後まで何個か(ゼロ個含む)続く文字列。
>>423 final 宣言がされていない変数だからキャメル表記 (replaceId 等) で書けという意味。
それが定数なら public static final String REPLACE_ID = "文字列" と書け。
// Sample.java import a.OtherPackageClass; class Sample extends OtherPackageClass { public static void main(String[] args) { OtherPackageClass opc = new OtherPackageClass(); opc.protectedInstanceMethod(); ←コンパイル時エラー opc.protectedStaticMethod(); ←こっちは実行できる } } // a/OtherPackageClass.java package a; public class OtherPackageClass { protected void protectedInstanceMethod() { System.out.println("protectedなインスタンスメソッド実行"); } protected static void protectedStaticMethod() { System.out.println("protectedなクラスメソッド実行"); } }
上記のソースコードの "opc.protectedInstanceMethod();" の部分で、 「protectedInstanceMethod()は a.OtherPackageClassでprotectedアクセスされます」 と表示され、コンパイルエラーになってしまいます。 一方、"opc.protectedStaticMethod();" の部分は、エラーは出ず、普通に実行できます。 記述した2つのメソッドは両方とも、スーパークラスのメンバにアクセスしようとしているし、 protectedは「全てのサブクラスからアクセス可能」という性質を持っているから、 2つともアクセスできると思うのですが・・・ なんでインスタンスメソッドの方だけアクセス出来ないのでしょうか??
>>429 protected を付けたインスタンスメソッドは同一インスタンスのスーパークラス (つまり super)
に対して呼び出せる。その例だと ocp.protectedInstanceMethod() は別インスタンスの
protected メソッドなので NG。一方で protected なクラスメソッドはそもそも特定のインスタンスと
結びついているわけではないのでサブクラス内からであればどこでも呼び出せる。
同一パッケージ内でも呼び出せるが話がややこしくなるので省略。
継承に関するアクセス権って、基本、 ・private ・protected ・public の三つで、 friendとかパッケージプライベートとかは オブジェクトやクラス間の横のつながりの不便さを補う為のもんだから、 分けてせつめいしたり理解させた方が誤解がないと思う。
friend?
You are my friend.
protected static void protectedStaticMethod(); で opc.protectedStaticMethod(); ←こっちは実行できる ほんとに?
>>434 Javaにはないけど、概念だけ教えとくと
パッケージプライベートの便利さがみえてくる。
>>430 大体答えは書かれていると思うけど、付け加えるとprotectedは
スーパークラスのメソッドを呼び出すための道具だとはあまり
「考えない方が」良いと思う。
この用途にはまずパッケージプライベートを使う方が良い。
何でもかんでもprotectedにしてしまうとそのクラスを利用する
他の開発者にとってはpublicと殆ど大差ないので。
protectedなメソッドはパッケージの開発者自身ではない第三者
がそのクラスを継承して使う際に、一部の実装を変更するため
に提供するもの、程度に考えた方が良い。
なのでprotectedなメソッドを実装する際は第三者に変更される
可能性を考慮して内容は最小限に、注意深く行う必要がある。
package test; public class Hoge { protected void funcM() { System.out.println("funcM"); } protected static void funcS() { System.out.println("funcS"); } } //++ import test.*; class Foo extends Hoge { void f1(Hoge other) { funcM(); // 継承してるのだからOK this.funcM(); // 継承してるのだからOK other.funcM(); // 他のインスタンスは× funcS(); // 継承してるのだからOK this.funcS(); // 継承してるのだからOK Hoge.funcS(); // 継承してるのだからOK other.funcS(); // staticなのだからインスタンスの確認は不要でOK!!! } } 最後のがちと特殊に見えるのかな。
>>436 よく見ると main() を持ってる Sample が OtherPackageClass のサブクラスになってる。
単に static だからじゃね?protected はカンケー無い
protected my friend
>継承に関するアクセス権って、基本、 >・private >・protected >・public >の三つで、 「なし」 を忘れてるよ。全部で4つだろ。java 入門書を最初から読み直せ。
なし=パッケージプライベート 勉強になったね^^
「基本」て言ってるしその直後にパッケージプライベートを挙げてるし (「なし」って何だよ)。 仕様書の最初の1ページ読んで実装始めるタイプだな。
「基本」って何だよwww
「アクセス権が3つ」は、誰が見ても明らかに間違いだろ。
パッケージプライベートや friend は OO の派生継承に絡むスコープの制限じゃないから 別扱いって意味じゃね。
どうでも良い知識をひけらかすためにいちいち煽るなよ ハズカシイ
OO全体を見てる奴とJavaしか視野に入ってない奴の齟齬だろ。
継承に関するアクセス権って、基本、 ・private ・protected ・public の三つで、 friendとかパッケージプライベートとかは オブジェクトやクラス間の横のつながりの不便さを補う為のもんだから、 分けてせつめいしたり理解させた方が誤解がないと思う。 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ どうでも良い知識をひけらかして大恥かいちゃったひと
パッケージプライベート=なしだと気付かず蘊蓄の御披露目しちゃった アフォ 赤面www
private protected てアクセス制御がどっかの言語にあったような、と思って調べたら JDK 1.0 だった。初版の虎本で見たんだったかな。あの本も今思えば、特に AWT あたりで 試行錯誤の結果と思われるむちゃくちゃな知識が書いてあったが。
454 :
429 :2009/03/23(月) 22:36:51
たくさんのレスありがとうございました。 なるほど、つまり、スーパークラスのオブジェクトを使って、 アクセスしようとしたことが原因なんですね。 cloneメソッドを調べる→あれ?protectedってなんだ? →そもそもメソッドを継承するってどゆこと? って感じでズブズブと深みにハマってしまいましたOTL --補足-- いろいろ調べてみたらcoreJAVAの225ページに、 「サブクラスから、スーパークラスのオブジェクトのprotectedなメンバにはアクセス出来ない。 なぜならprotected修飾子の性質を利用し、スーパークラスのprotectedなメンバにアクセスする目的で、 サブクラスを作成するのを防ぐためである」 みたいな事が書いてありました。
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ほうほうほう。 それじゃ何でスカイ? >friendとかパッケージプライベートとかは も入れて、全部で5つだとでも言うんでスカイ?
矢印って失敗すると恥ずかしいよな。
このスレの常識が決定いたしました! javaのアクセス権 ・private ・protected ・public ・friend ・パッケージプライベート の計三つです。 ギャハハハハハハハハ腹痛い〜〜〜
>>457 もうとっくに気付いてて、振り上げた拳をおろせなくなってるだけだとおもうけど、
>>433 では OO 的に意味のあるスコープ制約って Java でいう private, protected, public の
3 つだと言ってるところに、
>>443 で「Java のスコープ制約は『なし』も入れて 4 つだ」なんて
ズレた事言い始めるからおかしくなってんじゃねぇの。そうやってバカのふりしてあがくと
余計に無様を晒すだけだよ。
そんじゃ、「パッケージプライベート」 は 「OO 的に意味のあるスコープ制約」 ではありませ〜〜ん てか?
だったら private も 「OO 的に意味のあるスコープ制約」 に入らないよな・・・
で、結局、friend は Java の OO 的に意味のあるスコープ制約って なのか? ギャハハハハハハハ
パッケージという概念に OO は関係ないし、private なかったら OO のブラックボックス化が不可能だし。 という所まで理解は進んでいないのか。まぁ初心者質問スレだから良いけど… Java のスコープ制限 4 つってのもどっかの本で読んだ知識でしたって感じだな。
>>463 「パッケージ」
「パッケージプライベート」
この違いがわかっとらんの?
>パッケージという概念に OO は関係ないし、 それだたら、private も public も protected も OO とは関係ないじゃんw
>>464 パッケージプライベートがパッケージという概念の上に成り立っている事も理解できてないのか…
で、結局、friend は >Java の OO 的に意味のあるスコープ制約 なのかよ? ギャハハハハハハハ 笑い死にしそう〜
いきなり伸びてると思ったら馬鹿が発狂してるだけか
この人は侮辱を受けても、その場で言い返すことすらできないタイプだろう だから匿名のネットでうさを晴らす そんなことをしても、現実での自分の立場は変わらないのに
こうみるとJAVA忠のひとって、C++にいるカルトとはまた違った意味でカルトだよな。 VIPぐらいだとカルトとは言われないで「VIP発狂wwww」のかもしれないけどねぇ 言語設計者の定義でしかないし、アクセス権は3つってことでいいんじゃないの? たぶんカルトで発狂してる厨房よりははるかにOO思想に慣れてるしアクセス権について分かってると思うよ。 そういえばこの発狂カルトは、たぶんprotectedの質問した本人だろう。IP抜かれてんぞ。ばれてんだよw
ああ、こんなことをしても、 javaのアクセス権は ・private ・protected ・public ・friend ・パッケージプライベート の計三つです。 という現実は変わらないよ〜〜〜w
>言語設計者の定義でしかないし、アクセス権は3つってことでいいんじゃないの? まだ言ってるよw java のアクセス権は 3つ だってよ〜〜〜w
必死に複数レスに分けたりして、余程「なし」発言を流したいみたいだなこの人。 技術知識が無いのはもうバレバレなのに何顔真っ赤にしてんだか。
バカが自爆しているのを見ながら飲む酒はうまい。
なんだこの鬱陶しい流れは
____ / \ /\ キリッ 「なし」 を忘れてるよ . / (ー) (ー)\ 全部で4つだろ / ⌒(__人__)⌒ \ java 入門書を最初から読み直せ | |r┬-| | \ `ー’´ / ノ \ /´ ヽ | l \ ヽ -一””””~~``’ー?、 -一”””’ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <なしって何だおwwww /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー’´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l バンバン ヽ -一””””~~``’ー?、 -一”””’ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
final class Unko { protected void hoge() { System.out.println("うんこ:"); } } ↑ よくいるよね、こういうの。 final クラスのメソッドに protected 付けるバカ。
>>477 コーディング規約が古いところだとそもそも「なし(笑)」の考慮が抜けてる所が多いから
protected で代用されているとか、あと何かスコープ修飾子を付けとかないと気持ちの悪い
潔癖症とか (ないか)。
private final なインスタンスメソッドのように役割上無意味になってしまう修飾子の
組み合わせが出るのは仕方がない。だがこういうのは危険人物を見分ける指標になる。
479 :
デフォルトの名無しさん :2009/03/24(火) 00:23:10
スレが伸びてると思って期待してみたけど、鼻糞小僧が発狂しただけかw 恥ずかしい奴だったな。もう消えてなくなっちゃたんだろうけど
>>469 そうは言うけど
>>467 の知能じゃ無理だろ。
プログラム言語のパラダイムで考えてやっても無理だな。
たぶん、こいつの脳味噌にはクギでも突き刺さってんじゃないのか?
危険人物というよりも、クロージャとか次のパラダイムが入ってくるそうともいえなくなる。
482 :
デフォルトの名無しさん :2009/03/24(火) 00:32:17
ひさびさに鼻糞君が自爆したスレはここですか?
int型の数値を文字列Stringに変換できますか? int a=100を文字列として扱いたいのですが、 キャスト変換したらエラーでてしまいました
a.toString
>>481 去年のうちには出る出るとか言ってgdgdになってたから追うの止めてしまったけど
今どうなってんのさ 7 は。
>>483 int → String は Integer.toString(a) または String.valueOf(a)
String → int は Integer.parseInt(str)
scalaでいいじゃん、楽しいよscala クロージャまじ便利
488 :
483 :2009/03/24(火) 00:40:08
う〜ん・・・パッケージプライベート なんて言葉が出てきたから、ちょっと???と思った。 たとえば、hoge ディレクトリに Unko.java と Manko.java がある。 ■hoge/Unko.java package hoge; class Unko { int a = 999; //(あ) } ■hoge/Manko.java package hoge; class Manko { void hoge() { System.out.println( a ); //(い) } } (あ) の int a は private も protected も public も、何も付けていないから 「パッケージプライベート」である。 したがって (い) は正しく実行され 999 と表示される。 これは正しい?
>>489 Unko unko = new Unko();
System.out.println(unko.a);
なら 999 と表示される。パッケージプライベートは相手が同一パッケージに所属するか
どうか以外は public と同じ。
491 :
デフォルトの名無しさん :2009/03/24(火) 01:24:15
鼻糞君はまだいるのか?
>>490 つまり、間違ってるってこと?
>パッケージプライベートは相手が同一パッケージに所属するか
>どうか以外は public と同じ。
は?よくわかりません。
2つのソースファイルとも、package hoge; で「同一パッケージに所属する」から
Manko.java から Unko.java の a は「public と同じ」ようにアクセスできるんじゃないの?
そもそも java の パッケージプライベート って何?
■hoge/Unko.java package hoge; class Unko { int a = 999; //(あ) } ■hoge/Manko.java package hoge; class Manko { int a = 888; //(い) } こういった場合、(あ) と (い) の int a が重複してエラーになるの? パッケージプライベートだから。
>>492 ,494
a はパッケージ内のどこからでも参照できるが、特定の Unko インスタンスに
結びつけられた変数であって、C のグローバール変数みたいなものではない。
というかこれはスコープ以前の問題。
>>494 publicでも参照できないものが参照できるはずないだろ。
いやスコープか、スコープ修飾子以前の問題な。めんどくさいな。
なんかすげぇスレ伸びてると思ったらバカが出ただけか。
どこの開発現場か知らないが、勝手にネーミングするなって感じだな。
>パッケージ内のどこからでも参照できる はぁ?
hoge/Unko.java と hoge/Manko.java は同じパッケージなんですが・・・
パッケージ内のどこからでも参照できるワケないお!
503 :
384 :2009/03/24(火) 10:43:52
たびたびで申し訳ありません。
先週お聞きして、色々やって見たのですがやはり以下の場所で同じエラーが出て進みません。
import org.apache.poi.hssf.record.*;
import java.util.*;
UnicodeString uni_T = UnicodeString("TEST");
エラー
java.lang.NoSuchMethodError: org.apache.poi.hssf.record.UnicodeString(Ljava/lang/String;)V
J2SDKを1.6にしたりもしたのですが上記エラーから脱出できません。
>>385 さんの言葉を元にコンストラクタを見たのですが、
org.apache.poi.hssf.record.UnicodeString.UnicodeString(String arg0)
は存在しているもようです。
後、考えられる要因はなんでしょうか?
ひょっとして、Apache1.3やTomcat3.2のバージョンの問題でしょうか?
new UnicodeString("TEST");
入門書くらい読めよ
>>500 ,502
パッケージ内からなら private のようなアクセス制限はないだろ。
何を勘違いしてる?
すいません。 上の間違いをそのままコピーしたようで… UnicodeString uni_T = New UnicodeString("TEST"); です。この状態でエラーとなっています。
UnicodeString uni_T = new UnicodeString("TEST"); でした…orz
510 :
デフォルトの名無しさん :2009/03/24(火) 13:42:34
>>472-475 この鼻糞君なんだけど、自分の愚かさに気がつくのが怖くて3ヵ月後には自爆したくなるんじゃね?
511 :
デフォルトの名無しさん :2009/03/24(火) 13:49:50
確か次の目玉は、 swing nio2 annotation だったかな。moduleとかも入るような気がした。 クロジャーは時期尚早の結論になってやめたそうな。
何じゃクロージャー止めたんかい。なら去年のうちに確定できたろうに。
クロージャは去年の12月頃に一応の最終的な結論が出たみたい。 開発者向けの情報サイトでビデオ討論してた。 7の「これが目玉!」のスライドを見てみると、アノテーションについては言語サポートが強化されるから、次は多分アノテーションだけになると思うよ。
514 :
デフォルトの名無しさん :2009/03/24(火) 14:15:58
次は多分アノテーションだらけになると思うよ。
アノテーションて下手くそが設計すると C/C++ のプリプロセッサ並に意味不明な事になるよな。 言語体系変えないだけマシだけど。
>>503 の件ですが、自己解決しました。
ひょっとしてと思い、ApacheやTomcatもバージョンを上げるとなぜか問題なく動きます。
…Apache1.3やTomcat3.2,J2SDK1.4の環境ではPOIは2.5までしかまともに動かないようです…
プログラミングのスタイルについて皆さんの意見を下さい。 お聞きしたいのは「変数を、その変数が作られた意図とは異なる用途で使用するのはおk?」という点です。 以下に例題を記述します。 boolean execFlg = false; if (rs.next()) { execFlg = true; } //1件以上検索結果があればメソッド実行 if (execFlg) hoge.exec(); rsはありがちなresultSetと考えてください。検索結果の有無によりhoge.exec()の実行を制御する為にexecFlgというフラグを使用しています。 このソースの後ろに「検索結果の有無を出力する」という処理を追加する時、私の場合次のように書きます。
boolean execFlg = false; boolean rFlg = false; if (rs.next()) { execFlg = true; rFlg = true; } //1件以上検索結果があればメソッド実行 if (execFlg) hoge.exec(); if (rFlg) { System.out.println("データあり"); } else { System.out.println("データなし"); } この場合、「execFlgがあるんだからそれを使え」という方もいらっしゃいますが、 execFlgはあくまで「hoge.exec()を実行するか」を制御する為のフラグであり、 「検索結果の有無」を見る為のものではないという観点からここは多少冗長であっても 上のような書き方をするのがベストだと思うのですが、皆さんはこういうケースではどのようなスタイルで記述しますか?
フラグなどという名称はエロゲーだけでいい
変数の意味を「一件以上あるか」あるいは int にして件数を設定するだけの話。 boolean recordsExists = false; while(rs.next()){ … recordsExists = true; } if(recoredExists) hoge.exec(); System.out.println("データ有り"); } else { System.out.println("データなし"); }
「isナントカ」 だな。「フラグ」ってあまり使わない。
rsの行サイズ見て判断は駄目なのか
いろいろ他のつっこみどころに意見殺到してるけど 変数の再利用については、一般的に、避けるべし、となっているな バグの温床です
どこが「変数の再利用」?
>>517 ローカル変数ならばんばんやっちゃう
グローバル変数だと、頭がおかしくならない方を優先する
グローバル変数を検討した結果導入したのであれば 書き換えられたりするのが前提となるだろうから、 もうがんばって管理するしかないよな。
>>518 ケースバイケース。
当然、私見だけど、
その場合に関しては、将来、仕様修正やバージョンアップで
hoge.exec()の結果によって表示の有無が変化する可能性が
高い場合は分離しておく。
そうでなく、実行も表示もrsの結果の有無にのみ依存する
(=本質的な状態は一つしかない)ならば一つしか定義しない。
>>524 逆に同じ役割を持つ変数が複数あるのもバグの温床になるよ。
この場合、何方の変数もrsの有無しか表してない。
まあ、ぶっちゃければ
>>526 が正解だと思う。
自分はグローバル変数を使いたいけど、他人には書き換えられたくないと。
530 :
517 :2009/03/25(水) 23:49:24
皆さんありがとうございます。 自分では意味合い重視で上のようなやり方でやってるんですが、 それでかえって変わりにくくなるのは本意でないので 状況によって柔軟に使い分けたいと思います。
iCalendar形式のデータを読み取りたいのですが、パーサーは標準では ないのでしょうか?
532 :
名無し募集中。。。 :2009/03/26(木) 11:01:36
パーサ標準ってのが何を指してるのか解らんけどiCal4jじゃダメなの?
iCalendarなんてしょせんはRFC止まりだからなぁ。 標準化されてて普及してて幅広く使われなきゃ標準ライブラリには入れんだろう。 icalはアプリケーションレベルで使うもんだし。 ライブラリ層でも使うxmlとはちがうから。
MacOS X の URL (URLConnection) クラスって setInstanceFollowRedirect(true) でリダイレクトを 有効にしても自動にリダイレクトしないし、Cookie の受け渡しも自動でやってくれないようだが そういうもん? java version "1.6.0_07" Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153) Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_07-b06-57, mixed mode)
>>535 Windows環境ではとりあえずデフォルト値でされたよ
Locationヘッダ読んで自前したらいいかもね
本来の用途とは少しずれますが、ネットワーク関連ソフトの状況表示(***へ接続,レスポンス***などなど)にLogger+自前Handlerを使うのはありでしょうか?
>>535 http: から https: へとその逆のリダイレクトが自動で行わないみたいだった。
Cookie 管理も (ちょっと危険だが) 自分で実装したら HttpCookie の有効期限が
JP ロケールで機能しない JDK のバグにはまった orz
Swingを勉強しはじめたばかりなので、理解がしっかりとできていないので、 教えて欲しいんだけどMVCをSwingでやるとした場合に、 クラスの構成を中心にどういった感じで作っているのか、 活用しているデザインパターン等を教えて欲しいです。 今の自分の理解だと一つのクラスにVとCが一体化しているような感じの作り方をしていて、 一般的な作り方がわかっていないので不安に・・ そういった内容がある参考にしたらいいサイトとか本があれば教えて下さい。 身近にSwingわかる人がいないのでお願いします。
M: Documenet, XxxModel → データの管理と操作 V: JXxx (JComponent のサブクラス) → GUI 関係 C: XxxListener → イベントによるM操作、V調整を取り持つ だが、単純なアプリなら Swing のモデルは大げさだし、複雑になれば Swing のモデルでも 不足する。別にこれでやれば全て OK という黄金律はない。まぁ勉強なら自分なりに 試行錯誤で役割分担を分けてみて、これ以上は手間に合わない趣味の領域だと 理解できたところでゴールだろう。程度問題の結論を出すには経験しかない。
スレ違い気味だけど、INS キーのない MacBook で KeyEvent.VK_INSERT 相当の キーイベント発生させるキーストロークの組み合わせって何?
みんなマクなんて持ってないので分かりませんwww PCでも買いましょう。
マカーだけどそもそもMacOSはOSの機能としてインサートが無い
じゃイベント発生しないのかな。Command+I とかに変更するか。
Command+Iは普通情報ウインドウ開いちゃわないか ブラウザだと左側にブックマーク出ちゃったりとか
Java アプリだから動き的には問題ないけど。 じゃ Mac で JTable に行挿入とかのキーストロークの組み合わせはどうすべき?
携帯で動作させるアプリの質問です。 板・スレ違いだったらすみません。 どの機種にも互換性のあるものを作りたいのですが、 IphoneやPCに近い携帯が出てくると、携帯で実行ファイル(exe) を動作できたりする可能性もあるのではと思った経緯もあり、 DoJa(ドコモ)などは死滅する恐れがあるのではないかと考えました。 今から携帯用のアプリ開発を始めるなら、何がいいのでしょうか。 主観でも結構ですが、何かアドバイスを頂けませんか?
Starプロファイルって使えないの?Dojaはいずれ死ぬだろうね。 >PCに近い携帯が出てくると、携帯で実行ファイル これはすでにスマートフォンなら可能。 だから特にjavaでやらなきゃいけない理由はないよ。 まあ、WMのAPIをじかに叩きたいかは別にしてね。 iPhoneならobj-C触ったことない人がマスターするのにどれだけ時間かかるかってのもある。 まあ、携帯そのもので実行形式吐けるようにはならないからあくまでも携帯で動かしたいならJava MEやってればいい。 いってることが分からんならググるよろし。
548 :
546 :2009/03/28(土) 11:27:37
>>547 dです。携帯の事情はあまり詳しくなかったので、
とても参考になります。
549 :
538 :2009/03/28(土) 11:57:36
>>539 さん
ありがとうございます。
>M: Documenet, XxxModel → データの管理と操作
>V: JXxx (JComponent のサブクラス) → GUI 関係
>C: XxxListener → イベントによるM操作、V調整を取り持つ
これはわかりやすいです。
JButtonなどのコンポーネントを置くクラスの中で、例えばボタンを置いていた場合、
そのボタンにaddActionListenerで対応するイベント処理を書いていても問題なさそうかも・・
ちょっとWEBのJSPやservletでするMVCとは考え方を変えた方がうまく行きそうな気がする。
少し気楽に役割分担を変えたりしながら自分で納得できるものを探してみます。
androidのスレはどこですか?
落ちたよ
java -server って、jdk 入れないと動かないの? ふつうのランタイムじゃダメ? java で作ったアプリを配布するとき、 説明書に 「jdk をインスコ汁」って書かなきゃダメなの?
駄目
嘘つくな
後者は駄目だろ 前者は元々入ってるJDK/JREによる
ああそういうことか 後者の質問は前者と繋がってるのね JREじゃなくてJDKの方をって話か Java自体をインスコしろよって言わないと駄目って意味かと思ってた
サーバーVMってJREにはいってるのか
自分のJava-VM(J2SE1.6)だと、メモリ2G積んでるマシンでも newで確保出来る byte[]のサイズは高々60Mバイト弱みたい だけどこんなものなの?
>>558 SunのJREは入ってない
ってかServer VMじゃないと動かない実装って何?
562 :
559 :2009/03/29(日) 01:54:32
>>561 java -Xで調べてみたら確かにあった。
ちょっと指定にはカンめいたものがいるが
256Mバイト取れるようになった。ありがとう
>>560 誰も 「Server VMじゃないと動かない」 とは言って無い。夢でも見たんか?
Math.max(), Math.min() とかの引数に ... 版あればいいのに。 Math.max(int i1, int i2, int... other) みたいな。 とかいうチラ裏。 (↑これ書いとかないと超イラネー、理解できねー、ここで書いても云々、BugParade 逝けと 必ず荒れるんだよなー)
それ書いても...版の使い道が思い浮かばない。 まぁ、何がしたいのかってのが確実にわかるという点ではめりっとかのう。
Math.max(a, Math.max(b, Math.max(c, d))); まぁ確かにインラインで書くと汚いし、メソッドに分けるほどでもないしという微妙なラインだな。
オーバーライドしたらいいだけだろ。
static int max(int[] args) // 入力値条件略 int a = Integer.MIN_VALUE; for (int b : args) { a = Math.max(a, b); } return a; } んー。確かに微妙ではあるけどなぁ
>>569 引数なしの時に MIN_VALUE 返す挙動はおかしくね? というか引数は 2 つ以上を強制する
API でないと。
static int max(int a1, int a2, int... ao){
int max = (a1 > a2)? a1: a2;
for(int i=0; i<ao.length; i++){
max = (ao[i] > max)? ao[i]: max;
}
return max;
}
static int max(int a1, int a2, int... ao)とstatic int max(int a1, int a2, int.[] ao) って違うの?
>>572 前者は max(a, b), max(a, b, c), max(a, b, c, d), max(a, b, c, d, e) と呼び側の構文上で
引数の数を増やせる。後者は必ず引数 3 つだから max(a, b, new int[]{c, d, e}); みたいな
書き方をしないといけない。
>>571 static int max(int a1, int... ao){
int max = a1;
for(int i = 0; i < ao.length; ++i) {
if (max < ao[i]) {
max = ao[i];
}
}
return max;
}
びみょーにもりあがっとるなw
>>565 >(↑これ書いとかないと超イラネー、理解できねー、ここで書いても云々、BugParade 逝けと
>必ず荒れるんだよなー)
これを書くとあれるということも学習しとけ
>>574 何が言いたいのか分かりかねるが、それだと max(a) という意味のない書き方ができるが
そういうのはケアレスミスの元になるからコンパイル時に除外出来る API 設計の方が良いだろう。
集合理論に忠実な方が美しいんだ〜と理想を追い求める数学畑の人なら、まぁ気持ちは
分からなくはないので好きにしてくれという感じだが。
>>575 まぁ次の質問が来るまでスレ遊ばせておくのも何だし。
> そういうのはケアレスミスの元になるから int max(int a1, int... ao) を int max(int a1, int a2, int a3, int... ao) にすりゃいいだけじゃね?
Arrays.sort(list); int min = list[0]; int max = list[list.length - 1];
HTML 用のルーズ SAX パーサなんてもんはないかね?
NekoHTML?
何だかアホな質問ですみませんが なぜjava.lang.Mathクラスはfinalなんでしょうか? finalよりabstractにした方が、例えば特定の演算に特化したサブクラスを作れるといった メリットがあるように思えるのですが…
>>583 そうやってみんながサブクラスを作りまくったら
もうMathクラスの実装変えられなくなるから
ヒント:速度
>>583 sin() とか min() とか、実装を多態化させる必要のない機能 (C や FORTRAN の関数
に近い物) だからユーティリティとして提供されている。final 修飾子が付くとサブ
クラス化やオーバーライドが行われない事が保証されるためコンパイラや JVM が
インライン展開などの最適化を行うヒントになる。
クラス内で Math の修飾子付けないで static メソッドを簡易記述したいだけなら
import static を使え。
import static java.lang.Math.*;
System.out.printf("%d%n", min(100, 200));
補足: import static は Java SE 6 からなのでそれ以前の本やサイトには載ってないかもしれない。
嘘を吐いてはいかん 5からある
しつれいw
この前友達からもらったCDが、XPの5月30日問題のやつでインストしようとしたらMSの罠にはまるところだった。 この罠のことはもうだいぶ経ったから忘れかけてたけど、つくづくMSは信用してはいけないと思った。 C#とか使ってるやつはズルズルとMSの罠にはまってアップデートするために次のOSを買う羽目になるんだけどね・・
「ダイエーで万引きしたバナナが腐ってた。つくづくダイエーってのは使えねぇなと思った。」
>>592 本当に通報されるぞ
ネタでもそんなことを書くな
>>592 は
>>591 が盗品の瑕疵に文句をつける馬鹿ではないのかという可能性を指摘しようとして
下手な例え話をしようとしたが
>>593 には通じなかったもしくは通じなかった振りをされた
ただそれだけだ
気にするな
相手の言ってる事が気に入らない、詰まらない時、通じなかった振りはよくやる
596 :
デフォルトの名無しさん :2009/04/01(水) 18:14:13
通風になりました
UFO見えました
ドンペリ入りました
600 :
デフォルトの名無しさん :2009/04/01(水) 21:31:51
KeyがStringで、Valueは色んなクラスのオブジェクトが入る、 HashMapを作りたいんですが、ジェネリックの<>の中はどう書けばいいんでしょうか? それとも、そういうものは作れないんでしょうか?
Map<String,Object> map = new HashMap<String,Object>(); 当然ながら get() 時にはキャストが必要。
602 :
600 :2009/04/01(水) 21:50:50
>>601 なるほど。
どうもありがとうございます。
AudioClipで効果音を再生してるのですが、 音が重なると鳴らなくなる場合があります どうすれば回避できるでしょうか? たくさんAudioClipを用意しても駄目でした
つ Java Sound API
605 :
603 :2009/04/01(水) 22:32:43
606 :
デフォルトの名無しさん :2009/04/01(水) 23:33:42
/** * 入力バッファ1 と 入力バッファ2 の内容を xor した結果を out へ代入する。 * ※全バッファのサイズは同じとする * * @param out : 出力バッファ * @param in1 : 入力バッファ1 * @param in2 : 入力バッファ2 */ private static final void XOR( byte [] out, byte [] in1, byte [] in2) { int i; for(i = 0; i < outBuf.length; i++) { out[i] = (byte) in1[i] ^ in2[i]; } } これ以上にパフォーマンスが良くなる手段を思案中。 何か、案は無い?
int i; が for の外に出てるのはなんか意味があるのか?
608 :
606 :2009/04/01(水) 23:56:23
>607
特に無い。癖だわ。
それと…
>>606 の
誤: for(i = 0; i < outBuf.length; i++) {
正: for(i = 0; i < out.length; i++) {
だった。。
610 :
606 :2009/04/02(木) 00:05:15
>>609 やっぱり、その位かな?
便利なAPIとか埋もれてて、自分が探し出せてないのかなぁと期待したんだけどねぇ。。
z
intは処理系依存だから、ちょっと嫌な感じ。 バイナリで扱うのが素直じゃないか。
javaのintは固定じゃなかったけ
パフォーマンスを求められている時に素直だなんて何の意味もない。
616 :
デフォルトの名無しさん :2009/04/02(木) 03:44:50
ここの先生方!誰か教えてください!! class Foo{ int x; Foo(int x) {this.x=x;} void setX(int x) {this.x=x;} int getX() {return x;} } class Test{ public static void main(String[] args){ Foo f1=new Foo(500); System.out.println(" 1 : "+ f1.getX()); Test t=new Test(); Foo f2=t.toObj(f1); System.out.println(" 2 : "+ f2.getX()); } Foo toObj(Foo f1){ Foo f2=new Foo(100); System.out.println(" 3 : "+f1.getX()); return f2; } } Foo f2=t.toObj(f1);の引数のf1はなにを示しているのか、いまいちわかりません。 f1はインスタンス化してFooのコンストラクタに500を渡しているので、 f1は500の値を持っている、ということですか?
f1 → Foo のオブジェクトでその x には 500 の値。 t.toObj(f1) → その f1 を toObj() という処理に渡している。 Foo f2 = t.toObj(f1) → その toObj() の結果 (つまり new Foo(100) したオブジェクト) を f2 に設定。
>>617 ありがとう先生!
つまりf1=500
f2=100
ということですか?
もしFoo f1=new Foo(); と、コンストラクタに引数がない場合は
Foo f2=t.toObj(f1); のf1の値はどうなってしまうんですかね
Foo のコンストラクタは int を一つ指定するとコードに書いてあるので new Foo() のように書いてもコンパイルエラーになるだけ。言い換えれば 実行時にそのような状況は発生し得ない。
JUnit 3 の頃のテストスイートって 4 だとどうなるの? アノテーションベースになったし イクリープス だとテストケースが選択出来ないから 多分やり方が変わったんだよねこれ。
自己レス。テストスイートに対応するクラスに @RunWith(Suite.class) @SuiteClasses({ A.class, B.class, ...}) を付ければ良いのは分かったんだけど、スイートの実行前/後にどうやって処理を追加すれば 良いんだろう。とりあえず初期化/終了処理用に個別のテストケースを作って実行対象に入れたが。
スピーカから出る音をJavaを用いて取得することはできないでしょうか? よろしくお願いします。
>>622 java sound apiのサービスプロバイダが対応している録音機能を持つサウンドカードかM/Bと
それに接続できるマイクがあればできる
624 :
デフォルトの名無しさん :2009/04/03(金) 11:40:47
ja.jakartaってもう機能停止してるの? servletのjavadocアーカイブ欲しいのにみんななくなってる
android のスレってある?
以前あったが落ちた
何だこの既視感は
628 :
デフォルトの名無しさん :2009/04/03(金) 19:47:41
>>623 ありがとうございます。
マイクが必須なのですか?
パソコン上でなっている音をすべて録音したいと考えています。
その場合はマイクはいらないと思うのですが、どうなのでしょう?
>>620-621 @BeforeClass、@AfterClassのスィート単位のやつ?
>>624 MargeDoc(Pleiades)にJavadocアーカイブがあるよ
>>628 「スピーカーから出る音」っていったから>623はマイクを使えって答えたんだと思うよ。
スピーカーから出す前のおとをファイルに保存することなら
もっと簡単にできるよ。
AudioOutputStreamだったかな。もう忘れたよ。Java Sound Resourcesというサイトに
サンプルコードがあるから見てみるといいよ。
>>629 すっかり忘れていたがそうスイート単位の奴。
>>628 もしかして、他のアプリが出してる音を
Javaのプログラムから拾おうって話?
>ご飯よー! ;;-、 /ヽ;;) ∧_∧ / ∧_∧_(・∀・◎∩ (・∀・|[__|o|_∧つ ___ | つ ∩(・∀・ )) | i \ \ と_)_)( つ|三|O | i l =l と_) ̄) | |__ノ ノ  ̄ | ̄ ̄| ̄ ̄|
633 :
デフォルトの名無しさん :2009/04/04(土) 13:30:48
XPathAPI.selectSingleNode は戻り値がNodeインターフェースになってるのですが、 Element elem = (Element) XPathAPI.selectSingleNode(root, xpath); こうやって勝手にElementにキャストしても、Elementのメソッドが使えます。 戻り値の中身に実は、Elementインターフェースが実装されているということなんでしょうか?
XPath の示すノードが要素 (Element) だから Element が返ってくるだけのこと。 これが属性を指していれば Attr が返ってくるしテキストを指していれば Text が返ってくる。 Element も Attr も Text も Node のサブクラス。
635 :
633 :2009/04/04(土) 13:48:36
Nodeは色んな種類があるわけですね。 NodeイコールElementで考えてました。 どうもありがとうございます。
636 :
デフォルトの名無しさん :2009/04/04(土) 16:14:15
スレッドの勉強をしています。 下記のコードで service のスレッドを shutdownNow() で終了させたいのですが、思い通りに行きません。 どなたかご教授ください。 import java.util.concurrent.*; public class Test { public static void main(String[] args) { new Test().serviceTester(); } public void serviceTester() { service = Executors.newFixedThreadPool(4); System.out.println("Stopper start"); new Stopper().start(); System.out.println("Count1000 start"); service.execute(new Count1000()); } private class Stopper extends Thread { public void run() { try { System.out.println("in Stopper()"); TimeUnit.MILLISECONDS.sleep(10); System.out.println("Call stopService()"); stopService(); } catch (InterruptedException e) { e.printStackTrace(); } } }
637 :
636 :2009/04/04(土) 16:15:15
上のコードの続きです。 public void stopService() { System.out.println("in stopService()"); service.shutdownNow(); } private ExecutorService service; } class Count1000 implements Runnable { public void run() { for (int i = 0; i <= 1000; i++) System.out.println(i); } }
>>636 Thread#interrupted() Thread#isInterrupt() を使って割り込みステータス確認して、
割り込まれたら終了するように Count1000#run を書き直す。
>>636 public void run(){
for(int i=0; i<=1000 && ! Thread.isInterrupted(); i++){
System.out.println(i);
}
}
MacOS X の JDK ソースってどこかで手に入らない? Eclipse に Win 用ソースを指定しているんだけどたまに行がずれて不便なんだが。
マカウザイ。PC使えば?
ああここでもアフォ信者連中のせいで虐げられるか orz
643 :
636 :2009/04/04(土) 19:06:36
>>638 >>639 Count1000 を以下のように書き換えて思い通りの結果になりました。
ExecutorService の shutdownNow() が全部面倒見てくれると期待していたのですが、ちゃんと割り込みの処理も書かないといけなかったんですね。
ありがとうございました。
class Count1000 implements Runnable {
public void run() {
int i;
for (i = 0; i <= 1000; i++) {
if (Thread.interrupted())
break;
System.out.println(i);
}
if (i <= 1000) {
System.out.println("shutdownNow()によって終了された。");
}
}
}
オブジェクトの状態更新中やファイルロックしてる最中に勝手に外から スレッドが中断されたら困るので、終了判定/終了処理は手動で行わ なければならないようになっている。プロセスごと止めるならある程度 OS が面倒見てくれるが、スレッドではそういうわけには行かないし。 JDK 1.0 の頃から一応 Thread#stop() 呼べばスレッド側で ThreadDeath が発生して中断はするが、どこで中断するか分からない (=不整合状態を 残す可能性がある) ので 1.1 から推奨されなくなった。
646 :
デフォルトの名無しさん :2009/04/04(土) 21:43:36
>>646 自己解決したけどそこからは英語版しか落とせなくないですか?
648 :
デフォルトの名無しさん :2009/04/04(土) 22:49:48
ものすごい初歩の質問なんだけど public static void main(String [] args) の()の中って何の意味があるの? これないと system.out.println とかが使えないんだけどなんでだろ。
>ものすごい初歩の質問 入門書ぐらい嫁よ
println の呼び出しで何の情報を渡すか示すため。 あるいは main を呼び出す時に何の情報が必要か示すため。 言ってる意味分かる? 「なぜ括弧なのか」という話なら、そりゃ目的成就だけなら [] だろうが <> だろうが 何でも良いけど、言語仕様で丸括弧と決まっているから。
返レスどうも > println の呼び出しで何の情報を渡すか示すため。 printlnに文字列の配列を渡してるってこと? System.out.println(a+b+"オバマ"); ってaとかbはintのときでも文字扱いされてるってことかな? >main を呼び出す時に何の情報が必要か示すため。 ということはmain を呼び出すときに必要な情報が変わるということもあるってこと? たとえば int とかでもいいってこと?
>>651 前半はメソッドの括弧とは別の話。単に
String text = a + b + "オバマ";
System.out.println(text);
を簡略的に表記したにすぎない。+ 演算子は片方のオペランドが文字列なら
文字列連結と解釈される。つまり
String text = new StringBuilder().append(a).append(b).append("オバマ").toString();
として実行される。
後半は、呼び出される側がどんな情報を必要とするか (=呼び出し側が何を渡さなければ
ならないか) でメソッドの括弧の中身が決定するという意味。つまり括弧の中は
呼び出し側と呼び出される側で受け渡される情報の取り決め。
間違えた。演算の優先順位考えたら String text = new StringBuilder().append(a + b).append("オバマ").toString(); だな。
なんとなくつかめてきたようなw とりあえず┏O)) アザ━━━━━━━ス!
>>648 > public static void main(String [] args)
> の()の中って何の意味があるの?
mainメソッドが受け取るパラメータの型はString[]で変数名はargsだってことだろ
>>655 だったらvoidでいいじゃん! ってことだろ。
public static void main(String [] args) public static void main(void) この2つはまったく別の関数。 名前は同じでもパラメータが違うと、別の関数になる。 ・・・これもjavaの入門書に書いてある、超超超初歩の初歩だから とにかくいっぺん、入門書を嫁!
ああそういう意味か。 まぁそれはそれで Java の仕様で「static な void main(String[]) というメソッドを エントリポインタとする」と決まってるだけのこと。C/C++ だと int main(void) でも OK になってるけど。 しかしそれなら引数の String[] を省略したから System.out.println() が使えなくなった というのは何かの間違い。
>しかしそれなら引数の String[] を省略したから System.out.println() が使えなくなった >というのは何かの間違い。 おそらく、 public static void main(String [] args) が別に存在するような状況で、 public static void main(void) に書いた System.out.println() の出力がコンソールに出ない (public static void main(void) が呼ばれず実行されないため) のを見てそう思い込んだのでなかろうか。 もっと単純に「mainがねえぞゴルァ」というエラーメッセージの意味が分からず、 「System.out.println() が使えなくなった 」という表現をしてるのかもしれんけど。
アプレットで、あるコンポーネントを使う画面がDualCORE機で遅くなる。 セレロンの方が圧倒的に早いという事象に困っているんだが、VMって DualCORE対応なんだよね。コンポーネントが糞なのかな?
たぶんマザボが糞なんじゃね? どらいばかくにんsたか?
662 :
デフォルトの名無しさん :2009/04/05(日) 10:46:41
663 :
648 :2009/04/05(日) 13:11:42
>>655 意味があったんですね。
この質問はクローズさせて頂きます。
ありがとうございました。
今時の OS で動くものが 1CPU (1Core) しか活用できないなんて事はないだろう。 コンポーネントがどういうものかによるけど、とりあえず遅い方のマシンの JRE と ドライバ類を確認。あと別の処理に片系 Core が食われてないか (JavaScriptとか)。
ActiveMQ5.2でJMS使ってみているんだけど、質問するのに ここ以外に適したスレってあります?
Tomcat起動時にjava.net.SocketException: select failedが大量に出て起動できません…。 5.5、6.0ともに同様でした。 8080が使用中かと思い、変更してみましたがやはりダメでした。 仕方なくglassfishを入れてみましたが同じエラーが出て起動に失敗しました。 ちなみにWeblogicだと起動しましたが無茶苦茶重くて使い物になりません。 java.net.SocketException: select failed これについて原因は何なのか、分かる方いたら教えていただきたいです…。
>>666 select に失敗だけじゃ何とも分からないが、ありがちな所でパーソナルファイアウォール切ってる?
netstat -a の結果は?
>>665 ここでも良いけど EE 系の質問は平日の方が回答を得られる可能性が高い。
別に質問投げておけば答えたい人が答えたい時間に答えてくれるだろ
APIとして、あるインタフェースHogeのデフォルト実装(不変)を用意しようと思うんだけど、 (1)ユーティリティクラスHogesを作って、Hoges.DEFAULTを使ってもらうようにするのと、 (2)Hogeを継承したクラスDefaultHogeを作って、 シングルトンDefaultHoge.INSTANCEを使ってもらうようにするのと 使い分けの基準とかある?ぱっと考えたところ、 (1)は、Hogeに関する他の実装やユーティリティメソッドを後に追加するときに 追加する場所がまとまっていて、使い勝手が良いかもしれない。 (2)は、Javadocを追加する場所があるので、それぞれのメソッドに どのような規定値を使っているかの説明をするのに便利かもしれない。
>>667 さっそくありがとうございます。
エラーについては、
「致命的: エンドポイント ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8080]
は例外を無視しました: java.net.SocketException: select failured」
このようなものです。
Windowsファイアウォール、ノートンを切って実行しました。
netstat -aで8080をLISTENしているプロセスはありません。
すいません、ネットワーク関係は疎いので恐縮なんですが、
telnet localhost 8080してみたところ、
「ホストへ接続できませんでした。 ポート番号 8080: 接続に失敗しました」
と表示されます。
これが原因なんでしょうか。切っていないセキュリティソフトがあるとか…。
672 :
665 :2009/04/05(日) 17:47:13
>>668 >>669 thx
それではここで質問します。
環境はActiveMQ5.2.0です。
1. local transaction中で一旦read()してrollback()したメッセージを別のsessionから
再度読み込む方法がわかりません。QueueBrowserで一覧を取得すると含まれては
いるのですが、read()では結果が返ってきません。
RedeliveryPolicyの設定が関係してそうな気がするんですが、ドキュメントがほとんど
空でよくわかりませんでした。
2. IBM MQのようにファイル転送にも使いたいと思い、ActiveMQ独自機能のBlobMessageを
試してみたいのですが、uploaderをどのように準備するのかがわかりません。
デフォルトのURLは
http://localhost:8080/upload/になっているようなんですが 、サーバー
プロセスがこのポートを空けている様子もなく、activemq.xmlにもそれらしい設定も
見当たらず。別にhttpdを用意するにしても、なにをどう設定すればいいのか...
>>670 設計上の万人向け指針はないが、DefaultHoge を公開する必要がないなら (1)、
利用側でサブクラス化のための簡易実装版として使えるよう公開するなら (2) かな。
(1) なら Hoge の public static final DEFAULT に直接定義すれば良い。Hoges は不用。
(2) でも Hoge の public static final DEFAULT に直接定義すれば良いような気がする。
まぁそこは好きなように。
もちろん実行時に動的に実装を切り替える必要が将来的に発生しそうなら
定数じゃなくて getInstance() とかにしといた方が良い。定数的意味合いの強い
不変オブジェクトならそんな要件は無いと思うが。
>>671 LISTEN していないプロセスが居ないなら telnet で 8080 への接続に失敗するのは当然。
ようわからんので、他に悪さしそうなアプリが起動してないか、Windows の
イベントログに何か出てないか、再起動しても同じか、ipconfig (だっけ?) でちゃんと
NIC にアドレス割り当てられてるか確認。
675 :
670 :2009/04/05(日) 18:48:33
>>673 とりあえず、インタフェースHogeは、あるシステムに対する複数の設定値を
Hogeのメソッドで返すような感じで使っているんだけど、
したがって、Hogeの既定値を用意したとき、それを使用する側にとっては
それがどのような値なのかを知らずして採用はできないし、
そして、その既定値に依存したアプリケーションに対する互換性を考えると
一度、公開してしまったら、既定値を変更することはできない。
そういう意味では、実質的に実装を公開してしまっているのと同じであり、
今さら、(1)を使ってDefaultHogeを隠蔽する意味がない気がする。
また、(2)についてはDefaultHogeは、具象クラスだしサブクラス化はさせたくない。
だって、文法的にはメソッドの引数にDefaultHogeを使うことができて、
でも、サブクラス化でデフォルトじゃないものが設定できたりするのは気持ち悪い。
Javadocも、DefualtHogeのサブクラスでは
オーバライドしたメソッドのコメントまで上書きすることをユーザに要求しないと、
DefaultHogeから記述が継承されて間違った記述が生成されるし。
インタフェース内にそのデフォルトとなるものを埋め込む方法に関しては、
そのインタフェースを使うシステムの側からすると、そんな情報はいらないのに
形式的に依存することになるのがちょっと嫌かな。
>>675 >したがって、Hogeの既定値を用意したとき、それを使用する側にとっては
>それがどのような値なのかを知らずして採用はできないし、
このあたりの問題はこういう処理のしかたもあるんでは。
1.プロパティファイルでなんらかの指定をする(なんなら具象クラスのフルパッケージ名を指定)
ユーティリティクラスHoges はプロパティの値を解釈して生成する具象クラスを決める。
2. DIフレームワークを使い、使う側では setHoge( Hoge hoge ) メソッドを用意して、
具象クラスは設定ファイルで指定する。
>>675 呼び出し側が規定値を知ってる事が実装を公開している事にはならないだろう。
「規定値」そのものに意味がないならその具体値を示さなければ良いだけの話。
前半は何を言っているのか分からん。
(2) に関してはサブクラス化させたくないなら final 宣言しておけば良い。文法的に
メソッドの引数に DefaultHoge を使われたくないならパッケージプライベートか
インターフェース内の private な Inner クラスにでもしておけば良い。
>>674 ありがとうございます。
ipconfig /allで調べたところ、IPv6ですがアドレスは割り当てられているようです。
ローカルのTomcatにアクセスするのでネットワークは関係ないと思っていましたが、
どうもこの辺の知識が足りていないので
もうちょっと勉強してから分からなければ質問してみたいと思います。
ありがとうございました。
古い記憶なのでアレだが LAN やインターネットにつながっていない (172.0.0.1 しか 持っていない) 環境でのサーバソケットのオープンは失敗したような気がする。 最近は常時どこかしらのネットワークにつながってるので見たことないが。
680 :
670 :2009/04/05(日) 19:41:08
>>676 ユーザが1から設定値を指定したい場合に対応するのは、
インタフェースHogeを用意して、これで十分と考えている。
設定値をどのプロパティファイルから読み込んだりする云々は、
ユーザが自分の都合に合わせてプログラミングする。
または、後で、それ用の拡張パッケージを、別途、用意してあげるとか。
(もう疲れたからやらないと思うけど)
public static Properties getProperty() public static Properties getProperty(String resourceName) あんたの要件てこの 2 つのメソッドで十分なんじゃないの。
682 :
670 :2009/04/05(日) 20:06:19
>>677 >呼び出し側が規定値を知ってる事が実装を公開している事にはならないだろう。
実装を隠蔽することによって利点が得られるので、それで(1)を採用すべきだ、
という理由にはならないということ。
実装を隠蔽したとしても、そのシングルトンの説明(javadoc)に、
「このメソッドはこのような値を返すようになっています」一覧を作らないとたぶん困る。
隠蔽することによって、将来的に互換性を保ったまま何かしらの修正をする余地があるなら、
隠蔽することに価値があるんだけど、
(後だしで悪いんだけど)そのような複雑なクラスは含んでいないので(intを返すとか、InetAddressを返すとか)、
そのようなことは結構考えられないことになってることにして下さい。
>「規定値」そのものに意味がないならその具体値を示さなければ良いだけの話。
ちょっと良く分からない。とりあえず、
インタフェースHogeは、ユーザが設定できるものを抽出したものと考えてください。
>(2) に関してはサブクラス化させたくないなら final 宣言しておけば良い。文法的に
これは、
サブクラス化が便利だから(2)を採用すべきだ、
ということは理由にならないということ。
683 :
670 :2009/04/05(日) 20:22:48
>>681 しばらく考えてみたけど、良く分からない。
Hoges.DEFAULTやDefaultHoge.INSTANCEなどを追加してAPIを汚す
なんてことをするなってことかな
>>682 規定の具体値まで明かさないと使う側が組めないなら明かす以外に選択肢はないじゃん。
将来的にそれが変更になるリスクを使う側に追わせたくないなら、具体値を明かさなくても
良いように設計を見直すべき。デザパタで言うなら Adapter や Facade、Bridge といった
所だろう。インターフェースによる実装の差し替えだけでは考慮不足。
あと難しい説明しようとしないで何が分かればゴールなのか簡潔にしてくれないかな。
685 :
670 :2009/04/05(日) 20:38:26
>>684 ゴールは、(1)と(2)のどちらを採用すべきかを決める判断基準が何であるかを知りたい。
インタフェースHogeはユーザが決めることのできるパラメータを抽出したものであり、
既定値は明かす以外に他に選択肢はない。
「実装」なんて言葉使っちゃったけど、
決めたパラメータを列挙するだけの簡単なものです。
686 :
648 :2009/04/05(日) 20:46:03
>>685 その程度の事に凝ったことする必要はないってのが正解かな。Properties のようなのが
気にくわないなら項目ごとに getter/setter 用意すれば良いし、不変を保証した
「規定値オブジェクト」を提供したいなら Collections#unmodifiableMap() みたいな
設計を用意すればいい。
「実装」の隠蔽や差し替えが不用なら無理にインターフェースを使う必要はない。
特に構成パラメータを保持するだけならコンクリートクラスで十分。
689 :
670 :2009/04/05(日) 21:49:25
>>687 悩んでて言うのもなんだけど、
既定値のクラスまたはシングルトンを用意するのがそんなに凝ったことには思えない。
またシステムが要求するのは特定のインタフェースを持ったもの
というだけなので、あえて具象クラスを選択するのもなんだかなぁ。
不変はこだわりたい。ただし、Hogeに必要なパラメータ数は、
コンストラクタで列挙するには少なくないので、ビルダパターンを使います。
さて、このビルダーはどこに置けばいいのやら。
実装の公開を嫌って、インタフェース化して
Hogesの静的内部クラスとして実装してファクトリメソッドを用意する、
はやりすぎだな。
690 :
670 :2009/04/05(日) 21:59:42
>>689 の後半はチラシの裏です、無視して下さい
まぁどこまでが必要性でどこまでが趣味か注意だけすれば好きなようにすればいい。
692 :
670 :2009/04/06(月) 00:50:13
HogeをAPIにしたからには、これは、システムの所有物というよりは、むしろユーザ側の所有物であり、 システムの必要性の観点からHogeをインタフェースにするか具象クラスにするかを考えるのは、 システムの実装上の都合がAPIに漏れていることになること、 Hogeをインタフェースにすることでユーザが得られる利点は、おおよそアダプタを作れることであるが、 不変という条件を付けるとすると、結局、防御的コピーが必要になる可能性があること、 そしてアダプタを作ることとビルダを使うことに関する手間とパフォーマンスの優劣が微妙であること、 互換性に関していえば、インタフェースを使うと後からメソッドを追加することが不可能だが、 具象クラスならそれが可能であることから、むしろ、具象クラスを使う方が拡張性が高くなること を考えたら、Hogeを具象クラスにした方がいい気がしてきました。 Hogeを不変の具象クラスにして、public/protectedなコンストラクタは用意しない、 静的インスタンスDEFAULTを用意して、また、静的内部クラスにそのBuilderを用意する、 という方向性で検討してみたいと思います。 どうもありがとうございました。
693 :
660 :2009/04/06(月) 01:23:42
>>661-662 グラボはノートなんでよく分からん。
OSはXPもVISTAもNG。
jconsoleで見てみるとCPU使用率が50を超えないのが臭いんだが・・・
>>693 プロファイルを使え。JProfiler とか、アプレットでもコンパネの Java 設定で
起動オプション指定すればちゃんと使える。
というか Java の仕様上、同期化実装がヘボいとマルチプロセッサ環境で不整合を起こす 可能性は一応ある。実際にそれが原因とおぼしき事象にはあったことはないし、起きても 再現性もないだろうが。
HTとかだと詰まり易いけど、どうなんだろうね。 javavmがよしなに計らってくれるのだろうか。
697 :
デフォルトの名無しさん :2009/04/06(月) 07:54:48
・・・と雑魚が申しております
javaからndbm/gdbm/sdbmって扱えたっけ? ググったり、本眺めてみたけど見つからない。orz Cでライブラリ作って、JNIでぐりぐりやるべき?
699 :
デフォルトの名無しさん :2009/04/06(月) 13:50:50
700 :
デフォルトの名無しさん :2009/04/06(月) 14:05:10
質問です。
これまでVBなどをやっていて、javaをやり始めている状況です。
javaは、DB接続の際は、JDBCとかO/Rマッピングとかいろいろと技術が
あるようですが、javaの場合、DB接続は、その方法が
確立されていないということなのでしょうか?
http://www.atmarkit.co.jp/fjava/channel/javadb.html VB.NETの場合は、ADO.NETを使う。O/Rマッピングのようなスタイルで
やりたい場合はLINQで。というように方法が決まっているような
ところがありますが。
「確立されてない」とかいう単語をこのスレで使うと恐ろしいことになるぞw あまりに選択肢がありすぎて困るぐらいだなぁ。 とりあえず接続はJDBCで確立されているし、 O/RマッパーはHibernateがメジャー。日本ではSeasar2のS2DaoやらS2JDBCやら。 Oracle使いだとToplinkとか。 DB・規模によって柔軟に構成できる、と思ってれば良いんではないかなぁ。
702 :
デフォルトの名無しさん :2009/04/06(月) 15:12:27
>>701 レスありがとうございます。
なるほど。システムの仕様にあわせて柔軟な対応ができるという
解釈をするのですね。
すみません、続けて質問させてください。 O/Rマッピングは、ストアドプロシージャと併用するのでしょうか? 併用する場合、役割をどう分けて考えるのかがいまいちわかりません。 そのあたりのことが解説されてるページの案内でもいいので お願い致します。
ストアドプロシージャをどういうときに使うかって事が知りたいとなると Javaあんまり関係ないとおもうんだよなー。 DB中のデータを集計してDBに突っ込むような処理はストアドで処理 ってのが基本方針かな。 わざわざコスト払ってデータをローカルに持ってこないといけない処理かどうかを 考えればいいんじゃないかとおもう。
705 :
703 :2009/04/06(月) 16:50:08
自己解決しました。
708 :
デフォルトの名無しさん :2009/04/06(月) 17:16:48
VBでやることにしました。お騒せしました。
709 :
デフォルトの名無しさん :2009/04/06(月) 17:19:39
710 :
703 :2009/04/06(月) 17:27:33
このスレ初めて書き込んだけど、いつもこんな調子なの?
712 :
デフォルトの名無しさん :2009/04/06(月) 17:39:38
DBとOOPはデータの管理方法に差があるから、その間に橋渡しをする クラスを設計するという考え方はわかるし、同意する部分もあるが、 現状のマッパーは、その使い方を学ぶのに労力を要する部分が 多いので、さほどメリットが感じられないと思うのは俺だけ?
あんなもんコードで書くべきものを XML で書かせてるだけだから労力は変わらないよ。 むしろ増える。ただ目的に特化しているから好き勝手に書かれない (バカコーダー防止) のと、 DB に流れる SQL がそこに集約されてるからチューニング時に楽なのと、「設定ファイルに 外出しておきましました!」というと矢鱈と安心する無知な管理者 (例え実質的にコードが 書かれていようと) の為。
というか、マッパーのためのコードや設定ファイルって、 最終的には、ツールで自動生成するもんじゃないの。 例えば、Excel でテーブルデザインしたら、 VBA 使って自動生成するとか。
そんな単純なアクセスパターンで済むなら良いけどな。
716 :
デフォルトの名無しさん :2009/04/06(月) 18:54:34
class Test01 { public static void main(String[] args) { int[] itutu = new int[5]; int[] toh = new int[10]; for (int i = 0; i < itutu.length; i++) { itutu[i] = i; } こういうときに、itutu.lengthの、lengthというメゾットを いきなり使っているのですけど、どうして使えるのでしょうか。 このlengthというメゾットは、Test01クラスに、どのように紐ついて いるんでしょうか。java5日目です。
>>716 配列型は暗黙的に length というプロパティを持ってる (かのように振る舞ってくれる)。
718 :
デフォルトの名無しさん :2009/04/06(月) 19:00:00
>>717 ありがとうございます。
そのような暗黙的な一覧のようなものは、どこかで見れるのですか。
>>718 「Java 言語仕様 配列」でぐぐれ。
まぁ length と clone() に Object 型で定義されているメソッドだけだ。
720 :
デフォルトの名無しさん :2009/04/06(月) 19:13:32
>>719 調べてみます。わざわざ、ありがとうございました。
質問です。 javaには、ADOやADO.NETみたいに、DBサーバに接続し、 SELECTして取得したローカルデータを変更し、 update()するだけっていうものは無いのでしょうか? いわゆる、SQL文のUPDATEは書かずに済むっていうやつ
>>721 ResultSet のカーソルが当たっている行は更新できる。
ResultSet の API リファレンスくらい見ろ
>>724 見ました。ありがとうございます。
APIを読むようにする習慣も身につけるようにしたいと思います。
XML の Document に DocumentType 設定できねいの?
727 :
630 :2009/04/07(火) 01:20:02
>>631 なる。早速明日使ってみる。
客にどう説明すりゃ良いんだろう orz...
728 :
660 :2009/04/07(火) 01:21:49
名前を間違えた 番号だけどな(笑)
パエリアみたいな奴だっけ。
おじや風くらいの事は言えと。
抽象クラスや抽象メソッド作ってわざわざオーバーライドする意味が よくわからない どうせ抽象メソッドの内容カラなら、わざわざ親クラスに意味のないメソッド 作らなければいいのに
使う方が抽象クラスまでの型しか見なかったら、サブクラスで実装されているメソッドに何が あるか知りようがないじゃん? 抽象メソッドは「インスタンス化した時点でこのメソッドが 使える事を保証するけど実装はサブクラスにまかせてます」というもの。 abstract class AbstractFoo{ public abstract void foo(); } class Foo extends AbstractFoo{ public void foo(){ System.out.println("hello, world"); } public void bar(){ System.out.println("boo"); } } AbstractFoo hoge = new Foo(); hoge.foo(); // AbstractFoo インスタンスなら foo() が実装されているからこれはOK hoge.bar(); // hoge が bar() を実装しているかは AbstractFoo 型だけじゃ分からないから NG
>>699 JNIまんどくさなので、とりあえずjdbm使ってみる。ありがとう。
>>732 それは、複数のメンバーで開発をする場合に威力を発揮する。
仕様で決めたメソッド名を、末端の人たち(クラスを継承してつくる
担当の人たち)が勝手に変更できないようにするためだ。
「仕様の固定」みたいなことが目的。
無論、そういった必要性が無い状況であれば、意味のない機能だ。
補足 ComboBoxに項目追加する場合のメソッドは、AddItem ListBoxに項目追加する場合のメソッドは、AddItem という形にしておくと、使い方が統一されている クラスライブラリの提供が可能になる。
>>732 抽象クラスを作ることは必須では無いので、状況によっては
「意味のないメソッド」もあることでしょう
有用なメソッドであれば、APIを見るだけで意図が理解できると思います。
よく「初心者はPanelをつかっておけばいいよ」と聞きますが、PanelとContainerは具体的にどう違うんですか?
>>738 java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--java.awt.Panel
クラスライブラリのAPI仕様はドキュメントとしてあるので、
それをダウンロードしてじっくり眺めなされ。
そのAPIを読んでもあまり違いが見えないのですが・・・ Panelは実装しているメソッドは特になくContainerそのままでですし。 Panelを使わないでコンポネントを追加するときは文字通りContainerを使ったらいけないのですか?
Panel って AWT だろ。使うなら JPanel にしておき。 で Panel の API リファレンスを見れば分かるだろうがはっきり言って違いはほとんど無い。 だが Container を Panel と統合した場合、Window を Panel から派生させなければならなくなる。 Panel と Window は似て非なるもの。だから双方に共通する特徴を Container という形で 抽象化して共通のスーパークラスにしたと思われる。コンポジットでツリー化するなら 抽象化した方が良いし。 new でインスタンス化するなら Panel、その他、コンポーネントの親をたどったり、 GridBagLayout のユーティリティメソッドを作るような場合は Window のような非 Panel でも大丈夫なように Container として参照する。
だめだこりゃ
データベース接続についての質問です。 JDBCライブラリで接続してテーブルを読む時は、処理が終わるまで、 データベースとの接続を維持する必要がありますが、SELECTで 指定したテーブルをクラスにまとめてローカルのメモリなどに 保存するライブラリはないのでしょうか。
>>741 のようによく「初心者はPanelを使えばいいよ」といわれますが・・・
JPanelというのはlight weightであってContainerと実質同じなんですが、それも踏まえてPanelとどう違うかをお聞きしているんですけどやっぱり難しいんですか?
「Java謎+落とし穴」って本で「Swingはかなり重い」って書いてあったんですが 実際どうなんでしょうね
1.4で普通に使えるようになって、1.5以降ではかなり軽くなった。 今時のマシンだったら違いはわからんと思う。
>>746 実際は、そのシステムの種類によるでしょ。
ハードウェアとかプログラムの内容とか。
君が想定している範囲でテストをしないと
結論は出ないと思うよ。
>>746 今時の、というか一〜二世代前の環境でも問題はない。
先生方、インターフェースについて教えてください interface cc{ public static final int mp=210; public abstract void sum(); } public class a{ public static void main(String args[]){ sub asd=new sub(); asd.sum(); asd.sum1(); } } class superr{ public void sum1(){ System.out.println(mp); } } class sub extends superr implements cc{ public void sum(){ System.out.print("勇者のMP:"); } } インターフェースを実装したクラスsubの親クラスsuperrクラスでは インターフェースで設定した変数(int mp)は使用できないんでしょうか?
>>750 public なフィールドは継承関係にかかわらず参照できるんじゃね?
インターフェイスではもともと public static なフィールドしか宣言できないが。
superrはccを実装していないじゃん その場合に限ればsuperrの中でもcc.mpで参照できるけど
753 :
デフォルトの名無しさん :2009/04/07(火) 13:07:11
>>744 レスありがとうございます。
私がイメージしていたものは、O/Rマッピングというよりも、
テーブルのデータが配列(のような)形式で格納されている
ものです。
テーブルを読む際、レコードを進むだけでなく、戻ったりも出来て、
且つ、接続を切っててもデータにアクセスできるResultsetという
イメージなのですが。(帳票など参照系にはこういうのがあると
便利なので)
>>753 そんなツールを自分で作ってもたいした苦労なく作れる物だと思うが?
だいたいResultSetがそういう風になってないのには理由があると想像できない?
1000件程度のデータしか管理されていないのであれば、メモリ上に保持できるだろうけど、
これが10万件とかなったとき、どうするの?
自分の場合は1000件程度なんで大丈夫ですというのであれば、
LinkedListに値をHashMapで突っ込んだ奴でも返せば、足りるんじゃないかなぁ。
自分で作れとか書いたけど、DBUtilsは調べてみたほうが良いかもしれない。
756 :
デフォルトの名無しさん :2009/04/07(火) 13:53:21
>>754 レスありがとうございます。
ResultSetの設計理由も分かるのですが、M$製品の話ですが、
ADO.NETでは、テーブルのデータを丸ごとメモリに保存する機能が
あるのですよ。(DataTableクラスにデータが格納される)
それで、JDBC(広く言うとjava)の世界にもそういったもの
がないのかなと思って聞いてみたのです。
LinkedListやHashMapあたりを使って自作という結論に落ち着く
のでしょうかね。
>>755 調べてみます。ヒントとなるキーワードありがとうございます。
757 :
デフォルトの名無しさん :2009/04/07(火) 15:30:01
Fileクラスのlength()でファイルのサイズを取れるのはいいんだけど、バイト単位で扱いづらいです。 バイト単位の数値をキロバイト、メガバイトに変換してくれたり、適当な位置にカンマを入れて見やすくしてくれるクラスとかメソッドって無いですか? 自分で書くのは面倒くさいです。
これはまた大きな釣り針が・・・・
たぶんJavaじゃなくてVBかC+のスレの誤爆だと思いますよw
760 :
デフォルトの名無しさん :2009/04/07(火) 15:58:27
いやマジで いちいち割り算したり文字列にしてカンマ入れたりしてるの?
いちいち割り算って・・・。 カンマなら、NumberFormatとかDecimalFormatとか使えばいいじゃん。 たった2,3行書くのもいやなの?
762 :
デフォルトの名無しさん :2009/04/07(火) 16:16:28
いやです。
息をするのも面倒くせえとか言ってるとケンシロウに秘孔を突かれるぞ
764 :
デフォルトの名無しさん :2009/04/07(火) 16:31:14
息をするのもー 面倒くせえーよー
import java.text.DecimalFormat; public class test { public static void main(String[] args) { int i, n=10; DecimalFormat exFormat1 = new DecimalFormat("###,###,###"); for(i=1;i<=5;i++) { System.out.print(exFormat1.format(n)+", "); System.out.print(exFormat1.format(n/1024)+"K, "); System.out.print(exFormat1.format(n/1024/1024)+"M, "); System.out.println(exFormat1.format(n/1024/1024/1024)+"G"); n *= n; } } }
766 :
757 :2009/04/07(火) 17:14:13
767 :
757 :2009/04/07(火) 17:16:32
>>761 >NumberFormatとかDecimalFormat
そういえばそんなクラスがあった・・・
しょうがないから割り算するクラス作ることにしたよ
と思ったけど
>>765 にすごいクラスがあるからやめた
1000で割るとこだったよ。勉強になるな
768 :
757 :2009/04/07(火) 17:18:25
>>766 ちょwwwwwwwww
誰か知らんが俺自重wwwwwwwwwwwwwwwwwwwww
769 :
デフォルトの名無しさん :2009/04/07(火) 17:30:36
public interface SaicoroIF { public int nageru(); } public class Chouhan implements SaicoroIF { int[] deme = new int[] { 3, 4, 2, 1, 5, 6 }; int jj = 0; public int nageru() { jj++; if (jj == 6) jj = 0; return deme[jj]; } } public class Yogozansuka { public static void main(String[] args) { Yogozansuka syoubu = new Yogozansuka(); syoubu.nageru1(new Chouhan()); } public void nageru1(SaicoroIF saicoro) { for (int i = 0; i < 6; i++) { System.out.println(saicoro.nageru()); } } } こういう3つのファイルがあってYogozansukaを実行すると動くのですけど、 syoubu.nageru1(new chouhan());とpublic void nageru1(SaicoroIF saicoro) の関連がしっくりと理解できません。 Chouhanwoをオブジェクト化して、nageru1に渡していると思うのですけど、 nageru1では引数がSaicoroIFというインターフェイスになっています。 連動がイメージできないのですけど、教えてください。java6日目です。
>>769 SaicoroIF s = new Chouhan()
と書いて、s.bar()を呼び出すことができる。
違和感があると思う。
しかし、これがオブジェクト指向の入り口。
インタフェースのメソッドを呼ぶことでプログラミングする。
実際にどれがインスタンス化しているのかに想定を置かず、
どんどん書いていく。
一方、どこでどう使われいるかを考えたりせず、
インタフェースを満たすことだけを考えて、
どんどんサブクラス化させていく。
インタフェースで一旦区切って、
実装と仕様を切り離そうという戦略。
771 :
ミス :2009/04/07(火) 18:25:11
×と書いて、s.bar()を呼び出すことができる。 ○と書いて、s.nageru()を呼び出すことができる。
772 :
デフォルトの名無しさん :2009/04/07(火) 19:56:05
>>770 どうもです。
>SaicoroIF s = new Chouhan()
>と書いて、s.nageru()を呼び出すことができる。
上記のようにして、さらにChouhanクラスにダミーのメソッドを
追加してやってみたけど、うまく行きました。
ChouhanクラスにSaicoroIFというインターフェイスをimplementsしてますけど、
書物によると、全てのメソッドをオーバライドしないといけないと書いてあります。
全てをオーバライドすることで、Chouhanクラス独自のメソッドが存在しても、
SaicoroIFインターフェースのメソッドは全てimplementsしているから、
Chouhanクラスの型はSaicoroIFの型と一致するということでしょうか。
public void nageru1(SaicoroIF saicoro) というのは、
型がSaicoroIFのsを、単にsaicoroという任意の名前で渡しているのであって、
SaicoroIFのnageruメソッドをimplementsするクラスでは、
どのように振舞おうとも、【 nageru1(SaicoroIF saicoro)】のように汎用的に
呼び出せるから便利ですよということなんでしょうか。どうでしょうか。
誰かこのJAVA初心者に「EJB」を分かり易く説明してもらっていいですか? ネットで検索して調べても専門用語ばかりでよく理解できません・・・
Clipクラスでwaveファイルを再生しているのですが、 十数回以上鳴らすと、たまに音が出なくなってしまいます。 public void play(String name){ Clip clip = (Clip)clipMap.get(name); if(clip != null){ //再生位置を最初戻す clip.stop(); clip.setFramePosition(0); clip.start(); } } とやっているのですが、やり方が間違っているんでしょうか?
VBしか触ったことないんですが、VBユーザのためのJAVAの本ってありますか?
今日も馬鹿が多くてワロタwww
表明せずにはいられなかったんですね。
780 :
776 :2009/04/08(水) 01:33:24
>>777 とりあえず、一番上に出てきた「やさしいJava: 高橋 麻奈」を購入しようと思います。
ありがとうございました。
781 :
775 :2009/04/08(水) 02:48:18
自己解決させました
782 :
775 :2009/04/08(水) 02:53:33
自決しました。
783 :
デフォルトの名無しさん :2009/04/08(水) 05:15:34
あなたの魂もらっていいですか?
>>753 遅レスだが、
CachedRowSet は?Java5SE標準だけど。
>>772 > Chouhanクラスの型はSaicoroIFの型と一致するということでしょうか。
型が一致する、という言い方をするのかどうか知りませんが、
ただ、物事にはいろんな面があり、それを特性と呼んだり、
インタフェースと呼んだりするような感じで受け取っていて、
Chouhanクラスは少なくともSaicoroIFを満たす、少なくともSaicoroIFとして扱える、
という風なイメージで個人的には勝手に捉えています。
で、SaicoroIFに着目して少なくともSaicoroIFとして扱う分には、
Chouhanクラスの独自メソッドがどうの、などを気にせず済みます。
どのクラスで実装されているかも知らなくて済みます。
> public void nageru1(SaicoroIF saicoro) というのは、
> 型がSaicoroIFのsを、単にsaicoroという任意の名前で渡しているのであって、
その通りです。ただ、Chouhan c = new Chouhan();とした c であったり、
元のもののように単にnageru1(new Chouhan())とした場合も、
メソッドの中では、saicoroという名前でSaicoroIF型のオブジェクトを扱います。
> SaicoroIFのnageruメソッドをimplementsするクラスでは、
> どのように振舞おうとも、【 nageru1(SaicoroIF saicoro)】のように汎用的に
> 呼び出せるから便利ですよということなんでしょうか。どうでしょうか。
そうだと思います。オブジェクト郡に共通のインタフェースがあるとき、
それを通して色んなサブクラスのインスタンスを画一的に扱える、
もしくは、インタフェースの仕様だけを介して扱える、
実装がどうのこうのを考えなくていいのは少なくとも便利ですよね。
786 :
デフォルトの名無しさん :2009/04/08(水) 11:15:21
あれだろ 長門の一種みたいな そんな感じだろ?
外部コマンド(rm)実行について質問です。 下記(1)(2)はどちらも削除確認なしでtest.txtが削除されます。 execメソッドを使うと-fがあってもなくても強制削除になるのでしょうか。 (1)rmをオプション指定なしで実行 String command1 = "rm test.txt"; Process process = Runtime.getRuntime().exec(command); (2)rmを-fオプションで実行 String command2 = "rm -f test.txt"; Process process = Runtime.getRuntime().exec(command);
麻奈タソって昭和の女だっけ?
もともと rm ってデフォルトで確認無しの削除じゃなかったっけ? 間違ってたらすまん。
>>791 マジかと思って試したじゃないかw
ないないw
すまん、rootで実行していたw rootだと-iがつくね
>>791 rmは対象が書込み禁止だったりする場合は確認が入る。
そうでない時は-iオプションをつけない限り確認なし削除。
>>789 標準出力がttyに結びついていなければ確認なしに削除だった気がする。
確認のメッセージを出力することに意味がないので。
OSにもよるけどLinuxはたいていのディストリで-iにalias切ってある
796 :
デフォルトの名無しさん :2009/04/09(木) 00:14:53
何を切ったって?
>>789 Processクラスの説明には、
作成されたサブプロセスは、自身の端末またはコンソールを持ちません。
サブプロセスの標準入出力処理は...親プロセスにリダイレクトされます。
とあり、man rmによれば、
(-iが指定されている || ファイルが書き込み不可) && 標準入力が端末 && -fが指定されていない
の場合に標準エラーに問い合わせが出力され標準入力から返答を読み込む。
とあるので、Processのように標準入出力が親プロセスにリダイレクトされている場合は問い合わせしない。
798 :
デフォルトの名無しさん :2009/04/09(木) 00:18:04
Javaユーザーに足りないのはDRY(Don't Repeat Yourself)精神
>>796 「pathを切る」と同様に「aliasを切る」って言わない?
>>799 言うが、よく考えると謎が表現だよな……。
俺は「pathを通す」って言うな
ホントかどうか知らないが聞いた話。 トランプやカードは切ると言うよね。 コマンドがパンチされた穿孔カードを切る・・・ということらしい。
「使う」「決定する」というようなニュアンスで「切る」という表現も使う。 カードを切る、伝票を切る、ハンドルを切る、とか。
方向を切り開くって意味だと思う
806 :
デフォルトの名無しさん :2009/04/09(木) 01:39:19
トランプに関してはcutからだろうけど。 aliasに関してはcreateだろうし。
昔っから「れいがいがはっせい」で変換すると大抵の IME は文脈読んで 「冷害が発生」を優先するんだけど、何か対策できねえ?
2回目以降は一発で例外が発生になるだろ
809 :
デフォルトの名無しさん :2009/04/09(木) 06:06:15
トランプを切るのに相当する表現を英語ではcutを使うのか?
多分普通にトランプを切るというのに相当するは shuffle だけど cut は cut で2山に分けて上下入れ替えるという操作を指して普通に使われるようだ。
aliasを切るとは言わないってことだな。 そんな脳みそはできるだけ早く矯正しといたほうがいいだろう。
javaにはvbのbyrefみたいなものはないのでしょうか?
そうかbyrefクラスとか作ってnewしてから渡せばいいのか
マンドクセ 時は長さ 1 の配列でやっちゃう。 private でクラス内に閉じてる時限定だけど。
java はすべて byref で byval は無い、という理解なんだけど、間違ってる?
↓ここでエロい方による「参照の値渡し」についての説法が!
│ _、_ │ ヽ( ,_ノ`)ノ 残念、私のおいなりさんだ │ へノ / └→ ω ノ >
ちょっと swing で悩んでいるんだが、知恵を貸してください。 JFrame でウィンドウを作って、その右下をドラッグしてリサイズしようとすると、 普通は(WindowsのLookAndFeelの場合)、マウスを離すまで再描画しないですよね。 それを、マウスが移動するたび( mouseDragged 的なタイミング) に再描画させたいのですよ。 LookAndFeel を Metal に変えるとなぜか出来るんだけど、Windows の見た目が必要なので それも出来ず。 誰か助けて−。
ウィンドウズのオプションでサイズ変更中の描画をONにすりゃいいんじゃね?
どのメソッドでしょう? java.awt.Window, java.awt.Frame, javax.swing.JFrame を探しても それらしきメソッドが見つからないんですけど・・・。 コンストラクタの引数にもそれらしきものがないし・・・。 Frame.setResizable() は、ただリサイズ可能にするだけで、 リサイズ時の再描画の挙動までは設定できないし。
Mac に乗り換える
823 :
819 :2009/04/09(木) 12:41:12
( ´∀`) そんなこと言われても・・・
825 :
819 :2009/04/09(木) 12:47:38
うーん、確かにそれで出来そうだけど・・・。 ソフトウェアだけでやりたいんすよ。LookAndFeel を metal にしたら出来たから ソフト的に不可能ってことは無いはず。 こりゃ LookAndFeel を自作する必要があるかな・・・。
試してないけど AWT の Toolkit#setDynamicLayout() の API リファレンス見れ。
ウィンドウズの設定無視して動くのは気持ち悪いが オプションで設定できるようにしてあればいいか
828 :
819 :2009/04/09(木) 13:04:09
ありがとうございます! 試したところ、 Toolkit.getDefaultToolkit().getDesktopProperty("awt.dynamicLayoutSupported") が false を返してきたため、Toolkit.setDynamicLayout() を実行しても何も変わりませんでした。 がっくし。 おっかしーなーと思って、 「コントロールパネル>システム>詳細設定>パフォーマンスを開いて 「ドラッグ中にウィンドウの内容を表示する」をONにしたら、上のプログラムもtrueを 返すようになり、意図したとおりに動くようになりました。 皆さん、ありがとうございましたー!うひょー!
829 :
デフォルトの名無しさん :2009/04/09(木) 13:55:50
結局それかよ!
つーかウィンドウズの設定に合わせて動くようになってんだなw
まあ、妥当な仕様だ。 開発者が合理的にものを考えてると信じてれば、 当然そういう仕様になってるだろうと思うべきところだが、 なぜか、そうでないと思い込んでしまってる俺ら。
俺ら → 俺
次のようなコンパイルエラーが出るのですがどうしたらよいでしょうか? final class MyMap extends Properties で、HashtableのときだけputAllで専用の処理をしたいのですが… : putAll の参照はあいまいです。 java.util.Hashtable<java.lang.Object,java.lang.Object> の メソッド putAll(java.util.Map<? extends K,? extends V>) と MyMap の メソッド putAll(java.util.Hashtable) が両方適合します。 if (ah!=null) ret[k].putAll((Hashtable) ah[k]);
質問させてもらいます。 「ねずみと象」というタイトルでTurtle classを使ったプログラムを作れという宿題が出ました。詳細は以下です。 ・象は群れをなす動物です。個々にランダムに動いている間に他の象に近づいたら一緒に行動します。 ・もし迷子の象が群れからかなり距離がある場合はランダムに行動し続けます。 ・もし1匹でも群れのメンバーが逃げたら全員ばらばらになります。(たぶん外壁にぶつかった時に分散します) ・ねずみは象の群れにつかまったら押しつぶされて消えます。 最初の1歩はスタート地点が一緒なのでランダムでおkです。 少し長くなりますがお願いします。 インターフェイス public interface Animal { public void act(); }
835 :
834 :2009/04/09(木) 20:25:36
Animal Worldクラス public class AnimalWorld extends World { ///////////////////fields///////////////////// /////////////////////constructors////////////////////// public AnimalWorld() { //call the default constructor for World super(); //a private method to set the background, etc. Picture backgroundPic = new Picture(640,480); backgroundPic.setAllPixelsToAColor(Color.black); this.setPicture(backgroundPic); this.repaint(); } ////////////////////methods///////////////////// public void run() throws Exception { List animalList = this.getTurtleList(); while(true) { for(int i=0;i<animalList.size();i++) { ((Animal)animalList.get(i)).act(); }//end for repaint(); Thread.sleep(200); } } }
836 :
834 :2009/04/09(木) 20:26:17
象クラス public class Elephant extends Turtle implements Animal { ///////////////////fields///////////////////// /////////////////////constructors////////////////////// /** * A constructor */ public Elephant(ModelDisplay modelDisplay) { //use parent constructor super(modelDisplay); this.setShellColor(Color.gray); setHeight(30); setWidth(30); penUp(); } ////////////////////methods///////////////////// public void act() { turn((int)(Math.random()*360)); forward((int)(Math.random()*100)); } }
837 :
834 :2009/04/09(木) 20:26:58
ねずみクラス public class Mouse extends Turtle implements Animal { ///////////////////fields///////////////////// /////////////////////constructors////////////////////// /** * A constructor */ public Mouse(ModelDisplay modelDisplay) { //use parent constructor super(modelDisplay); this.setShellColor(Color.white); setHeight(10); setWidth(10); penUp(); } ////////////////////methods///////////////////// public void act() { turn((int)(Math.random()*360)); forward((int)(Math.random()*100)); } } ループによって毎回オブジェクトの距離を測って動作を制御すればいいと思うのですが始めたばかりなのでやり方がわかりません・・・。 お願いします。
特定した
関係ないけど ねずみと象なのに、Turtleクラスなんだ・・・
>>839 because he taught us.
Javaって存在意義あるの?
MS嫌いで、でもc++は理解できない人に
844 :
デフォルトの名無しさん :2009/04/09(木) 23:02:06
c++でwebアプリ作るの面倒くさいから
webアプリならJavaよりC#のがいいね
なんでその3言語に限定すんのさ
C#ってどれくらい勉強すれば身に付くんだ?
少なからずCpurapuraよりは楽
VBとそうかわらないよ。。C#っていう名前に押されてる人が多いよね。
でも、結局は、phpやsqlも勉強しないといけないんでしょ。結局は!!
>>850 SQL はともかく PHP はいらないな
レベル低いなここ ゆとりガキの溜まり場か
JavaとSQLだけで、大抵のこと出来る?
次のようなコンパイルエラーが出るのですがどうしたらよいでしょうか? final class MyMap extends Properties public void putAlll(Hashtable h); で、MayMapではHashtableのときだけputAllで専用の処理をしたいのですが… : putAll の参照はあいまいです。 java.util.Hashtable<java.lang.Object,java.lang.Object> の メソッド putAll(java.util.Map<? extends K,? extends V>) と MyMap の メソッド putAll(java.util.Hashtable) が両方適合します。 if (ah!=null) ret[k].putAll((Hashtable) ah[k]);
>>854 public <K,V> void putAll(Hashtable<K,V> h)
ただしputAlに渡すものの型をジェネリクスできちんと限定しないと警告が出る
例えば public class A extends Properties { public <K,V> void putAll(Hashtable<K,V> h) { System.out.println("hoge!"); } private void method() { Hashtable<Object, Object> t = new Hashtable<Object, Object>(); //Hashtable t = new Hashtable(); putAll(t);//AのputAll呼び出し HashMap<Object, Object> x = new HashMap<Object, Object>(); putAll(x);//Hashtableの方のputAll呼び出し } public static void main(String[] args) { new A().method(); } } Hashtable t = new Hashtable();の方でもputAll(Hashtable<K,V> h)を呼び出すけど コンパイル時に無検査であると警告が出る
警告じゃなくてエラーなので修正しないと先に進めないんです。 一応 public void putAlll(Properties h); もしくは -source 1.4 で回避できるんですけど。 このソースはjdk1.1縛りでapplet専用なんですが、ret.putAll( (Hashtable<O,O>) h)みたく ジェネリクス表記をつかわないとコール出来ないんでしょうか?
JDK1.1縛りなら、どっちにしろ -source 1.2 -target 1.1 とか 使わないといけないんじゃない?
そこは public void putAll( (Hashtable<?,?>) h); で回避できますが、 ジャヴァの(ソースコード)下位互換が保障されなかったところです。 よってすべてのソースに<?,?>を追加するためにソースにいちいち手を入れる必要があります。
なんだか後付けで情報が出てくるな
1.1用ソースだと言いつつ-source 1.4とかとも言ってるし
>>854 ではコンパイルは5のソースとしてコンパイルしようとしてるし
釣りか?
× 5のソース ○ 5以降のソース
854がエラーになるからとりあえず警告レベルで済むように855は引数の型をパラメータ化したんじゃないのか。 と思ったら古いソースか。 バージョン1.1なんだから1.1のコンパイラを使えば余計なオプションはいらねえぞww
古いコンパイラは使ってないんですが、ソースはjdk1.1互換としておきたくて古いソースに手を加えたくないってことです。 -source 1.4とかでジェネリクスを無効するのもいいのですが、やはりソース(の引数を)を修正しないとだめでしょうか? 一応netscape4.7とかはjdk 1.1のインタプリタなんですけど、1.1は別に時代遅れって言う代物でもなく、 内部クラスが作れるのでjavascriptなんかよりも優秀ですよ。
はぁ?
互換オプションでコンパイルしたとしても 1.2 以降で追加されたクラスや メソッド使ってていざ 1.1 で動かしても動きませんでした、なんて事も あるから 1.1 がターゲットなら 1.1 でコンパイルしておけ。
>>864 君のスキルじゃまだ早いし、話題についてこれないんだろ?w
背伸びして無理しないほうがいいよ
なんでいきなり内部クラスが出てくるのかわからない JavaScriptみたいな言語では非常に簡単にできることを無理やり実現するための機能だろ
他のスレでも書いたんだけど、androidのアプリ作りたいんだけど、eclipseは何をインストールすればいいの? WinVista32bit
ググレカス
871 :
デフォルトの名無しさん :2009/04/11(土) 00:02:48
Mac OSXでリアルタイムJavaのプログラムを作るor実行することは出来ますか?
>868 最新のeclipse3.4も対応してる。
eclipseで作成しているのですが Java1.4で作成しているプロジェクトに対して Java1.5で動作するTestNGを使用することは可能なのでしょうか? 可能な場合、どのような構成にすればいいのですか?
Scripting FrameworkでJRubyを使っているのですが、 JavaからRubyに文字列をバインドすると日本語が化けてしまいます。 どのように渡せば正しく処理されるのでしょうか。 なお、RubyからJavaでも化けますが、こちらはkconvのtoutf8で解決します。
まずは、rubyとjavaでそれぞれ日本語の扱いに付いて勉強するべき。 近道は無いよ。
知らないなら(ry
878 :
java2日目 :2009/04/11(土) 16:31:26
879 :
デフォルトの名無しさん :2009/04/11(土) 16:38:34
>>878 自己解決です。srcディレクトリたどったらありました。
880 :
875 :2009/04/11(土) 19:54:41
自己解決しました。 Ruby側でバインド変数を引数にorg.jruby.RubyStringを生成するだけでした。 これを空文字列と結合するとRubyのStringとして認識されるようになります。 どうもJRuby本体とScripting Framework経由では文字列の扱いが異なるみたいですね。 JRubyはUTF-8前提だから、ScriptEngine.evalと相性が悪いんでしょうか。素直にReaderで実装しろよと。
まずは、rubyとjavaでそれぞれ日本語の扱いに付いて勉強するべき。 近道は無いよ。
沸いてんのか?
浮いてんのか?
このスレで解決した質問ってほとんどないよね
上で続々自己解決してるじゃん その顔に付いてるのは節穴?
どの板でも初心者スレというのは半可通が知ったかするためのものですが何か。
import javax.swing.*; import java.awt.event.*; public class JFC extends JFrame implements ActionListener{ public static void main(String[] args){ JFC frame = new JFC(); frame.setSize(200,200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } JFC(){ JButton button = new JButton("Open JFileChooser"); button.addActionListener(this); getContentPane().add(button); } public void actionPerformed(ActionEvent e){ System.out.println("actionPerformed"); JFileChooser fc = new JFileChooser(); int openDialog = fc.showOpenDialog(this); } } フレームのボタンを押すとJFileChooserが開く、という物なのですが、ボタンを押すと An unexpected error has been detected by HotSpot Virtual Machine: EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77299207, pid=4580, tid=3364 と表示されることがあります。 これはプラットフォームに原因があるのでしょうか?
まず JDK の最新版を入れ直す。
>>888 最新版を入れていたものの、環境変数を更新するのを忘れていました…
更新後のテストではエラーが確認されず、どうやら成功のようです。
ご回答ありがとうございました。
入力された文字列に英字が入っているかどうかを判別したいのです 教えてください
まずは、rubyでそれぞれ英字の扱いに付いて勉強するべき。 近道は無いよ。
>>889 パス通してないって事はsystem以下にあるJREが壊れてるって事じゃないの?
OS大丈夫?
894 :
デフォルトの名無しさん :2009/04/12(日) 02:08:12
>>892 まずは正規表現を勉強するべき。
近道は無いよ。
2点程教えてくださいm(__)m javaのバグフィックスのリリースノートを見てて あるバグがどのような修正でなおったのかが知りたいのですが 特定のビルドをsvnやcvs等で取得することって可能でしょうか? もう一点の方は、 javaのパッケージの中に含まれるクラスを拡張したいと思ってるのですが、 extendsするのではなく、ソースコードを丸々コピーして使い易いように拡張しようと思ってます。 人の書いたソースを使いまわす形になってしまうのですが法的には問題あるものなのでしょうか? 技術的な質問ではありませんがお願いしますm(__)m
とりあえず著作権法とGPL勉強しような。 あとjava.*は改変禁止だったような
897 :
java3日目 :2009/04/12(日) 06:04:18
javaって簡単じゃなかったの? なんでクラスばっか使うの? java全く分かんない人がandroid app作れるようになる本は? なんでこのスレ盛り上がってないの? エラー出るけど何行目かおしえてくれないの?>>eclipse
質問があります.通常,ポップアップメニューは @フォーム(JFrameやJPanel)を右クリックしてポップアップメニューを表示して Aフォームのどこかクリックしたら(非アクティブになったら)自動的にポップアップメニュー消える ようになっていると思うんですが JPopupMenuにJPanelのせたらフォームをクリックしても(非アクティブにしても)自動的に消えないようになりました. フォームをクリックしたらJPopupMenuからフォーカスが消えるみたいにする方法はないでしょうか? ちなみにこのフォームはJFrame上にJPanelがエクセルのセルの様に並んでいます.
899 :
898 :2009/04/12(日) 09:47:49
自己解決しました.
簡単なことですがわからないことがあるので教えてください Appletで1枚の画像をただ横に動かすプログラムを作っているんですが、 画像が横に動く際に「チラつき」が出ます。 調べたところダブルバッファリングを使えば描画処理をすべて終了した状態で Appletの更新を行うから「チラつき」がなくなるそうですが、 それならMediaTrackerでもよさそうな気がします。 Mediatrackerではチラつきはなくなりませんかね
MediaTracker てのは画像のダウンロードが完全に済んだら通知してくれたり 済むまで待たせたりするためのテレホマン時代の遺物だと思たが。違ったっけ?
中3でjavaは難しい?
まぁ、10歳で大学入学できるからなぁ。外国では。 先生によるかな
大丈夫じゃね 俺の頃は中学生でマシン語とかやってたし
中三でC++よりは何倍もマシ。
中3で苦しいのは、カネが無いこと。 親父をどう説得して金ださせるか・・・のほうが大変だとw
10歳で大学だと・・・! 日本人の学力低下はどうにかならないものか
他の言語もじゃなくて、javaだけやるなら中3なら大丈夫だろう
10歳なら、C言語から入ったほうがいいかもよ? 何せJavaって日本みたいな感じだもん。 レールに乗って、ちょっとでも外れたらダメという・・・
まずメモリイメージをたたき込め。BrainFuck にしろ。
>>908 プログラム言語だけやるなら、小学校低学年でも可能。
昔は、
>>904 みたいなのがゴロゴロいたし。
もちろん、それしかなかったわけだけどw。
本当に難しいのは、解決すべき問題に関する知識。
中三だと、後々役に立つのは学校とか受験の勉強。
何より基礎学力が大事だよね。
小さい時は、ちょっとヤンチャして、ちょっと痛い思いをするのがちょうどいいんだよな はじめから情報持っていて、リスクを避ける行動はどうだろうか。 ポイントをちょっと間違えて頭を抱えるくらいがちょうどいいw
913 :
デフォルトの名無しさん :2009/04/12(日) 15:07:22
ソフトの世界は、「基礎大事!小さいときは!」みたくそういう「歴史を繰り返すような価値観」は必要とされてない感じがするんですけどね… 工芸職人みたいなハードの世界だと一子相伝の美徳とかなんとかで、ソフトと逆なのかもしれませんけど。
その年齢じゃなければできないことをすべきでは。 女子中高生をナンパして犯罪にならないのは 一生のうち中高生の間だけだぞ、全て忘れてナンパに没頭すべし
Log4j の開発って死滅しちゃったの?
女子高生と遣りまくれるのは若いうちだけだしな。
>>915 Log4J 2.0がJava5向けに作られてるらしいが互換性はどうなんだろうね。
あとLogbackと検索ヒット数をGoogleで1年内更新で絞って比較しても、Log4Jのが10倍ヒットしてる。
少なくとも開発者からの需要は健在のようで。
個人的には標準のLogging APIを使ってるので、組み込まれてると逆に迷惑だったりw
てっとり早くコピペプログラマになるならJavaで十分 設計からやろうと思ったらオブジェクト指向云々を理解してないとちと辛いが 一番ダメなのはVB系でそこそこできるようになって「うはwww俺すげーwww」になること まー若いうちは急がば回れでCから始めたらいいと思うんだがな
VBでもさすがにコード書くだろw ツクールで厨が俺スゲー これが危険。
>>920 そりゃ自分でもコードは書くが、他の言語に比べて少ないコーディング量で同じことができてしまうのが
勘違いプログラマを生む一つの要因であってだな。確かに生産能力の高さはものすごいと思うが
今のツクールは確かRubyだろ?Web屋で働く*はめ*になった人にとってはよい学習教材だ。
エンジンがrubyってだけで使ってる人間は他人のソースコピペしてるだけだから。
それが出来るのがJavaの特徴でもあるしね。 他の言語でも出来るけど、あまり信用できねーもん。
とはいってもジャバだって、大先生が作ったパッケージに頼ってるだけでしょw 自分が書くコードはnewばっかりのくせにww
>>925 >大先生が作ったパッケージに頼ってるだけでしょ
もしそうなら、クラスとか継承とかいらないから。
基礎できてる方が、コピペプログラミングも早いべ
エラーメッセージ読んでバグ修正できるからなw
プログラムなんてやったことないんだが、C言語入門をザッと読んで JAVA言語を必死でいま勉強している オブジェクト指向が半分程度しか理解できない やっぱ最初は簡単だと言われているPHPかVBにしておくべきだったかな JAVAけっこう難しいです
なんかJavaとC#で全然挙動が違って、戸惑ってます・・・。 C#(結果は50とtestが表示される) class test { public test(){ a(); } void a(){ Console.WriteLine( 50 ); } } class test2 : test{ public test2(){ a(); } void a(){ Console.WriteLine( "test" ); } } public class Hogehoge { public static void Main(String[] args) { // TODO Auto-generated method test2 t = new test2(); } }
Java(結果はtestと二回表示) class test { public test(){ a(); } void a(){ System.out.println( 50 ); } } class test2 extends test { public test2(){ a(); } String str; void a(){ System.out.println( "test" ); } } public class Hogehoge { public static void main(String[] args) { // TODO Auto-generated method test2 t = new test2(); } }
>>932 の挙動は、C#をやっていた自分からすると、全く想定外なのですが、
どう理解すればいいのでしょうか?
javaのデフォルトアクセスレベルはC#でいうinternal相当なのでtest2からtest1のaが見える javaではオーバーライドは暗黙的に行われるのでtest1のaはtest2のaによってオーバーライドされる C#のデフォルトアクセスレベルはprivateなのでtest1のaとtest2のaは互いに全く影響しない 同じ名前でも警告すら出ない
>>933 C++ や C# ではスーパークラスのコンストラクタが動作している時はまだメソッドの
オーバーライドが利いていない (仮想関数テーブルが変更されていない) ので、サブクラスが
オーバーライドしているかどうかに関わらずスーパークラスのメソッドが実行される。
Java では、スーパークラスのコンストラクタが呼ばれた時点で既にメソッドのオーバーライドが
利いている。
OO 言語的には Java のが異端。
>>934 その辺はわかっていますが、スーパークラスの
コンストラクタ内すらオーバーライドされているのが予想外でした・・・。
>>935 納得のいく解説thxです!
チラウラ:
現在、SJC-Pの解説書に挑戦中ですが、構文が似ているのに、
こんな感じで細かい動作や仕様の違いが多くて大変ですorz
>>935 違う。C#でもオーバーライドされていればオーバーライドされたメソッドの方が呼ばれる。
>>932 ではオーバーライド自体が行われてない。C#ではメソッドをオーバーライドするときには
スーパークラスのメソッドにvirtualを付けてサブクラスのメソッドにoverrideを付ける必要がある。
しかも
>>932 の例ではtest2からtest1のaはそもそも見えない。理由は
>>934 参照。
>>937 詳しい解説ありがとうございます!
なんだか頭の中が混乱してきたorz
939 :
937 :2009/04/12(日) 22:52:08
>>929 xhtml1.1のDTDにそういうデフォルト値が定義されてるんじゃないの?
Factory側でsetValidatingをfalseにしてから、Builderを生成してみたら。
>>930 現時点で半分程度理解できてるなら上出来。
最初はオブジェクト指向なんて理解できないし理解する必要もない。とりあえず基本構文を押さえるのが先決。
ある程度知識が深まったら実際に何かアプリケーションを設計してみて「こんなクラス設計で行こう」
「このクラス、拡張したら便利じゃね?」みたいな感じで覚えていくのがいいと思う。
また、オブジェクト指向の説明の例として、Javaがよく用いられるためよく勘違いされるが、
Java=オブジェクト指向言語ではない。設計次第でウンコにもなる。
PHPはWebサーバ立てるのがちと面倒だが、プログラミング入門にはいいと思う。
VBは確かにとっつきやすいが、.netになってからはクラスの概念が出てくるので、あとあとしんどいかも。
余談になるが、
>>935 の人がちょっと触れている通り「オブジェクト指向」と一口に言っても実装レベルで色々異なるから注意
まあ要するに未成年なら今のうち女子高生の乳もんどけって話だ。
成人になると逮捕というリスク満載。
女子高生ってなんであんなにエロいんだろ
自分がエロいと思っていないから。 隙がある人ほど惚れられやすい
944 :
941 :2009/04/12(日) 23:49:10
×ある程度知識が深まったら実際に何かアプリケーションを設計してみて
○ある程度知識が深まったら実際に何かアプリケーションを設計&コーディングしてみて
>>942 今にもめくれあがりそうなスカート+生足だからじゃねえか
>>940 読み込み前にログで出していますが validating は false になっています (ただし SYSTEM ID から
DTD 自体は見に行っている様子)。名前空間と XInclude は有効になっていますが関係ないですよね。
全ての <td> 要素に colspan="1" rowspan="1" とか付けられてしまって、親切なんだかおせっかいなんだか。
System.out.print("ほげほげ"); とすると標準出力(通常はコンソール画面)に文字が出ますが 記録を取りたいので テキストファイルとコンソール画面の両方に 出力するような方法はありませんか? System.out.print("ほげほげ"); という部分はソースコードのあちこちに大量に散らばっているから それは変更したくありません。 main 関数の1箇所に手を加えるなど最小限の変更だけで 行なえる方法があればご教授願います。 (tee 使え、とかいうのは無しで)
>>921 VBの生産性高いか?
スクリプト的に使い捨てのもん作るならいいが、
バージョンアップやライブラリの再利用考えると
途端に生産性が落ちる最悪の言語だぞ。
>>946 ・標準出力とファイルとに出力する OutputStream を自作して System.setOut()。
・Logger を使用して ConsoleHandler と FileHandler を使う。
・出力をファイルへリダイレクトして tail -f で眺める。
>>946 デッドロックが起こったり例外が投げられるような目に合わないこと前提の簡単な実装なら
public class MultipleOutputStream extends OutputStream {
private OutputStream[] output;
public MultipleOutputStream(OutputStream... output) { this.output = output; }
public void write(int b) throws IOException { for (OutputStream o : output) o.write(b); }
public void close() throws IOException { for (OutputStream o : output) o.close(); }
}
で
OutputStream out1 = new FileOutputStream("hoge");
OutputStream out2 = new FileOutputStream("huga");
PrintStream out = new PrintStream(new MultipleOutputStream(System.out, out1, out2));
System.setOut(out);
System.out.println("ほげほげ");
System.out.println("ふがふが");
out.close();
みたいな感じで
でも情報の確認はSystem.outに出力するのでなく
最初からロギングAPI等を使うようにしておいた方がそういう変更を簡単にできて楽だと思う
ログ出力に余計なヘッダとか不要ならヘッダを出力しないようなフォーマッタを設定すればいいし
>>949 それ MulipleOutputStream が System.out に書こうとした時点で System.out の出力先が
自分になってるから StackOverflow になるよ。
StackOverflow www
>>950 setOutで新しく設定したoutとそのoutがwriteを委譲しているSystem.outとは別物だよ
>>952 System.out は static final 宣言されているから委託も何も同じ参照だよ。
System.outはpublic final static で宣言されてるけど、setOutしたら違う参照になるよ。 public static void main(String[] args) { PrintStream o1 = System.out; PrintStream o2 = new PrintStream(System.out); System.out.println(System.out == o1); // true System.out.println(System.out == o2); // false System.setOut(o2); System.out.println(System.out == o1); // false System.out.println(System.out == o2); // true }
じっさいやってみたらStackOverflowは投げられませんでした
JDK のソース読んでみたら JNI 側 (か VM 自体が) final 破りやってるみたいだな。 final 宣言されてるから今まで Wrapper のような構成かと思っていた。くやしいビクンビクン
>>929 DTDが読めたらそうなっちゃうのは仕方ない。
DTDが読めないように工夫するか、Attribute.isSpecified()で区別すれ
ばいい。
1.2互換のために宣言上finalになってるだけだぞ。
>>945 >全ての <td> 要素に colspan="1" rowspan="1"
xhtmlなんだから要素省略しないのは当たり前。
sunの実装だと足りないものは付けたしてエラー投げない実装だからそうなる。
とはいってもxml:spaceはこういう場合defaultでもいい気がするが。
>>949 ありがとうございます。それを参考にしてガンバッテみます。
ロギングAPI等はもちろん使ってるんですが、すれはロギングAPIを使って出力したメッセージしか
ロギングされませんよね。だから困ってるんです。
ガイジンが作成してネットで広く流通している汎用のライブラリを書き換えるわけにもいかないし。
(ソースコードの入手できないものもあるし、ライセンスの問題もあるだろうし)
×○○○○○○○○× ○×○○○○○○×○ ○○×○○○○×○○ ○○○×○○×○○○ ○○○○××○○○○ ○○○○××○○○○ ○○○×○○×○○○ ○○×○○○○×○○ ○×○○○○○○×○ ×○○○○○○○○× このような出力をしたくて、以下のプログラムを書きました。 class test1{ public static void main(String args[]) { char test[] = new char[5]; for(int i=0;i<=4;i++) test[i] = '○'; for(int i=0;i<=4;i++){ test[i] = '×'; for(int j=0;j<=4;j++)System.out.print(test[j]); for(int j=4;j>=0;j--)System.out.print(test[j]); System.out.print("\n"); test[i] = '○'; } for(int i=4;i>=0;i--){ test[i] = '×'; for(int j=0;j<=4;j++)System.out.print(test[j]); for(int j=4;j>=0;j--)System.out.print(test[j]); System.out.print("\n"); test[i] = '○'; } } }
961 :
960 :2009/04/13(月) 20:04:42
前半部分の ×○○○○○○○○× ○×○○○○○○×○ ○○×○○○○×○○ ○○○×○○×○○○ ○○○○××○○○○を出力する際に、これをどこかに一時待避して 待避した物を逆から出力する という形に出来ませんか?
メモリかファイルに書きだせばいい
プログラム内で処理を終わらせたいのでファイルに書き出しは・・・ メモリに書き出すってのは、各行を例えば配列内突っ込むってコトでしょうか? 具体的にどうしたらよいか教えてください。
1. System.out.print() の代わりに StringBuilder に append() 2. 改行出力の代わりに toString() で文字列化して配列に格納 3. 配列の前から System.out.println() で出力 4. 配列の後ろから System.out.println() で出力
>>964 色々調べてみたのですが、まだ理解は出来ません。
今後、勉強していきます
966 :
デフォルトの名無しさん :2009/04/13(月) 21:37:45
>>961 java.util.Stackにpushしてpopすればいい
PrintStreemのラッパー書いちゃえよ。 setOut()すればいいだけだぜ
hello worldはできたのですが、PATHを変更したままだと、私が使用している一部のソフトウェアが動作しません。 プログラミングとソフトウェアの使用が同時に出来る方法はありませんか?
set path=%path%;%java_home%\bin
>>968 PATH の指定は「%PATH%;C:¥java¥bin」みたいに書け。
汚い仕様だな…
Eclipseが今年の夏、日本で見られるらしいですね これを見逃すと後二十数年見られないとか・・・ 皆さんはjavaプログラマーとして、 絶対見に行きますよね?
NetBeansユーザに喧嘩売ってるのか
だからPleiadesはやめとけ、ってあれほど言ったのに・・・
標準で使われている JAXP 実装が何でどのバージョンだって情報はどこかから取れませんか? (どのプラットフォームでも大抵は Xerces ベースだと思うんですが)
>>978 2009年7月22日。場所は奄美大島。
世界のEclipseマニアが一堂に会する20年に一度規模の
ビッグイベントだ。
ググれカスw。
いや、範囲が世界ならほぼ毎年あるイベントだろ。
人類滅亡ですね、わかります
>>979 しまった。
起動してみろw。
で、終了だったのにorz。
983 :
デフォルトの名無しさん :2009/04/14(火) 10:16:48
tomcatでJspでweb制作の練習をしたいのですが 環境の整え方についてどなたかお願い致します 入門サイトなどでjreやらsdkやらをインストールしろと書かれてるのですが サイトによってURLが違ったりjreだったりsdkだったり説明が違うのですが どれをインストールしたらよろしいのでしょうか? ピンポイントでURLまたはどこどこのここをクリックと誘導して頂けると助かります
失敗も勉強なんだからどんどん適当にやってみればいいのに 最近の若者は用意されたレールの上をスムーズに 行くことしか考えていない。
失敗したらどんな目にあうか上の世代を見て学習してるからだろ。
987 :
983 :2009/04/14(火) 11:56:13
余計なものインストールしすぎ?てHDDが満タンナンスよ
ちらねーよ
Java と全然関係なくてすみませんけど、文字化けって英語で何て言います?
990 :
デフォルトの名無しさん :2009/04/14(火) 13:14:48
wrongly encoded
thank you
992 :
taguti :2009/04/14(火) 16:21:14
6個のreal型変数x1、y1、x2、y2、x3、y3を定義しそれぞれに実数つを読み込んで、xy平面上の3点 (x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。 ・公式:底辺x高さ÷2を使って計算してください。 お願いします!!
マルチいい加減にしろよ
5
3
2
だからPleiadesはやめとけ、ってあれほど言ったのに・・・
ばんざーい、おれが1000だ( ^ω^)
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。