992 :デフォルトの名無しさん [↓] :2010/10/06(水) 15:30:30
じすれうめ
993 :デフォルトの名無しさん [↓] :2010/10/06(水) 16:02:29
lengthがフィールドだと思ってるやつw
994 :デフォルトの名無しさん [↓] :2010/10/06(水) 16:13:46
まぁいちおうJava言語仕様にはフィールドって書いてあるんだけどな
http://java.sun.com/docs/books/jls/third_edition/html/arrays.html#64347 > The public final field length, which contains the number of components of the array (length may be positive or zero).
995 :デフォルトの名無しさん [↓] :2010/10/06(水) 16:19:26
ジャヴァも出来てトーイックも900点だなんてすんごいんですね!
それで年収いくらになるんですか?
996 :デフォルトの名無しさん [↓] :2010/10/06(水) 16:20:16
年収400万です
998 :デフォルトの名無しさん [↓] :2010/10/06(水) 16:42:20
日本のIT系エンジニーアの年収は、たとえトーイック900点であっても年収400万円なのが現実なのです
999 :デフォルトの名無しさん [↓] :2010/10/06(水) 16:44:23
今、全俺が泣いた'(T_T
1000 :デフォルトの名無しさん [↓] :2010/10/06(水) 16:45:20
じすれおつ
貧乏大集合
貧乏は我慢できるが 休日出勤サビ残デフォルトは奴隷制度が復活したとしか思えん 不況寸前に転職できた人はおめでとう!!1
jdkのバグを見つけたのですが、英語が得意ではありません。 日本語でバグレポートができるところはありませんか?
ねえよ。
>>7 TOEIC300点くらいだが、翻訳サイトとか駆使していっぱいバグレポ出してる。
(Javaではレポートしたことないが)
気力があれば、MLでの議論もできないことはないぞ。
>>7 Sun系のオラクル日本人社員にでもメールしたら?
トーイック900点でジャバ1級なんですが年収はなぜか400万円なんです。 どうしてでしょうか?どこにレポートすればいいでしょうか?
>>7 バグを再現できるコードがあれば英語が多少まずくても通じるからがんばれ。
Java1級って何ぞ?SJC-Pとかの一番グレードの高い奴?
>>9 おお、関心関心^^
だけどジャバじゃないなら一体全体どこのコメニティーでバグレポしてるわけ?^^
フォントについて質問です。 きっちり枠にはまる文字で表示したいのですが g.setFont(new Font("Serif" , 0 , 32)); FontMetrics fo = g.getFontMetrics(); hig = fo.getHeight(); g.drawString(String.valueOf(hig) , 100 , 100); これでフォントを32に指定しても実際には縦56になってしまうようです。(そう表示されます) 幅は32になってるようですが。 この指定する座標は下のラインということでいいんですよね? きっちり縦横32の枠にはまるようにフォントを指定するにはどうすればいいですか?
17 :
デフォルトの名無しさん :2010/10/06(水) 23:52:43
12桁トリップを生成出来るJavaのライブラリーってありますか? あるなら教えて欲しいのでスェ・・・
環境ぐらい書けよ ふぉんと困った奴だな
Javaで環境って…
>>15 コミュニティはあんま関係ないな。
使ってるツールで目に付くバグがあったらなるべく報告するようにしてる。
比較的最近だと、Cygwin(cygwin1.dll), Wicket, JRubyあたり。
>>19 GUIだとプラットフォーム依存の問題が比較的表面化しやすい。
Ubuntu10.04+Java-6-Sun getHeight() :39 getLeading():0 getAscent() :31 getDescent():8 Ubuntu10.04+java-6-openjdk getHeight() :37 getLeading():-1 getAscent() :30 getDescent():8
オブジェクトA、Bがあって相互に参照しているとき、 両方共用済みになったらGCで消されますか?
両方 共用済み なのかと思ったら、両方共 用済み だったか。 JavaのGCはアクティブなスタックをルートとしてそのスタックのインスタンスと 紐づかないものをコレクトする仕組みだったかと。 早い話が循環参照にも対応してますってことで。
メソッドの名前の付け方なのですが、 class Bean{} があって Bean[] を取得するときに getList getArray getBeans どれが一般的でしょうか?
getListやgetBeansは普通コレクションを返す事を連想するから Bean[]がBeanに特化したビルダやファクトリなら、getArray それ以外なら、getBeanArrayになるんじゃないかな。 そもそもJavaにおいてオブジェクトの配列を返すのは悪い設計と疑うべきだが。
先生!なぜ配列を返すのは悪い設計なのですか?
うぜー
どっかのblogで配列は良くないと書いてあったので言ってみました
使いどころによりけりだな。データの受け渡しに使うだけの入れ物クラスならあまり気にしない。 大体普通は「配列で返す場合は clone() して返せ」とか「そもそも返すな」とか規約作るだろ。
やっぱり良く分からず言ってたみたいだな
32 :
23 :2010/10/07(木) 12:49:24
>>24 ありがとうございます。ちゃんと消してくれるんですね。
格好良く書くと「孤立した循環参照を持つ2つのオブジェクトはGCによって削除されるか」
みたいな感じでしょうか。
33 :
デフォルトの名無しさん :2010/10/07(木) 15:08:47
その場で作って返すなら普通に配列でいい 悪いのはフィールドに持ってる配列をそのまま外に晒すこと コレクションと違ってあとでオーバーライドできないから後で実装を変更できなくなるので 実質的にpublicフィールドを外に晒すのと同じ問題が発生する
マウスが取得できません。 frame = new JFrame (); frame.addMouseListener (new MouseAdapter() { public void mousePressed (MouseEvent e) { System.out.println ("マウスが押された"); } }) これは何が悪いのでしょうか。あとどこかに究極のバカでもわかるサンプルないでしょうか。
char[] get(){ return array;} から char[] get(){ char[] newArray =... System.arraycopy(array, newArray); return newArray;} 配列でも実装なんていくらでも変えられるだろ
37 :
35 :2010/10/07(木) 16:48:51
わかったのでもういいです。 ありがとうございました。もう他人には頼りません。
回答者はアホしかいないのでこれからはもっと簡単な質問にしてくださいね
>>36 利用側が前者の動作を前提にしたコードを書いていたら、後者に変更したときに利用側が動かなくなる
どっかのウェブブログで返すならint[]じゃなくてList<Integer>を返せって言ってたんですが、結局どうやっても
>>36 ,40と同じところに行きつきますよね。
List<Integer>ならオーバーライドできるから、要素が追加されたときに特別な動作をさせたりできるだろ
>>36 のような変更に比べれば利用側への影響が少ない
cloneはどうしましょうか・・・・
>>36 のような類の実装変更は配列だろうとコレクションだろうと利用側死亡。
List<Integer>で実装変えられるっていうのはそういう意味じゃなくて、
要素が追加されたり削除されたりされるときの動作をカスタマイズできるってこと。
Integerはextends finalですよ。
配列はmutableで、さらにジェネリクスと相性が悪いから
defensive copy使うか否かと、 配列がgenericsと相性悪いというのは別問題だけどな
まぁ実用的な話ではこれくらい標準化するなり javadoc に書くなり決めとけってこった。 caller と callee が双方で防衛的コード書くのも無駄だし。
intからIntegerのnewコストについての話題はスル〜なのか!?
操作されたくないなら普通複製かunmodifiableListとか返すだろ カスタマイズってw
>>49 Integer.valueOf(int) のソース読んでみ。
今まで使えてたaddとかremoveが”カスタマイズ”されちゃって UnsupportedOperationExceptionとか投げるように変更されて既存のコードが動かなくなるわけだな
それ言い出したらカプセル化とか全部幻想になる
どうでもええ。
話について来れないなら黙ってろってレクター先生が言ってた
とりあえずメンバの参照直接返してることはわかった
顔はロビンマスクですから
返す例外が決まらなくて困っています。 (1) まだ実装してないから使っちゃダメ --> ???? (2) ハードウェアエラー。もうダメポ --> ??? (3) ありえないソフトウェア上のバグ ---> ??? この3つが何をthrowすればいいのかわかりません。 知恵を貸してください。
1はUnsupportedOperationExceptionかなー
62 :
デフォルトの名無しさん :2010/10/08(金) 12:42:38
1と3はどうせキャッチしないし実行時に発生しないはずなんだから何でもいい
63 :
デフォルトの名無しさん :2010/10/08(金) 12:43:34
何でもいいって言うのは変か 他のところで絶対にキャッチされないようなのを投げとけばおk
Javaの標準例外でぴったりのが無かったので独自例外を定義しました。 (1) まだ実装してないから使っちゃダメ --> NotImplementedException extends UnsupportedOperatioException (2) ハードウェアエラー。もうダメポ --> HardwareException extends RuntimeException (3) ありえないソフトウェア上のバグ ---> InternalException extends RuntimeException (2)(3)はもっと「もうダメポ」感を出したかったのですが、まあしょうがない。 ありがとうございました。
完璧な設計です
>>64 (2)と(3)は復旧不能ならextends Errorの方がいいんじゃね?
>>64 設計見てないから突っ込んだこと言えないけど
そこまで細分化する必要あんのか?とは思う
なら黙っててください
全部 SystemException extends RuntimeException
SetBoundsメソッドを使っていて位置はそのままでサイズを変更するには第5引数のBoundsSpecified.Size で変更できると書いていました。 しかし、実際にやってみたところ「BoundsSpecified を解決できません」(eclipse)とエラーになってしまいます。 これは別に宣言しなければならないのでしょうか?
いいえ
(1) UnsupportedOperationException (2) IOException (3) AssertionError (2) は下品に行くなら IOError ?
自分でAssertionError出すのっていいんかい? -eaしてないのにAssertionError出るのって個人的に嫌なんだが。
assert使ってる奴の方が少ないから良いんじゃね?
Strutsの良い入門サイトを教えてください
すまん。質問よろ。 UMLのインターフェイスでロリポップってあるじゃん? あれって直線(棒)も含めてロリポップだよな? SJC-A向けの問題集で 次の中からインターフェイスを表すものを選べ とかいう問題があって、棒の無いただの丸、つまり ○ ←コレがロリポップ=インターフェイスって出てきた。 だけどlollipopってエキサイト翻訳でも「棒付きキャンディ」だし longmanでも a hard sweet made of boiled sugar ON A STICK だから 英単語としては「棒付き」が正解なんだが JAVAの仕様書(?)ではどうなんだろう? その問題集書いた人は別にオラクルの社員でも何でもないっぽいんで 信用していいんだか悪いんだか・・・68%正解で受かるから こまけえこたあいいんだよ(AA略 なんだけど・・・気になるんで誰かエロイ人頼む!
インターフェースは箱の左に ○− が付いてるのもあるけど、箱の中に ○ が入ってるのもあるんじゃ。
棒があるけど向こう側向いてて見えないだけかもしれないよ。
>>4 >>9 トーイック900点でジャバ1級なんですが年収はなぜか400万円なんです。
どうしてでしょうか?どこにレポートすればいいでしょうか?
質問しといて質問よろってなんだよw
TomcatをインストールしてOSを再起動するとアクセスが拒否されましたと出て起動できません またconf の中の tomcat_users.xml を編集しようとしてもアクセス権限がありませんと出て保存できません どうすれば解決しますか?
アクセスを許可して下さい。
Vistaの場合は「コントロールパネル」→「ユーザーアカウント」 →「ユーザーアカウント制御の無効化または有効化」 → 「ユーザーアカウント制御(UAC)を使ってコンピュータの保護に役立たせる」のチェックを外して「OK」ボタン押下 これでどっちもなんとかなったけど、 理由が良く分からん
>>83 まともに答える気がないなら書き込むなよ、低学歴なの?
最近こういうの多すぎ
>>85 学歴の質問はスレ違いです。Javaについて質問して下さい。
スルー力なさすぎだな
スルーカっ
どっかの爆撃機みたいなだ
高学歴のプログラマなんて悲しすぎるから低学歴でありたいものだ。
C:\Users\admin\Desktop\Tom>javac -classpath "C:\Program Files\Apache Software F oundation \Tomcat 6.0\lib\servlet-api.jar";. HelloWorld.java HelloWorld.java:1: 警告:この文字は、エンコーディング MS932 にマップできません。 ?ソimport java.io.*; ^ HelloWorld.java:1: \65533 は不正な文字です。 ?ソimport java.io.*; ^ エラー 1 個 警告 1 個 ANSIでもUTF-8でもコンパイルができません どうすればコンパイルできますか?
ClassHoge{ double value; public double getValue{return value;} } ClassHoge hogeA = 3; // プリミティブ型のように変数を作れる ClassHoge hogeB = 5; double result = hogeA * hogeB; // hogeA.getValue()ではなくhogeAと書ける //result = 15 もしくはString型みたいにリテラル自体をインスタンスにするにはどうやるのでしょうか? こういうことってできますか?
無理 Javaはポリシーとしてそういうのをわざとできなくしてるので気に入らないならC++やC#へどうぞ
96 :
94 :2010/10/09(土) 12:42:32
意図的に出来ないようにしてるんですか・・・ それはちょっと困ったなぁ String型のソースを参考にすればできるのかな、と思ったんですが・・ やりたいことは小数点以下桁数を指定したとおりの桁数に固定した数値を 簡単に扱うことなんですが、そういう場合はみなさんはどうしてますか?
普通にメソッドやコンストラクタ使う以外の選択肢はない StringはJavaの言語仕様上もJVM上も特別扱いされてる組込型
98 :
94 :2010/10/09(土) 12:51:09
ちょっと言葉足らずですいません。
String型的に扱いたいというのではなくdouble型的に扱えればいいのです。
ただインスタンス化するときにnewを使わなくてもいいことと
値を取得するときにget()しなくてもいいこと、ができればいいんです。
>>97 そうですか、メソッドとコンストラクタは必須ですか・・
じゃ別の方法を考えて見ます。
ありがとうございました。
>>92 高学歴化して組織化してそのうち管理職が現れると事務サラリーマンと変わらなくなるから今議論になっている。
特に日本では上流下流で護送船団だからエンジニアがサラリーマンになったら、会社の景気によって技術が安く見積もらて給料も上がらず硬直的な雇用形態からして会社が傾いてきたらと運命をともにするしかないだろうと言う話題になっている(日本型だと)。
100 :
94 :2010/10/09(土) 13:09:53
>>97 ちなみにDouble型もStringと同じ扱いですか?
最初はDouble型から派生させようとしたらfinalクラスなので無理だった。
C:\>Java>javac Test.java 警告:この文字は、エンコーディング MS932 にマップできません -encoding UTF-8 を付けても不正な文字云々でコンパイルエラーです 分からん
ファイル名のTomcat 6.0 をTomcat6.0にしたら通った これTomcat 6.0のままでクラスパスを指定する方法ないの?
Doubleはコンパイラが特別扱い Double d = 0.1; ↓ Double d = Double.valueOf(0.1);
メソッド名や、変数名で日本語を使って、 弊害が出ることってありますか? 既に日本語でカラム名が付けられているDBや、 計算項目の量が結構あったりすると、 メソッド名や、変数名で日本語が使いたくなるのです。 というか、ローマ字で書くくらいなら日本語で書くほうが、 見易いし、堂々としてていいと思うのですが。
公開する訳じゃないならそんなに問題になりませんよ。 堂々と使っていてもいいと思います。publicじゃないなら。
タイプが速くて言語を目で追うのに慣れてる熟練者は IME の切り替えやら フロー中に混在する日本語が思考を邪魔するので、日本語識別子の多様は嫌われる。 とはいえ似て非なる意味を正しく伝えなきゃいけないような局面では日本語のほうが良い。 まぁ俺基準は public static final な定数だな。
英語とローマ字の混在も凄く思考を妨げるけどな。 慣れの問題もあるから職場のコーディング規約の範囲内でなら好きにすりゃ良いと思う。 普段から日本語でドキュメントコメント書いてるなら IMEの切り替えも日本語混在もそれほど苦にならないと思うし。
>>108 それJavaじゃなくて.NET(C#とかVB.NETとか)じゃね?
ジャバダバダー
お前らJAVAなんかで何作ってんの?
バッチ
昔はよく使った
>>93 ANSIでコンパイルできないのはおかしい。何か間違えているに違いない。
UTF-8の場合はjavacに「-encoding UTF-8」を追加しろ。
ただし、Windows以外にもっていくならBOMは付けるな。
(=メモ帳は使うな。UTF-8Nエンコーディングのあるエディタを使え)
今時Javaでウェブアプリ開発なんてやってるところあるの?
じゃあ何が今時に適してるのか教えてくれ
石を投げればLAMPに当たる
ウェブアプリなんてドカタ仕事javaで十分だろ
>>71 >>109 >>110 申し訳ありません。
>>109 さんの仰る通りjavaではできないのですね・・・
そこを見落としていました。ご迷惑をおかけしました。
javaでサイズのみを変更する方法はないということなのでしょうか?
>>123 javaでは。っていうかさ、java.awt.Window#setBoundsを使おうとしてるんですよね?
第5引数なんてそもそもないじゃない。
それともjavaから、.netフレームワークのSystem.Windows.Forms.Control\#SetBoundsを
呼ぼうとしているのかな?
なんか根本的なところを理解してない雰囲気があるから、レスが少ないんだと思いますよ。
>>124 そうですね・・・ろくに理解もしないまま質問しても皆様を困らせるだけですね。
もっと自分で理解するようにします。ご指摘ありがとうございます。
自分が苦手な言語は廃っている事に脳内変換しておきたがる プログラマがこういう思考停止に陥るのも無理は無い だって言語多すぎるんだもの
Railsを使えばJAVAでやるのより5倍の生産性がうんたらかんたららしいよ
大抵の専門学校ではJAVAをメインに教えてるっぽいけど、 卒業後、何を使ってどんな仕事をしてんの?
Rubyなんて処理速度めっちゃ遅いやん
JAVAも目糞鼻糞
なんで素人が答えてるんだ? 速度桁違いで差があるぞ
Google App Engineってどうなの?
>>132 ぐぐるにろっくいーんされたい方はどーぞ。
スケーラビリティ(だけ)はかなり高いみたいよ。
>>125 たぶん、やりたいことをするには、
Javaだと自分でjava.awt.Window#setBoundsをextendsしたりとかしないとダメなんだと思うよ。
どこが分かっていないのかわからないので、このくらいしかアドバイスできない。。
setBoundsをextendsしたら動くようになりました。ありがとうございました
136 :
デフォルトの名無しさん :2010/10/11(月) 23:56:21
質問です。 Swing の JTable + JScrollPane で表を描いています。 ヘッダ行の境界をドラッグすると列幅が変わりますが、これをヘッダ行以外でもできるようにすることは可能ですか? 可能だとしたら、どうすれば良いのでしょうか? よろしくお願いします。
フラグ設定一つでする方法は無かったと思う。 自前で JTable 上のマウス移動やドラッグイベント拾ってカラムサイズを調整。
ありがとうございます。 では、ヘッダ行の見た目を通常の行と同様に平坦にする(輪郭の立体感を無くす)ことは可能でしょうか?
ヘッダ無しにして1行目使えよ。
それをやると列幅の変更ができなくなるので、どちらかの方法で実現したかったのです。 わかりました。マウスイベントを拾うことにします。
ヘッダのレンダラ乗っ取ればいいんじゃないの?
javaでhttps経由でページを取得するためには、中間証明書?をJREにインストールしないといけないのでしょうか? 参考になるサイトも教えていただければ幸いです
@Overrideって打ったらオーバーライドできるメソッドが補完されたらいいのに>eclipse
emacsで書いている人間からすると甘えるな
Javaだとオーバーライドできるのがデフォだからあんまり意味ないと思う ほんとは適切にfinal付けるべきだけど
質問 →回答者1が微妙なヒントの最後によく調べろと煽る →回答者2がそのヒントは根本的に見当違いだと指摘 →回答者1が2の人格否定のレス →すると冷静だった2が豹変し口喧嘩が始まる →何故か質問者もそれに加わって\(^o^)/ PGなんて専門卒のカスしか居ないのは分かるが、もう少しなんとかしろよ
1. よくわかってない初心者 2. ストレス解消に初心者を煽りに来てる厨房専卒 3. 厨回答・知ったかを見捨て置けないFラン卒 このスレは以上の3名でお送りしております。
>>145 クラス作るときにチェックボックスをオフにしちゃってるんだろ
これも追加で
4.質問を無視されてムキーッてなってる
>>148 みたいな子
便所の落書き2ちゃんねるに一体何を求めてるんすか(笑)
5 自身の学歴を馬鹿にされると居ても立っても居られなくなる学歴コンプ
6 仕事が無くて荒れてるJavaPG
7 仕事が減り、収入が減り、嫁に逃げられた俺
金の切れ目が縁の切れ目
で、7人かと思いきや、実は一人だったとか。
7人の低学歴 低学歴で万年PGってある意味サムライぞ でも浪人なるには力不足なんだよなあ 腹切って果てる運命同士仲良くやろうぜwww
JavaFXってどうよ?
流産した子
JavaFX Scriptはオラクルが撤廃宣言 今後はJava言語向けの新しいGUIフレームワークとして力を入れていく方針らしいが、 今更誰がそんなのについて行くだろう
groovyのビルダみたいになるのか
FX Scriptがうまくいってれば言語非依存のGUIデザイナが提供できたはずだった もう夢見るのはやめてJavaでちゃんと使えるデザイナを提供するべき
それが夢だという事に早く気づくべき
g.clearRect(0,0,640,480); img=new BufferedImage(640,480,BufferedImage.TYPE_INT_ARGB); この2つのどちらかの方法で画面クリアした後 次の画像を上からドローするという作業を連続的にやってるのですが どうも次の画像が完全でなく半端に描かれて、それも毎回、1/3とか1/2とか 実行のたび結果が違います。 どうもこのクリアで遅れをとってタイミングでおかしくなってるように思えます。 クリアのすぐ下でforとかループ入れて間を開けると完全に描かれます。 こういうことってあるのでしょうか? この2つのクリアが完全に終わるまで待ちを入れて次の描画に移る方法はありますか?
描画後に MediaTracker
画像ロードの時に使ったことあります。やはりそれでしょうか。 しかし今のマシンで普通の1画像描画なんて一瞬だと思うのですが。 他に原因があうんじゃないかとも思っています。 まあやってみます。
画像が一部消える結果は同じでした。 他に原因があるのか うーむ、わからない…。
170 :
デフォルトの名無しさん :2010/10/14(木) 16:20:49
JFrameについてなんだが、 setResizable(false)とかでウィンドウサイズを固定したら 実行環境によってウィンドウが大きくなったりするんだがなんとかならない?
setMaximumSize()はだめ? 中のコンポーネントのサイズも気にしなきゃいけないかもしれんが
172 :
デフォルトの名無しさん :2010/10/14(木) 18:16:13
>>171 変わらない
ちなみに何もadd()してません
固定しなけりゃ、setSize()で指定した大きさと同じになるんだがな
知らないくせに回答しちゃうバカ回答者
>>170 winなら仕様だったと思うが。窓枠とったら大きくならないんじゃない?
175 :
デフォルトの名無しさん :2010/10/14(木) 19:37:49
「WOLF RPGエディター」とは? ・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。 ・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に 不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに 慣れた人やRPGツクールでは物足りないけどプログラミングはちょっとという方にお勧め。 ・作成したゲームは自由に配布したり、コンテストに投稿することも可能。 また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備してるよ! ・要望、不満点、バグ報告などなど書き込みお願いします。今もどんどん進化中です。
JAVA初心者でつ あるクラス(AAAクラス)のインスタンス(aaa)を生成したとします。 そのクラスのフィールドは int No; String Name; だったとします。 それぞれに No = 51; Name = "ICHIRO"; とセットしたとします。 System.out.println(aaa.No); System.out.println(aaa.Name); の結果は 51 ICHIRO と表示されるのですが、同じタイミングで System.out.println(aaa); とした結果は null となってしまいます。 ブレイクポイントつけて変数ビューで確認しても同じ結果です。 これはjavaでは当然の事なんでしょうか? それとも私がAAAクラスで間違った実装をしてる可能性が高いのでしょうか? ある処理をする直前に if (aaa != null) というチェックをしたいのですが、 if ((aaa.No != null) || (aaa.Name != null)) とかにしなきゃダメですか?
>>176 その不具合が再現するコンパイル可能なコードを示してくれ。
int No の前に static が付いてて AAA aaa もメソッド外にある、
とか、そーゆーオチか?
>>176 aaaのtoStringメソッドはどうなっている?
というかソース晒せば回答が早いのに。
javaってやれる事少なくない気がする 気のせいかな?
180 :
176 :2010/10/14(木) 21:33:48
「(説明が本当なら)そんな事が起こるはずはない」 という事を教えて頂けただけでも収穫です。 (ソースは持ち帰れないんです、すみません) 明日もう一度実装見直してみます。 ありがとうございました。
Seasarって日本では結構使われてたりすんの?
>>179 C++ Modern Design の type set を Java に移植しようとしたけど挫折した。
型計算の自動化とかは無理かもしれない。
>>169 Event Dispatch Thread の中で描画してる?
184 :
166 :2010/10/14(木) 23:49:37
Event?ではないです。Threadは使ってます。 正確にいうと画面の下側に文字情報を等間隔に1文字ずつ書いてどんどん上へスクロールさせるプログラムなんですが その後いろいろやって気がついたことがありました。 画面のクリアだけでなく文字の表示側にも問題があるようです。 文字を文字列で一度で書いてスクロールさせると画面が消える確率がグッと減ります。 完全になるわけではなくHDDのアクセス音がなるとき(負荷がかかるとき)に消えるぐらいです。 そして速度がかなり速くなったので1文字ずつ書くのが相当負担になっていることがわかりました。 しかしこの状況からプログラムでなくjavaの描画自体に問題があるのでは?と考えてしまいます。 今はイメージを配列化して消去やコピーをする方法を考えてます。
Java 7っていつ頃リリースされそうですか
2011年中期に決まったよ。 個人的にはSwingもっと強化してTimingFrameworkとか入れてもいいと思うんだけどな。
わかりました。
もしかしてprivateをつけないフィールドは外から読めるのwww? なんでそういう仕様なの?
>>189 private で外から見えるかどうかをコントロールするのが仕様だから。
それを不思議に思う様では 他のオブジェクト指向言語も勉強した方が良いかもな その方がJavaへの理解も深まるよ
192 :
デフォルトの名無しさん :2010/10/15(金) 16:00:37
デフォルトで公開なのはおかしいという話だろ Javaのデフォルトアクセスレベルは書き忘れてるのか 意図的に公開してるのか分かり辛いとか確かに問題があって 今作り直すならデフォルトprivateで、現在のデフォルトアクセスレベルは別の修飾子になるだろうね。 でもJavaが作られたのは結構昔で、そのころはみんなテキストエディタでコード書いてたし Cからの移行をスムーズにというのがコンセプトにあるので簡便さが優先された。
ドカタ専用言語にはふさわしい仕様です
194 :
デフォルトの名無しさん :2010/10/15(金) 16:12:31
お亡くなりになったJavaFX Scriptはデフォルトがpriavteで Javaでいうデフォルトアクセスレベルはpackage修飾子を付けるようになってるね。 まともな作り方してればprivateの方が圧倒的に多いんだから、 今となっては言語設計が不適切だったとしか言いようがない。
JAVAが終わってPythonが始まるのはいつ頃ですか?
javaは終わってるけどpythonが始まるのは未定
C#感覚でついプロパティ的に書いてしまって 後から間違いに気づいたんだけど なぜか通っちゃってるからおかしいなと思ったら・・・ やっと気づいたwww
198 :
デフォルトの名無しさん :2010/10/15(金) 17:00:31
pythonは十分始まってるじゃん 補助言語としてはトップ
199 :
デフォルトの名無しさん :2010/10/15(金) 17:00:38
教えてほしいです。 Cで言う所の#deffine的なものは用意されてますでしょうか?
週末になると始まるなあw Java嫌いなのは良く分かったけど 一応飯の種になるんだから知ってて損はないと思うよ ってかC++とかC#知ってりゃ改まって勉強するほどの物でも無いだろ… そんなに難しいっけ???
どこに「javaは難しい」と書いてあるのかな
つかぬことをお伺いしますが .equals()で文字列の比較をしたときに trueになるはずなのになぜかfalseになる場合ってありますか?・・・ substring()したときとか・・・ そんなはずないですよね?・・ eclipseでデバッグ中に変数を確認すると 値は同じなのですが、valueの値がなぜかsubstringする前の値が入ってます。
204 :
202 :2010/10/15(金) 19:21:08
Androidエミュでデバッグしてて
>>202 の状態で
同じソースをPC上でJavaで動かすとまともに動きました。
どうやら環境っぽいです。。。
けしからん話ですな
>>202 java.lang.String って実装によっては char[] value を共有して、
int offset, countで部分指定してるけど、そーゆー話ではなくて?
>>202 つたない知識で説明されるより、コードをそのまま載せて
こういう結果にならないのは何でですかと聞くほうが早い。
>>206 そういうことかなと思ったんですがどうもそうじゃないらしいです・・
LibにしたAndroidプロジェクトを他のAndroidプロジェクトとJavaプロジェクトに
読み込んで使っている状況なのですが
Androidプロジェクトから呼び出してエミュ上のときは
>>202 のように失敗し
Javaプロジェクトから呼び出してPC上で実行すると問題ありませんでした。
ついでに新規のAndroidプロジェクトに簡単な同様の比較コード実行すると
>>202 のような問題は発生しませんでした。
ソースに問題あるならJavaからでも同じ結果になるかと思うんですが・・・
>>207 おっしゃる通りなのですがちょっと絡んでるコードなので
まだ切り分けがよくできてないもので、すみません。
こんな事例は結構あるものなのかと思い尋ねさせてもらったんですが
単純にStringの問題じゃなさそうですね。
それだけわかれば十分収穫です。
とりあえずアホな質問にレスありがとうございました。
フィールドはともかく、クラスやメソッドはパッケージプライベートが基本になると思うのだが フィールドだけ無修飾時の可視性を特別扱いするべきだと言ってるのかな
特別あつかいはよくないのでクラスにもprotectedとか付けれるようにしましょう
アウタークラスだった
213 :
202 :2010/10/15(金) 21:50:51
>>209 ありがとうございます。
やっと抜き出せました^^;こんな感じです。
Androidは1.6と2.2で試して同様の結果でした。
Javaプロジェクトでは問題なしでした。
package jp.test.stringtest;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
stringTest();
}
分割します。
214 :
202 :2010/10/15(金) 21:52:03
つづき private IAccount account; private CurrencyPair pair; double stringTest() { account = Account.getInstance(); pair = new CurrencyPair("EUR/JPY"); String base = pair.getBaseCurrency(); String ac = account.getAccountCurrency(); if (base.equals(ac)) <<<ここ!! return 1; else if (base.equals("USD")) return 2; else return 3; } }
215 :
202 :2010/10/15(金) 21:53:21
/******** ↓は他のプロジェクト ***********/ interface IBroker { String getName(); } interface IAccount { String getAccountCurrency(); } class Account implements IAccount, IBroker { private static Account instance = new Account(); private Account() { } public static Account getInstance() { return instance; } private String accountCurrency = "JPY"; @Override public String getName() { return ""; } @Override public String getAccountCurrency() { return accountCurrency; } }
216 :
202 :2010/10/15(金) 21:54:18
interface IInstrument { String getName(); } class CurrencyPair implements IInstrument { private String name; private String baseCurrency; public CurrencyPair(String name) { if (name.contains("/")) { name = name.replace("/", ""); } this.name = name; baseCurrency = name.substring(name.length() - 3, name.length()); } @Override public String getName() { return name; } public String getBaseCurrency() { return baseCurrency; } }
>>176 それが本当ならそんなこと起こるはずがない。っていうか、
書かれていない部分によってはそれがありうるので、他の部分がないとわからん。ってことです。
実際のソースは持ち帰れないのは、よくあるし了解なんだけど、
そういうときって、普通は似たことを家とかで再現させて、公開してもよいソースを貼り付けるものだと思う。
FXの会社?こんなシステムじゃすぐ営業停止だな
>>176 もしそれが別々のスレッドでほぼ同時に実行されたときに起きるなら、「Java メモリモデル」でぐぐれ。
# あとSun推奨のコーディングルールだと、変数とメソッド名の先頭は小文字。
222 :
202 :2010/10/15(金) 23:44:44
>>220 いえいえ、equals()あたりで躓いてる素人ですからw
どうですか?if (base.equals(ac)) ここfalseになりませんか?
自分の環境のせいなのかJavaがよくわかっていないせいなのか
そこらへんでつまづいてます・・
>>222 普通のjavaでは発生しないと思ってよいですか?
>>222 見た感じではよう分からんので評価直前に値を確認できるコードを仕込んでみ。
System.out.println("[" + base + ":" + ac + "]");
if (base.equals(ac)) <<<ここ!!
Javaの理解度は大学の授業を受けたのみですが 3万行のプログラムを一人で修正するにはどれくらいかかりますか?
100万円
普通は期間だろww
もしかして
base.intrn()==ac.intrn()でいけるんじゃ・・・。
だとしたら実装の問題だけど
>>221 っぽいよなぁ。
230 :
202 :2010/10/16(土) 12:40:38
>>223 はい、普通のJavaだと問題ありません。
>>224 ,228
よくわからないうちに解決しました・・・
pair = new CurrencyPair("EUR/JPY"); を
EURJPYに変えてみたら正常に動作してくれました。
name = name.replace("/", "");が原因だったのか、と思って
もう一度再現しようと"EUR/JPY"にして実行して見ると・・・
きちんと動作してる・・・・
なんだったのでしょうか・・長々と大変お騒がせしましたorz
>>230 現象から予測すると、リビルドが不完全でソースは"EUR/JPY"に修正したけど
どっかのclassファイルかdexファイルに"EUR/JPY"でない文字列が残ってて、
実行時はそっちを使ってたとか、そんな感じか
interfaceを勉強中ですが、 class TestClass implements CharSequence { public CharSequence subSequence(int start, int end) { return "A"; //ココ } 〜 ココのところを、return "A";とすればエラーにならないのですが、 return 'a'; や return 123;にするとエラーになります。 CharSequence型の戻り値が、Stringは良くてcharやintは不可というのは どこで決められているのでしょうか。
StringがCharSequenceになれるかどうかはString自身が決める。 リファレンスでStringの宣言を見ると public final class String extends Object implements Serializable, Comparable<String>, CharSequence とあり、CharSequenceインターフェイスを実装してることがわかる。
>>232 簡単にいうと、CharSequenceをimplementsしてればどんなものでもそこのリターンとなることができる。
public interface TestInterface { public TestInterface testMethod(int start, int end); } class TestClass implements TestInterface { public TestInterface testMethod(int start, int end) { return "abc"; //ココ 〜 } のようにしたとき、ココには、TestInterfaceをimplementsしたStringクラスを模写したような クラスが必要ってことになるんですか?
>>235 いや、なんていうかな。TestInterfaceを具象したクラスなら返却値になりうる。って感じ。
Stringがなぜ出てくるw
だか(ry
>>235 インターフェイスっていうのは最低限これだけのメンバが使えますっていう保証なんだわ。
TestClassがTestInterfaceを実装してるってことは最低でもtestMethodメソッドは使えるってことだから
TestClassのインスタンスをTestInterface型と見做しても問題ない。
>>232 、
>>235 ですが、
235については、インターフェイスの話からはズレて、
Stringオブジェクトの参照をCharSequence型に入れ込めるのは、
CharSequenceがStringの親であるから入るという仕様になっていて、
CharSequence型に入ったStringの参照からStringのオブジェクトを
探せるようになっていると思うけど、CharSequenceには抽象メソッドが
数本あるだけで、他には何も無い。そんなCharSequenceからStringオブジェクト
を見に行けるのは変な感じがするけど、どうなんでしょうか。
変数の型とオブジェクトの実際の型は実行時にはあんまり関係ない。 実体がどんなクラスのオブジェクトだろうと、変数に入るのはただの参照に過ぎないから、扱いはどれも同じ。 オブジェクトの実際の型を取得→実際の型の定義から適切なメソッドを検索→呼び出し という流れになる。実際には最適化とかいろいろあるけど、言語仕様上はこのように考えていい。
241 :
デフォルトの名無しさん :2010/10/17(日) 00:33:56
言語としてのJavaは糞だけど、JavaVMって技術的にどうなの?
糞を放り込む先は便器です
スクリプトや仮想マシン型の実行プラットフォームの中では 今のところ抜きん出て優秀。
入力のInputStreamがgifかどうか判定して、 gifだったらそのまま受け取ったInputStreamを返却したいのだけど、 返却された値を見ると、なぜか8byte削られてしまって困っています。 間違っているところを教えていただけるでしょうか・・・。 public static InputStream gifcheck(InputStream input) throws IOException{ InputStream is = input; ImageInputStream iis; try{ iis = ImageIO.createImageInputStream(is); for(Iterator i = ImageIO.getImageReaders(iis);i.hasNext();){ if(((ImageReader)i.next()).getFormatName().equals("gif")){ return input; } } }catch(Exception e){}
>>244 ImageInputStreamかImageReader作った時点で
先頭数バイト読み込んでどのフォーマットの画像データか判定してるはず。
BufferedInputStream使ってストリームの先頭でmark resetするか、
途中まで読み込んだストリームをいったん閉じて
ストリームを先頭から再度オープンするしかない。
246 :
デフォルトの名無しさん :2010/10/17(日) 12:16:37
eclipseを使ってjava3dの開発をしたいと思っています。しかし、サンプルプログラムを入れても インポートする部分で. インポートされた import javax.media.j3d.*;は見つかりません というエラーが出てきて前に進めません。java3Dのインストールに失敗したのだと思い 再インストールしたのですが、だめでした。どなかた解決してくださるとうれしいです。 使用しているパソコンはvistaで、jdkはjdk1.6.0_21です。
eclipseの環境設定の Java/Installed JREs の項目でそのjdk1.6.0_21が選択されているか確認しる
ここで質問すべき内容かわからないのですが、質問させてください。
SQL Server 2005に対し、Windows認証を用いてJavaからアクセスを行いたいのですが、
SQL ServerのJDBCドライバはWindows認証に対応していないのでしょうか?
ttp://support.microsoft.com/kb/313100/ja を見ると、SQL Server 2000の無いようですが、
Windows認証をサポートしていないに書かれています。
ネットで色々と情報を見たのですが、いまいちはっきりしません。
MSのページでSQL Server2005に対し、Windows認証に対応したJDBCドライバが
提供されているのかいないのか、明示しているページはありませんか?
よろしくお願いいたします。
このスレに相応しくない質問でしたら、ご指摘下さい。
データベース板のSQL Serverスレとかの方が知ってる人いるんじゃないかなぁ…
日本語版javadocがダウンロードできないんだけど、 oracleの陰謀?
>>249 了解。
SQLServerスレとこっちと迷ったのですが、こちらの方が人数が多そうだったので、とりあえずこちらに投下させてもらいました。
SQL Serverスレでも聞いてみます。
253 :
デフォルトの名無しさん :2010/10/17(日) 13:24:39
>>回答ありがとうございます。指摘のとおり、jdk1.6.0_21は選択されていなかったので 新しく追加して選択しました。しかし、治りませんでした。すいません。
じゃあそのInstalled JREsの新しく追加したjdk1.6.0_21を編集してJava3Dの.jarファイルを追加してみるとか 個別のプロジェクトオプションのビルドパスでもいいけど
255 :
デフォルトの名無しさん :2010/10/17(日) 14:01:37
回答ありがとうございます。jarファイルを追加してみましたがだめでした。 わかりません。学校のパソコンでは普通の動いたんですが。
jarファイルを追加したなら、Package Explorerでプロジェクト下にある Reference LibrariesだとかJRE System Libraryだとかいう名前の項目の中に その.jarファイルが出現しているはず そのツリーを展開してみて目的のパッケージがあるか確認してみる ・jarファイルが存在しない → ちゃんと追加されてないか、プロジェクトのオプションで別のJREを参照している ・jarファイルは存在するけどパッケージがない → jarファイルが間違ってるとか壊れてるとか ・パッケージもある → import文のスペルミスを疑ってみる、念のためクリーンして再ビルドしてみる
後出し回答はやめてください
だって最初から全部のありうる可能性をずらずら並べても試すの大変だろ
使えない回答者ばかり
使えないものは使わなければいいのに なぜ使えないものを使いたがるのか
>>255 jarを追加したなら別のエラーが出てるだろ。それをコピペするんだ。
263 :
デフォルトの名無しさん :2010/10/17(日) 17:34:26
>>243 それは、実装が優れているってこと?
仕様自体も優れている?
仕様は特に優れているというわけでもない
どんな仕様だったら優れている事になるんだろ?
266 :
デフォルトの名無しさん :2010/10/17(日) 19:18:57
>>256 回答ありがとうございます!指摘の通り、JREを見てみたところjdkがありまんせんでした。
どうやら別のJREを参照していたみたいです。なのでプロジェクトを作るときに
変えてみたところ無事動かすことができました。本当にありがとうございます。
そのへんは聞いてるやつも答えてるやつもよくわかってないだろw
System.out.println(3); と書いたときに、PrintStreamクラスのprintln(int x)メソッドは staticじゃないのに、どうしてオブジェクト化せずに使えるのでしょうか。
outがスタティックだから
おいおい^^;
>>268 System.outがオブジェクトだから。
次はSystem.outはfinalなのになんで変更できるんですか? だな。
274 :
デフォルトの名無しさん :2010/10/17(日) 22:41:19
グローバル変数だ。ただしJavaではフィールドは必ずクラスに含めないといけないので 形式的にSystemクラスに入れてるだけ。
>System.out はデフォルトで用意 >(つまりJava サイドで勝手にインスタンス化)されているって事です というふうに回答が出ていますが、判らないのは、まさにそこで、 System.outで、outはPrintStreamクラスのstaticな変数ですが、 staticではないplintlnメソッドを使えるってことは、 System.outの段階で、PrintStreamインスタンスが出来ていないと いけないと思うのですが、javaがPrintStreamのインスタンスは、 自動で作っているのでしょうか。
はいそうです
>>277 PrintStream以外にもそういうのは沢山あるんですか?
それらを一括して説明しているサイトをご存知ないでしょうか
>>278 そんなものいくらでも簡単に作れるよ
class Hoge {
public static PrintStream myout = new PrintStream( /*なんか適当に*/ );
}
とでもしてみればいい
あなたが Hoge.myout にアクセスしたときには、それはもう存在している
>>279 その場合はmyoutというPrintStreamのインスタンスを
プログラムで書いてますよね。
書かずに約束事のように(プログラマの目に見えない)って意味ですけど。
System.javaのソースを見たら、 Initialize the system class. Called after thread initialization. というコメントの後に、 initializeSystemClass()というメソッドがあって その中に、 setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true)); というのがあるので、 たぶん、mainメソッドが呼ばれたら、その後SystemのinitializeSystemClass() が呼ばれてnew PrintStreamされているということで、 無理やりに今のところは納得することにします。 ありがとうございました。
>>282 順序的には(自前の)mainがコールされる前にSystemクラスは初期化されています。
想像のとおり、setOut0の行がSystem.outへの代入を行っている場所です。
JNIEXPORT void JNICALL
Java_java_lang_System_setOut0(JNIEnv *env, jclass cla, jobject stream)
{
jfieldID fid =
(*env)->GetStaticFieldID(env,cla,"out","Ljava/io/PrintStream;");
if (fid == 0)
return;
(*env)->SetStaticObjectField(env,cla,fid,stream);
}
結局FileDescriptor.outをPrintStreamでラップしたインスタンスを、
nativeコードを呼び出してSystem.outに代入しているに過ぎません。
Javaで書いたプログラムをexeで起動させることはできますか? んーなんかうまく説明できないんですが、エスパーの方よろしくお願いします。
java exeでググれ
2次元配列を引数に読み込んだ際に、その要素数ってどうやって調べられるのでしょうか? int[][] a だとすると、int[a.length][ ? ] a の ? の数の調べ方を教えて下さい。 static int[][] aryAry(int[][] a) { int x = a.length; int y = 4; int[][] r = new int[x][y]; for(int i = 0; i < a.length; i++) { for(int j = 0; j < a[i].length; j++) { r[i][j] = a[i][j]; } } return r; }
static int[][] aryAry(int[][] a) { int[][] r = new int[a.length][]; for(int i=0; i<a.length; i++) { r[i] = new int[a[i].length]; for(int j=0; j<a[i].length; j++) { r[i][j] = a[i][j]; } } return r; }
a[0].length と a[1].length は違うかも知れないのでその?部分は不確定。 int[][] r = new int[a.length][]; for(int i=0; i<a.length; i++){ r[i] = new int[a[i].length]; for(int j=0; j<a[i].length; j++){ r[i][j] = a[i][j]; } }
メモ帳感覚で使えるエディタみたいなもんない?
290 :
デフォルトの名無しさん :2010/10/18(月) 10:36:29
javaでBuffered Readerの式から日本語で入力した文字を出力するとき文字化けが起きてしまいます。 英数字なら問題ないんですが、なぜでしょうか?
MacでJavaの開発環境ってmac portsだけじゃだめなの?
292 :
デフォルトの名無しさん :2010/10/18(月) 12:21:36
>>290 エンコーディングが間違ってる
今のJavaはIDE無しで手に負えるようなもんじゃないです
293 :
デフォルトの名無しさん :2010/10/18(月) 13:03:32
eclipseを使ってます。 でもeclipseでエンコーディングの設定(→utf8)してもかわりませんでした。 逆にcmdからjavac -encoding utf8したら問題なく表示されます。どういうことでしょうか…
わかるやつは答えてやれよ
全員分からないのであきらめてください
エスパーは居るはず
>>290 >Buffered Readerの式から日本語で入力した文字
誰にもわかりません。諦めてください。
ワレワレハ ウチュウジンダ
>>290 その化けるというソース貼らなきゃ。
コマプロからやるとOKということは明らかにeclipseの設定だね。
コ マ プ ロ w
このスレでは コマプロ、またはプロントと言います
303 :
デフォルトの名無しさん :2010/10/19(火) 00:18:42
プロマン
>>290 InputStreamReader使わないといけないんじゃ?
エディタの設定しただけでしょ
307 :
デフォルトの名無しさん :2010/10/19(火) 05:08:49
RubyからJAVAへ移行しようとしているのですが、Jrubyの使い方がよくわかりません。 RubyのコードをJAVAに変換してくれるのではないのでしょうか? Rubyのコードをコンパイルして実行速度をあげたいのですが出来るでしょうか?
JRubyはjavaによるRubyの実装
>>307 今の JRuby は Ruby のコードから Java のプラットフォーム (JavaVM) で
動くバイトコードへコンパイルしてくれる。Java と同じ速度は無理かもしれないけど
Ruby とは同等か良くなるんじゃないの。
最近結構 Ruby から Java へって話よく聞くな。どっかの SI 屋が Ruby
で安く作ってきたの Java でリプレースしたいなあーって話を先月くらいに
喫煙室でお客さんとしたし。最終的にオフショアで海外開発しようと思って
るから Ruby はねぇわって感じみたいで。
Rubyって国際性あるの?
無いね。まぁ Java や Python 使える奴なら少し慣れれば使い物にはなるけど 0から新言語覚えるリスクはついてまわる。だいたい日本語、英語以外の ドキュメントが少なすぎ。
>>309 動的言語が遅いのは動的だからで、静的なコード生成が行える部分については
いくらその部分が速く動作しようと全体としては速くならんです。
結局動的呼び出しがネックになるからね。
313 :
デフォルトの名無しさん :2010/10/19(火) 12:25:34
教えてほしいです。 JAVAからJNIの仕組みを利用してCのI/Fを使おうとしています。JAVA側から引数でint型で1を渡そうとしていますが受け取るC側でint型の1と認識できますか?
>>313 問題なし。
面倒なのはus-ascii以外の文字の混じった文字列だな。
new Exception().getStackTrace()でスタックは取れますが、 スタック情報からメソッドの引数オブジェクトを取得することは可能でしょうか?
無理です。
>>316 ありがとうございます。
ファイル名、行番号が取れたので引数も取れると思ったもので…
ArrayList arraylist = new ArrayList();と List list = new ArrayList();では、 プログラム作成のときは、後者を習慣つけたほうがいいのですか?
どうでもいい 引数や戻り値としてクラスの外に見せるときだけ気をつけていれば十分
>>318 後者で十分なら後者
不要な情報はとことん、そぎ落とすのが情報隠蔽の基本
http://java.sun.com/javase/ja/6/docs/ja/api/ でStringBuilderを見ていたのですが、Appendableを実装していると
書かれていますが、見る限りしてないようなのです。
public final class StringBuilderextends Objectimplements
Serializable, CharSequence
そこで、ソースを見ると、
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
になっており、AbstractStringBuilderのソースを見ると、
abstract class AbstractStringBuilder implements
Appendable, CharSequence
となっております。
http://java.sun.com/javase/ja/6/docs/ja/api/ は正確ではないということなのでしょうか?
AbstractStringBuilder というのはパッケージプライベートだから俺らからは見えないクラスなんだ 見えないもの載せられても困るし、まぁそうすると100%正確じゃなくなるんだけど、なんていうかね・・・ まぁ難しいところだね ある種の妥協点だと思うしかないな
>>324 StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb);
こういうのを見ていて、Formatter(Appendable a)メソッドがあって、
どうしてStringBuilderがAppendableに渡るんだろうとAPIを見たら、
そうしても繋がらなくて・・・。
ソース見て、初めて繋がりました。
そういうことがあるんですね。
ありがとうございました。
バージョンが上がって継承階層が変わるのってどうなんだろう 普通、スーパークラスが新たに挿入されることなんて想定しないと思うけど 既存のアプリケーションで問題が起きたりしないのかな
ttp://www.techscore.com/tech/ApacheJakarta/Struts/answer/6-2.html このサイトの通りに作っても
org.apache.jasper.JasperException: An exception occurred processing JSP page /com/techscore/struts/chapter6/exercise2/useImageTag.jsp at line 18
15:
16: <p>ボタンを押してください。座標が表示されます。</p>
17:
18: <html:form action="/com/techscore/struts/chapter6/exercise2/ImageTag.do" method="post">
19: <html:image page="/com/techscore/struts/chapter6/exercise2/img/submit.gif"
20: property="button" />
21: </html:form>
のようにエラーになってしまいます。
解決策を教えてください。
アホすぎ
どうせsubmit.gifがないんだろ
>.>327のログは 致命的: サーブレット jsp のServlet.service()が例外を投げました javax.servlet.jsp.JspException: クラス com.techscore.struts.chapter6.exercise2.ImageTagForm のbeanを生成する際の例外: imageTagForm at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:536) at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:503) (以下略) です
submit.gifはあります
どうせsubmit.gifが変な場所にありますんだろ
333 :
デフォルトの名無しさん :2010/10/19(火) 23:41:07
質問です ランダムに足し算引き算掛け算割り算の問題を出すプログラムを作っているのですが 足し算:1,引き算:2,掛け算:3,割り算:4,ランダム:5 4 485÷ 129= 5 不正解!!答えは :3です 485× 129= 5 不正解!!答えは :62565です こんな感じにこんな感じに余計な部分まで読み込んでしまうのと 割り算の時、計算結果が1にばかりなってしまうのですが どうすればいいでしょうか・・・ 改善方法を教えてください
たぶん合ってると思うんですが・・・ /com/techscore/struts/chapter6/exercise2/img/submit.gif に置いてます
じゃあstruts-config.xmlがまちがってるんだろ
>>333 こっちは君のプログラムを全く知らないのに何をどう改善しろと?
教えてほしかったら晒せ
337 :
デフォルトの名無しさん :2010/10/19(火) 23:47:57
>>336 すみません
ソースコードを載せるサイトを探していて…
338 :
デフォルトの名無しさん :2010/10/19(火) 23:48:56
-Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=nで起動したとき、 接続してブレイク情報を送らなければ遅くならない、 接続してブレイク情報を送ると、内部のチェック処理?が発生するから遅くなる、 という情報は間違い?
知らねーよ。 遅くなって困るような局面で JDWP なんて起動するな。
class Hoge{ public int getNumber(){return number;} public String getXXX(){} public String getYYY(){} 詳細省略 } 見たいなクラスでList<Hoge> hogeList;があるとき hogeListのNumberでソートさせたいときにはどうやるのでしょうか?
Collections.sort(hogeList, new Comparator(){ public int compare(Hoge h1, Hoge h2){ if(h1.getNumber() < h2.getNumber()) return -1; if(h1.getNumber() > h2.getNumber()) return 1; return 0; } });
>>342 おおおおおおおおおおできたした
ありがとうございます!
importで*使うなとよく言われますが、コンパイルが遅くなるだけで実行速度には影響はないですか?
importで*を使わない方がいいのは別にコンパイル速度の問題じゃないけど・・・ もちろん実行速度には影響ない
Runtime.getRuntime().traceMethodCalls(true);を呼ぶとメソッド呼び出しのためにデバッグ情報が出る期待していたのですが何も変化がありませんでした。これをtrueにするといったい何が変わるのでしょうか?
>>344 クラスファイルに無駄な情報を埋め込んでそれを実行時に無駄にリンクするから無駄にメモリを消費するがそもそもそれ以前に名前が衝突してコンパイルできなくなる。
何こいつw
tomcatで以下を実行すると全てのモジュールに適用されますか? System.setOut(System.err); System.out.println("a");//標準エラーに出力
「全てのモジュール」って何?
>>351 すみません。
全てのアプリケーションです。
webコンテナのデプロイ単位のあのやつです。
その設定はVM単位なのでweb application単位は不可能です。
http://tomcat.apache.org/tomcat-7.0-doc/logging.html#java.util.logging The default implementation of java.util.logging provided in the JDK is too limited to be useful.
A limitation of JDK Logging appears to be the inability to have per-web application logging, as the configuration is per-VM.
As a result, Tomcat will, in the default configuration, replace the default LogManager implementation with a container friendly implementation called JULI,
which addresses these shortcomings.
354 :
デフォルトの名無しさん :2010/10/21(木) 18:27:55
Jrubyの質問はここでいいですか?
FileInputStreamで読み込むスタート位置を指定できないのでしょうか? やりたいことはバイナリファイルの読み込みで、ファイルの一部分(たとえば100MBのファイルの2MBの位置から1MB分)を 読み込みたいのですがどのようにすればよいでしょうか?
>>355 InputStream#skip(long) 使えば?
RandomAccessFileというクラスもあるよ
FileChannel からでも。
javaではなくてEclipseCDTで質問です。
cygwin1.7をインストールして、設定を済ました後に実行すると
**** WARNING: The "Debug" Configuration may not build ****
**** because it uses the "Cygwin GCC" ****
**** tool-chain that is unsupported on this system. ****
といったエラーが出て、コンパイルできません。
↓のサイトを参考に、インストールの確認とレジストリの登録をしてみましたが、変わりません。
http://hata.cc/docs/CDT/index.html どなたか解決策を教えてください。
OSはwindows7 64bitで、Eclipseは3.5を使っています。
エクリプスで参考書片手にプログラムを作ってます。 いざ実行したらエラーが出てしまうのですが そのエラーはどういう意味なのか教えてください。 エラー文は長いので次のレスに書きます。
なんでJavaの連中って人間力 低いのですか?コミュ力がないっていうか
>>360 のエラー文
Exception in thread "main" java.lang.UnsatisfiedLinkError: sun.awt.SunToolkit.getAppContext(Ljava/lang/Object;)Lsun/awt/AppContext;
at sun.awt.SunToolkit.getAppContext(Native Method)
at sun.awt.SunToolkit.targetToAppContext(Unknown Source)
at javax.swing.SwingPaintEventDispatcher.createPaintEvent(Unknown Source)
at sun.awt.windows.WComponentPeer.postPaintIfNecessary(Unknown Source)
at sun.awt.windows.WComponentPeer.handlePaint(Unknown Source)
at sun.java2d.d3d.D3DScreenUpdateManager.repaintPeerTarget(Unknown Source)
at sun.java2d.d3d.D3DScreenUpdateManager.createScreenSurface(Unknown Source)
at sun.awt.windows.WComponentPeer.replaceSurfaceData(Unknown Source)
at sun.awt.windows.WComponentPeer.replaceSurfaceData(Unknown Source)
at sun.awt.windows.WComponentPeer.setBounds(Unknown Source)
at sun.awt.windows.WWindowPeer.setBounds(Unknown Source)
at sun.awt.windows.WComponentPeer.initialize(Unknown Source)
at sun.awt.windows.WCanvasPeer.initialize(Unknown Source)
at sun.awt.windows.WPanelPeer.initialize(Unknown Source)
at sun.awt.windows.WWindowPeer.initialize(Unknown Source)
at sun.awt.windows.WFramePeer.initialize(Unknown Source)
at sun.awt.windows.WComponentPeer.<init>(Unknown Source)
at sun.awt.windows.WCanvasPeer.<init>(Unknown Source)
at sun.awt.windows.WPanelPeer.<init>(Unknown Source)
at sun.awt.windows.WWindowPeer.<init>(Unknown Source)
at sun.awt.windows.WFramePeer.<init>(Unknown Source)
at sun.awt.windows.WToolkit.createFrame(Unknown Source)
at java.awt.Frame.addNotify(Unknown Source)
at java.awt.Window.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
子クラスにコンストラクターがない場合は親クラスのコンストラクターがよばれるのでしょうか?
子クラスにコンストラクターがない場合は親クラスのデフォルトコンストラクターがよばれます 子クラスにコンストラクターがある場合も親クラスのコンストラクターがよばれますが、どのコンストラクターがよばれるか指定できます
ちなみに子クラスがコンストラクターを明示的に宣言せず 親クラスが引数なしのコンストラクタ持たない場合はコンパイルエラー。
饅頭屋のコンパイルは倒産しました。
class Animal { class Dog extends Animal { class Test{ public static void main(String[] args) { Animal a = new Animal(); Dog d = (Dog) a; } } これってclassCastExceptionのエラーが出るんだけど何でですかね?
AnimalがDogのサブクラスじゃないから
>>371 一応ダウンキャストしてるつもりだけど書き方まずいかな?
>>373 AnimalがDogのサブクラスじゃないからダウンキャストできないと、
>>371 は言ってるんだと思うよ。
>>373 ダウンキャストは、AnimalをDogに変身させるものじゃない。
DogだとわかっているAnimalを、Dogとして扱うためのものだ。
Animalのままだと、Dog固有のメソッド等にアクセスできないからダウンキャストが必要になる。
Calendar gc2 = new GregorianCalendar(2010, 10, 23); int dw = gc2.get(Calendar.DAY_OF_WEEK); dwは7になるはずですよね? しかし、3になります。 なぜ???
> month - カレンダ内の MONTH カレンダフィールドの設定に使用する値。Month 値は 0 から始まる (1 月 は 0 になる)
ありうがとうです! どのみちDateであれCalenderであれ数字そのままってわけには いかないんですね。。。
DBにアクセスする時に、class.forname()を呼び出すのは無駄じゃないですか? リフレクションAPIなので、遅くなるだけだと思いますが 何か特別な理由があるのですか?
静的初期化子を呼び出すためのおまじない 非常に悪い使い方なので自分でライブラリ作るときは絶対に真似しないように
381 :
379 :2010/10/23(土) 20:26:06
>>380 普通にインスタンスかすれば、staticブロックが呼び出されと思います
リフレクションAPIを使うよりはよっぽど速いハズです
これは、業界の悪習ということでOKなのですか?
>>381 JDBC作った奴がタコだったというだけ
383 :
379 :2010/10/23(土) 20:36:51
最初しか使わないんだから速いとか遅いとか全く問題にはならん。 コンパイラが無意味なコードだと見做して削除するかもしれないからじゃないの。 そもそもの間違いはstaticブロックを使っていることであることは疑いようもないけど。
385 :
デフォルトの名無しさん :2010/10/23(土) 20:39:24
先生!なぜstaticのイニシャライザは駄目なんですか?
staticイニシャライザがダメなのではなく、staticイニシャライザを明示的に呼び出したり 呼び出されるタイミングに依存するような設計がダメ。 リフレクション使ってるのは確実にそのタイミングで初期化するためじゃないかな。 普通にクラス使う場合はロードされるタイミングが予測できない。
>>375 ありがとう。
とりあえずも一回キャスト勉強してみます
388 :
デフォルトの名無しさん :2010/10/23(土) 20:51:14
要は先生もよくわかってないってことですね
staticイニシャライザってクラス呼び出すと無条件に呼ばれると学習してたけど?
アホ回答者が知ったかしただけなので無視しておk
ジャバってアップルにも見放されたんだし、俺たちに残された道はもうドットネットしかないな・・・
javaのデスクトップアプリケーションなんか今までに流行ったことあった? 一般消費者はJavaなんてなくても何も困らないし必要な用途なら自分で入れればいいだけ
Appleはドトネト標準搭載なのか? Javaは追加機能になるだけだけど。
ドットネットならVBでええやん
>>392 javaがなくても問題ないのと同じぐらいにappleとmacさらにmac osxがなくなっても一般消費者にとってまったく問題は発生しないと思うよ。
ジャバはもう終わったんだし、俺たちみたいな雑魚プログラマにはもうドットネットしか残されていない・・・
致命的: サーブレット Clock に例外を割り当てます java.lang.NoClassDefFoundError: com/techscore/servlet/chapter1/exercise1/Clock (wrong name: Clock) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2733) (以下略) これはパス云々の問題なんでしょうか? ないわけないしweb.xmlも間違っていないはず・・・分からん
例外は↓ javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです
以下のように書いた JSP を表示させてみてエラーになったらクラスが見えていないので パスを確認。 <% new com.techscore.servlet.chapter1.exercise1.Clock(); %>
>>399 <%= new com.techscore.servlet.chapter1.exercise1.Clock() %>
これで表示はできました
しかし
http://127.0.0.1:8081/test2/clock で表示させようとすると依然上記の例外です
ちなみに下記がweb.xmlです
<web-app>
<servlet>
<servlet-name>Clock</servlet-name>
<servlet-class>com.techscore.servlet.chapter1.exercise1.Clock</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Clock</servlet-name>
<url-pattern>/clock</url-pattern>
</servlet-mapping>
</web-app>
クラスファイルに以下の文を足したら上手くいきました
package com.techscore.servlet.chapter1.exercise1;
納得いかないことも多いので調べてみます
>>399 さんどうもありがとうございました
誰だおまえは
404 :
デフォルトの名無しさん :2010/10/24(日) 14:32:11
Visual J++で書いたコードをGCJでコンパイルできますか?
WFC使ってなければコンパイルできると思うけど。
ここ数年で出た良書があったら教えてくれ、ジャンルは問わない
Java並行処理プログラミング
電車男
しらねーならだまっときゃいいのに
ジャンルは問わない
読んでもなくて読めもしないのにダメ出ししたがる天然記念物を釣ります 他人が自分より知識を付ける事への危機感とか 書籍にダメ出しできるレベルの凄腕を演じたいとかがあります
デコンパイルJavaかな。あとはscala本とか(Javaじゃn・・まあJavaだな)。 フレームワークの本とか詰まらないと感じるようになってきた。
>>407 その本は知らなかった、探してみる
>>412 パイソンのリバースエンジニアリングの方はかなり評判良かったっぽいね
昔ツタヤに置いてあってそういう客層向けかよと敬遠してたわ
java で画像を表示すべく、JFreeChart をいろいろといじっていますが ネットで得られる情報が少なく困っています。 X軸は日付、Y軸は時間とし、指定日付の指定時間帯(ex.10/10 13:45〜14:18 これがたくさんある)を 長方形で塗りつぶしたいんですが、どうしたらいいでしょうか。 XYBlockRenderer で描画してみると、日付と開始時間は指定できますが 長さが指定できないみたいです。
わかりました。
JSFマネージドBeanに出来て、CDIにできない事ってありますか? もしかしていらない子なのでしょうか。
-0と0を見分ける方法をおしえてください。 if文だと同じとみなされ ==だとダメのようです。
int x = 9 int [] dots = {6,x,8} これはコンパイルされるのに int [][] books = new int[3][] int aNumber = 7 books[0] = aNumber これがエラーになるのはなぜ? 参考書によるとint値ではなくint型配列を代入しないと不可って書いてあるけど
books[0][0] ・・・・ただのint books[0] ・・・・intの1次元配列 books ・・・・intの2次元配列
前半と後半全然関係ないじゃん
int[] dots; dots = new int[3]; int x = 9; dots[0] = 6; dots[1] = x; dots[2] = 8; これは正常にコンパイルされるよ int [][] books; books = new int[3][]; int a = 7; books[0] = a; これがコンパイルされない。 参考書によるとint値ではなくint型配列を代入しなければならないので不可って書いてあるけど さらに言うと int[] number; number = new int[6]; books[0] =number; これはコンパイルおk。 参考書によるとnumberはint型配列なのでおkって書いてある
自分で答え言ってるじゃねーかw
>>417 「算術上見分けられてはならない」ってのがIEEE754要件だったと思うから
たぶんフツーの方法では -0.0 と 0.0 の区別は無理だな。
割り算の分母に使って答えの無限大の正負を調べるとか、
ビットパターンを Double.doubleToRawLongBits() でlong化して
最上位ビットで判定するとか、
一意にソートしたいだけなら Double.compare() で十分
※おおぅ、いつのまに Math.copySign() なんて便利な物が…
425 :
417 :2010/10/26(火) 10:16:41
double a = Math.signum(値); をやったとき、aは1.0, -1.0, 0.0 ,-0.0のどれかになるのですが、 このaが-0.0か0.0のどちらであるかを判別したいのです。 現状 if(a == -0.0){ System.out.println("-0") } なのですが、これは aが0.0でも-0.0と同じとみなされてしまいます。 なにかいい方法ありますでしょうか。
ああごめん 屁こいちゃった
ギョムスレのスカトロさん?
charはチャー?それともキャラ?ですか
俺は昔はチャーと読んでいたが最近はキャラと読むようにしている どっちでも通じるのでどっちでもいいよ
じゃあイールドは何て読む?
クラスの登場人物の確認をさせて下さい。 フィールド、コンストラクタ、メソッドの3つしかなくて、 フィールドは、クラス変数(static)、インスタンス変数。 メソッドは、クラスメソッド(static)、インスタンスメソッド。 これでいいでしょうか。
そういえばあとインスタンスイニシャライザとかスタティックイニシャライザもあります
System.out.format( "表示: age=%d name=%s\n" ,age, name); こういうのがあるみたいですが System.out.println("〜")よりも使いやすく感じるのですが、 一般的に使用されているんでしょうか。
一般的の定義がよく分からんが普通に使ってるだろ。 そもそも System.out 使ってる時点でサーバサイドでもスタンドアロンでもない 単なるコンソールアプリだろうが。
i18n使え
並行処理プログラミングという本で 「コンストラクト中にthis参照を逸脱させてはならない」 「無名クラスは暗黙のうちにthis参照を持っているので意識しないうちにthis参照が逸脱してしまう場合がある」 と書いてあったんだがまったく意味わからん! ↓ソースコード↓
439 :
438 :2010/10/27(水) 00:10:13
public class ThisEscape { public ThisEscape(EventSource source) { source.registerListener( new EventListener() { public void onEvent(Event e) { doSomething(e); } } ); } }
無名クラスっていうのは private static class 名前は秘密 implements EventListener { ThisEscape 親のthis;//インスタンス作成時に親のthisが入る public void onEvent(Event e) { doSomething(e); } } こういうクラスを生成するシンタックスシュガー
441 :
438 :2010/10/27(水) 00:16:24
これってEventSource型のsourceインスタンスを別スレッドも参照していて、 意図せずに別スレッドも無名クラスを介してthis参照が取得できてしまう。 さらにちゃんとコンストラクトされないうちに参照される恐れもあるって考えでいいんですか? 分かる人教えてくらはい
スレッドとか関係ないんじゃないの たとえばregisterListenerメソッド内ですぐにonEventがコールバックされたとすると onEventの中でthisを使ってうっかり未初期化のフィールドを使ってしまったりする恐れがある
マルチスレッド環境においてコンストラクタ内で this を別スレッドに見せてしまうと、
自身が初期化され終わっていない状態で別のスレッドから何らかの操作が実行
されてしまう可能性がある。
という話ではないかな。
マルチスレッドでなくても
>>442 みたいなのもあるんだけど、問題分析のしにくさで
言えばマルチスレッド化で起きた方が死ねる。
マルチスレッドじゃないなら、onEventを自分以外の誰が呼べるというのか。
EventSource.registerListener をそういう風に作れば呼べるだろ。現実ないだろうけど
登録と同時に START_LISTENING みたいなイベント発生させる実装ならありうるよ。
SJC-Pって名前変わりました?
448 :
438 :2010/10/27(水) 01:08:46
ちなみにこのようなコードに変更すれば逸脱は防げるそうです。 ・・・が、イマイチピンときません。 ↓変更後のコード↓ ------------------------------------------------ public class SefeListener { private final EventListener listener; private SafeListener() { listener = new EventListener() { public voie onEvent(Event e) { doSomething(e); } }; } public static SafeListener newInstance(EventSource source) { SafeListener safe = new SafeListener(); source.registerListener(safe.listener); return safe; } } ---------------------------------------------------------
どこがピンとこねーのかわからん
バグの原因には成り得るが、声高らかに禁止を叫ぶほどでもない。 各自気をつけましょう程度の話で正直ドウデモイイ事だよ。
バグだらけのコード書いてそうなコメントだことw
452 :
438 :2010/10/27(水) 01:19:03
ミスです・・・。
逸脱(公開)は防げる→×
不完全な状態での逸脱(公開)を防げる→○
内部クラスを公開したときは、その外部クラスは必ず公開されるようですなー。
結局
>>439 のコードの問題点が分からないんだがな・・・
どういったときに問題なのか具体的にコードを書いていただけると助かるッスー。
おまえじゃまだ早い
455 :
438 :2010/10/27(水) 01:25:44
ってことはこのソースコード見て気付かないようじゃまだまだって事か・・・。 スレ汚しちゃってサーセン。 レスくれた人ありがとうございました。
>>454 急にどうしたんだよ
おなかでもいたいの?
>>448 newInstanceメソッドが、SafeListener safe = new SafeListener(); としてるから
SafeListenerの生成中にdoSomething(e);が呼び出される事はなくなるよね。
EventSourceは他のスレッドで既に使用されている可能性があるとして、
>>439 はリスナー供給側のスレッドがコンストラクタ内で自身の参照を渡している(自身を生成中に)
>>448 はリスナー供給側のスレッドがリスナーを生成し終わった後で渡している。
おまえじゃまだ早い
おまえじゃまだ早い ≒ もうめんどくさい
このスレは低能ばかりなんですか?
class TestClass<T> { static <String> name3; public TestClass(T name3) { this.name3 = name3; } public static <T> T getName3() { return name3; //ココでエラー } } どこが悪いのでしょうか
これなら出来たぞい public class TestClass<T> { private T name3; public TestClass(T name3) { this.name3 = name3; } public T getName3() { return name3; } } インスタンスを生成するときに指定する<T>は、インスタンスに属するものだから staticをつけてクラスに属させようとしてもコンパイルエラーになるっぽいよ。 クラスに<T>と宣言しておいて、メソッドにも同じ名前で<T>と宣言しちゃうと、 別の型と認識されちゃうみたいね
>>464 うん。インスタンスメソッドは、そうやればいいみたいですね。
staticメソッドのときは、
public static <T> T getName3() { //<T>がいるみたいです
こういうふうに指定するらしくて、
しかしreturnでエラーになるんですよね。
static <String> name3;の書き方が、間違っているような気がするんですけど。
public static <T> T convert(Class<T> type, String value); 個別に型変換メソッド作り分けるのがめんどくさい時によくやる。
そもそも継承もしてないのにTとか使えんのか
>>465 です
なんだかstaticの場合は難しそうというのはわかりました。
ありがとうございました
>>466 ちなみにこんな使いかたならたまにやる。
static <T> List<T> getAll (Class<T> clazz)
呼び出すときは、
List<Bean> list = getAll(Bean.class);
みたいになり、呼び出すとき型パラメータを渡さなくてよい。
引数により型が自明の場合は、指定しなくてよいみたい。
>>463 型パラメータTがStringってきまってるならgenericにする必要がないじゃん
genericsってキャストを書かなくて済むだけの飾りだから。 不可解な挙動があれば、Tのところを全部Objectと読み替えれば理解できる。
474 :
デフォルトの名無しさん :2010/10/27(水) 11:04:38
無名クラスでつまづいちゃってるヤツは
>>342 読め
おまえじゃまだ早い
>>474 こんな恥ずかしいコードは書くなってことか
DirContextでldap検索したとき、検索件数を取得するにはNamingEnumerationをhasMoreする以外に簡単に取得する方法はあるでしょうか?
javaもemacsで書いてますがeclipseってどの辺がいいの?
ajaxって流行ってんの?
流行ってるって言うか、ブラウザ側に組み込まれてる機能だから必須になりつつある。
秋の基本情報技術者に出てきたな
アジャコングとどう違うんですか?
どう違うんでしょうね
484 :
デフォルトの名無しさん :2010/10/27(水) 22:51:05
swingでラジオボタンを縦に並べたいのですが、どうすればいいでしょうか。
わくわく
どうすればいいのでしょうね
誠に恐れ入りますが私には分かりかねます
AjaxとRADIUSは区別がつかんな
もっとブラウザが増えて滅茶苦茶になるまでは規格統一しません
いちいち無知を晒すな
あー恥ずかしい
PGとしてベストプラクティスなのはどっち? 仕様でリストXの件数は最高3件である 処理的に配列かリストを使う必要がある この処理で各値の削除、入れ替え操作はない。初期値を参照するだけ ランダムアクセスの出来る配列のが断然処理速度的に有利だが、メンテナンス性を考えるとリストのがいい だが、仕様でリストXが4件以上になる事は極めて考え難い(1%もないレベル) 運用的に終日使われるので処理速度は重視されると言うのはある ぶっちゃけ配列もリストも使わずに3つ変数用意すればいいのだが、 それは開発基準により不可能である 俺は配列派なんだけど、どう思う?
>>492 定数化されてるコレクションならこういう方法がある。
List<String> list = new ArrayList<String>(3);
// list.add(hogehoge); x3
List<String> fixedList = Collections.unmodifiableList(list);
あとArrayListはランダムアクセス可能だから。 線形リストはLinkedListって別のクラス。
List使っておいて速度的に問題出たら配列に切り替えるでいいんじゃね?
こういうのはマイクロベンチマークで100倍の違いが出たとしても 1トランザクションあたりの速度差は0.1%も違わないものだ。 余程アクセス頻度が高くない限り。
>>493 有難い
参考になります
>>495 俺もそれを考えてた
配列から溢れたらリスト処理って手段
>>496 パフォーマンスは良いに越した事はないんだけどね
調べてみるわ
thx
>>495 はそういう意味じゃないと思うよたぶん
もしも実際遅くてプロファイルとってみたらその部分が原因なら直せというだけのこと
パフォーマンスチューニングの基本
>>498 書き込んだ後に気付いた
TRY & ERRORって事ね
実機環境に気軽に触れないから難しいんですよね
とりあえず、有り難う
作ってる途中で細かいことを気にする暇があったらさっさと形にして ボトルネックの改善に時間を使った方が結果的に速くなります。
意思伝達の質的な障害 * 話し言葉の発達に遅れがある。または全く話し言葉がない。 o (例)クレーン現象[5] * 言語能力があっても、他人と会話をし続けることが難しい。 o (例)一問一答の会話になってしまう。長文で会話ができない。 * 同じ言葉をいつも繰り返し発したり、独特な言葉を発する。 o (例)人と会話をする際に同じ返事や会話を何度もする。
>>500 アジャイルな開発として真に受け止めます
>>501 アジャイルな開発として真に受け止めます
アジャイルな開発として真に受け止めます
>>492 >PGとしてベストプラクティスなのはどっち?
これが味噌だと思うけど、プラクティスなら配列を使ったこと無ければ
配列を、Listを使ったこと無ければListをだろうけど、
システムサイドに立てば、492の条件から判断して
私なら配列で行きますね。
どっちでも良い局面で無駄にヒープのフラグメント発生させたくないから配列だな。 メンテナンス性って?
RESTって何なの?実態が良く解らん ちょっと勉強してみようかなと興味を持ったんだが、誰か背中を押してくれ
ただのあるべき論集。
>>503 ベストプラクティスって表現がダメダメでした。すいません
ご意見感謝致します。
>>504 成程
細かい視点で説得力ある意見ですね
大変参考になります
メンテナンス性とは、例えば仕変により配列に入る枠が今以上に必要になった時です
配列だとソースを修正する必要がありますがリストだと一切修正不要のコードで実現できるので
メンテナンスは不要
つまりメンテナンス性はリスト処理のが良いとなります
public class Test1028{ public static void main(String[] args){ int a = Integer.parseInt("1"); int b = Integer.parseInt("2"); System.out.println(a + b); } } これがコンパイルエラーになります。 parseIntを見つけられないと。 スペルや大文字小文字など,間違っているところはないと思うのですが…
JDK 1.0 とか使ってんじゃね。
自作のIntegerクラスがパッケージ(同一ディレクトリ)内にあって邪魔してるとか?
>copy con Test1028.java public class Test1028{ public static void main(String[] args){ int a = Integer.parseInt("1"); int b = Integer.parseInt("2"); System.out.println(a + b); } } ^Z 1 個のファイルをコピーしました。 >javac Test1028.java >java Test1028 3 コードは問題なし。コンパイル環境の問題。
>コンパイル環境の問題 だからそれを解決してください
OSを再インストールしてJDK入れなおしてちゃんとした入門書に沿ってやりなおす 今出てる情報からはそれ以上の解決法はありません
515 :
508 :2010/10/28(木) 20:19:11
>>511 が正解でした。
いや〜,「Integerクラスを作っちゃダメよ!」って,Integer.javaをコンパイルするときに
コンパイラが注意してくれると,ありがたいんですけどね。
みなさん,ありがとうございました。
ちなみに,
>>513 は私ではありません。
516 :
508 :2010/10/28(木) 20:24:10
あっ,でも,java.lang.Integer.parseInt()とすれば,作業ディレクトリに自作のInteger.classが あっても,parseInt()を使えるんですかね。。
音楽CDを再生したいのですが、どのクラスを使用すればよいのでしょうか? MIDIやWAVはサンプルはあったのですが、音楽CDがわかりません。
J質スレ名物のおまえじゃ無理音頭
そもそもなぜ自前のIntegerクラスを作ったのか 小一時間問い詰めたい
JDK 1.0 とか使ってんじゃね。
この人"おまえじゃ無理"って言われたのが相当悔しかったんだろうなぁ
コードは問題なし。コンパイル環境の問題。
用語のことですが、 インスタンスとオブジェクトですが、 みなさん、どっちで呼んでいますか。 それとも使い分けとかありますか。
SOAPとCORBAどう違いますのん
>>527 クラス自体がオブジェクトとして扱える言語とかあるから、
絶対インスタンスじゃないとまずいのはインスタンスと呼ぶけど、
他の言語だとインスタンスじゃなくてもいけそうな状況では、
Javaではインスタンスしかいけない場合もオブジェクトと呼ぶな。
クラスから作られたオブジェクトがインスタンス。 「○○クラスのインスタンス」というときに使うがJavaではインスタンスではないオブジェクトは存在しないので どっちでもいい。
Thu, 28 Oct 2010 23:44:54 +0900 この形式の日時をunix timeに変換するにはどうしたらいいでしょうか?
long unixTime = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss ZZZZ", Locale.US).parse("Thu, 28 Oct 2010 23:44:54 +0900").getTime() / 1000;
WEBコンテナとブラウザでケルベロス認証した場合、servletでケルベロス認証したときのIDなどの情報を取れるものでしょうか?
>>527 口で言った場合 Object クラスのことなのかオブジェクトのことなのか
わかりにくくなることを懸念して、インスタンスと言うようにしてる。
だがそもそも声に出して誰かと会話することなどないのだった。
全クラスが泣いた
Threadって、どういう場面で使うんでしょうか。 イメージできないんですけど。教えて下さい。
同時に複数の処理をしたい場面で使います
一人用麻雀ゲームのようなものをGUIでつくろうと考えているのですが あらかじめ用意した牌の画像を読みこんでその画像をドラッグ&ドロップで 自分の手牌と想定した14個の場所に置けるものを作ろうと考えているのですが どのようなクラスやメソッドを使えばいいのでしょうか? それと制限として牌の数は各4個までしか使えない、というのも考えています。
CanvasとMouseListenerとMouseMotionListenerを使えばいいんじゃない
httpの非同期通信が、簡単にできるライブラリってある?
URLConnection
Java Debug Interfaceの勉強したいのですが、お勧めの本は、ありませんか? 普通のJavaの入門書だとJDIを扱うことはないと思うので・・・
543 :
デフォルトの名無しさん :2010/10/30(土) 12:24:03
Servletを一通り勉強し終えた俺に一言
まだまだ次があるぜ (・∀・)!
WindowsのAWT実装どうなってるかHWNDの隠蔽まわりとかの話を重点的に要約してくれ
547 :
デフォルトの名無しさん :2010/10/30(土) 16:31:58
助けてください!今週からjavaの勉強を始めて市松模様の図形をつくりたいのですがうまくできません 何が違うのか教えてください。お願いします。 public class Checkers { public static void main(String args[]) { int row=7; // 行数 col=9; // 列数 // 表示 for( int i = 1; i <= row;i++ ) { for( int j = 1; j <= col; j++ ) { if ( (i + j) % 2 == 0) { System.out.println("□"); } else { System.out.println("■"); } } System.out.println(); } } }
> System.out.println("□"); System.out.print("□"); > System.out.println("■"); System.out.print("■");
549 :
デフォルトの名無しさん :2010/10/30(土) 16:50:12
>548 ありがとうございます!基本的なことなので以後気をつけます・・・。
>>544 フレームワークスパイラルか転職の分岐点
フレームワークスパイラルって何?
Java入門が終わったのでGUIに進みたいと思いますが AWTとSWINGについて 1.AWT、SWINGの順番にする 2.SWINGだけする 3.それ以外 どうするのが良いと思いますか
フレームワーク・・・アプリケーション開発を支援する枠組 スパイ・・・・・・・・・・第五列 ラル・・・・・・・・・・・・青い巨星
>>552 Swingメインで必要ならAWTも勉強がいいと思うよ。
Swing だけで良いんじゃね。 10 年前には AWT バリバリ使ってたけどもう AWT 固有の知識を使うことがない。
SWINGはAWTを使ってるけど、「AWT 固有の知識」というのは具体的になんのこと?
FileDialog や TextArea、ScrollBar あたり。
>>555 ,557
ジャバ7(jdk1.6u10)からはそうとも言えない。
559 :
デフォルトの名無しさん :2010/10/30(土) 21:51:11
Java7 延期で出たのは u12 だし、u10 も u12 も Java7 とは言わないし。
質問です。 事情があってJAVAを勉強する事になったのですが、どうせなら自分でアプリケーションを作って勉強したいと思っています。 しかしJAVAの利点が最も生かされるアプリケーションはどんなものなのでしょうか? 私はC/C++(慣れてる)、VB(慣れてる)、C#(かじった程度)なら使えるので JAVAがそれらに勝てる利点を活かしたいと思います。 ・クライアントアプリケーション どう考えても画像処理(Directx)を含めた処理速度はC++のが上だし、 作りやすさではC#のような気がします。 ・サーバープログラム 処理速度を要求されるものならC++だろうし、ウェブシステムならPHPとかのような気がします。 ・ブラウザで動くアプレット どう考えてもFlashとかシルバーライトのような気がします。 JAVAでしか出来ない。JAVAが一番有利。JAVAを使うのが最適。 といったアプリケーションはどんなものでしょうか?
ゲーム系かよ
はいはいサーバーサーバー 理由は、みんな使ってるから
専門学校に居るような落ちこぼれでもなんとかなるくらい簡単な点 メリットなんてこのくらいだろ
生産性じゃね、Javaの利点って GUIにしてもサーバーにしてもC++では手間がかかりすぎるというか
でもJavaより生産性の高い言語は他にもあるか・・
567 :
561 :2010/10/30(土) 23:25:33
あえて挙げるなら、WindowsでもMACでも動く何かの便利ツールといった感じでしょうか? .NETframeworkとかは建前はマルチプラットフォームを唱えながらMacじゃあんまり使われてないみたいですし。
boostって肥大化しすぎでいらないですよね?
>>567 今後もMacでJavaが動くかは微妙な情勢だが。
DB設計もそうだし、オブジェクト設計もそうだし そのへんの一流の技術者は、ザラにはいない。 言語云々の話ではないかな。
boost,stlすらも使えないで「c/c++やってます」と言うナンチャッテは非常に多い(特に日本では)
572 :
561 :2010/10/31(日) 00:28:15
調べたところdocomoの携帯のiアプリを作成出来るのが利点のひとつかもしれませんね。 他はやっぱり知識として貯めこむ程度で、一番よく使われているであろう用途のサーバープログラムの 簡単なものを作成トライしてあとは軽く流すことにします。
javaのxmlって他の言語よりも難しくありませんか? xmlをパースした後、パースした結果ってどこに入れますか?
File file = new File("c:\\temp01\\ディレクトリ1"); if (file.exists()) { if (file.delete()) { System.out.println("ファイルを削除しました"); } else{ System.out.println("ファイルの削除に失敗しました"); } } else { System.out.println("ファイルが見つかりません"); } を実行したらディレクトリ1の削除に失敗します。 ディレクトリ1がアルフォベットのディレクトリなら削除できるのですが 日本語だと削除できません どうしたらいいでしょうか。
>javaのxmlって他の言語よりも難しくありませんか? ありません。W3Cに沿ってればみんなだいたい一緒だよ >xmlをパースした後、パースした結果ってどこに入れますか? DOM なら Document。SAX ならお好きにどうぞ。
>>574 です。
自己解決しました。ディレクトリの中のファイルを先に消さないと
ディレクトリは消せないんですね。
「6 桁以下の正の整数 n を入力し、n 以下の素数がいくつあるかを出力するプログラムを作成してください。 複数のデータセットが与えられます。各データセットに n が1行に与えられます。入力の最後まで処理して下さい。」 上記の問題を解こうと思ってソースを書いてみたのですが、正しい結果が得られないようです。 どこに問題があるのでしょうか、ご教示願います。 import java.io.*; import java.util.*; class Main{ public static void main(String[] args){ int data,cnt; Scanner sc = new Scanner(System.in); while(sc.hasNext()){ data = sc.nextInt(); cnt = 0; for(int i=2; i<=data; i++){ for(int x=2; x<=i; x++){ if(x==i){ cnt+=1; break; }else if(i%x==0){ break; } } System.out.println(cnt); } } }
>>573 パースってDOMだよね?
DocumentBuilder オブジェクトに parse でファイルとか与えると Documentオブジェクトが返ってくるだけの仕組みなんじゃないの?
Javaをはじめようと思うんですけど、 なんかオラクルが絡んできたみたいで迷っています。 いい感じに普及してきたと思ってたのに悪どい商売に巻き込まれそうで・・ Javaって未来ありますか?
趣味か? デスクトップアプリ作るならオラクルとか関係なく終わってるよ
自社でAndroidアプリケーションの開発が始まりそうなんです
じゃあやれよ。プログラミング言語くらい複数出来て当たり前。 他の言語できるならJavaくらい楽勝だろ。プログラミング未経験ならご愁傷様。
まだ、やめようよって言える段階だから足突っ込んだ事で今後自社が損するような事態にならないかなと gifの時みたいな
ならねぇよ。Oracle独占になったらIBMが黙っちゃ居ない。
黙らなかったところでIBMが勝手にJavaを拡張して提供するようなことはできないんだけどな
バカなの?
むしろ Oracle の Java へのリソース投資が薄れ IBM の影響力の方が強くなるだろうな。
c99のコンパイラどれがいいですかね・・・・? x86,amd64,armのコンパイラをそれぞれ希望します。
Ubuntu 10.04上で次のようなプログラムを動かしているのですが、音が鳴りません。 たまに鳴ることもあるのでスピーカの不調等ではないと思うのですが、原因としては何が考えられるでしょうか。 よろしくお願いします。 import java.util.*; import java.io.*; public class Test { public static void main(String[] args){ java.applet.AudioClip clip = java.applet.Applet.newAudioClip(Test.class.getResource("hoge.mid")); clip.play(); } }
再生が終わるまでThread.sleepしてみたらどうだろう
saxでxmlをパースしているサンプルコード無いですか? stackを使っているサンプルは見たのですが、他のもみたいな〜
中級者以上って何を勉強してんの?
彼氏を女みたいにイかせる方法
>>589 Midi音源ないんじゃないの?WinGroove入れてみるとかしないとだめだね
595 :
デフォルトの名無しさん :2010/10/31(日) 22:00:53
XQueryなら5年ほど前に使ったことある
596 :
デフォルトの名無しさん :2010/10/31(日) 22:49:36
Eclipseで実行形式のファイルを作成する方法を教えてください
祈る
そんな面白くないこと言ってる暇があるなら早く教えてください
それってEclipseを使ってるだけで、Javaじゃないから、 このスレ的にどうなのよ?ちなみに俺は、質問者じゃない
601 :
デフォルトの名無しさん :2010/10/31(日) 23:11:17
Eclipseで実行形式のjarを作成する方法を教えてください
回答者が馬鹿すぎて泣けてきました
質問者のレベルに合わせただけだろ
604 :
577 :2010/10/31(日) 23:17:21
どなたか(´・ω・`)
なんじゃ?(´・ω・`)
>>602 お前さんまだいたのか
ここはヤフー知恵袋と違って必ず相手してもらえるとは限らんのよ
どの質問をスルーされてご機嫌斜めなのか知らんけど、言ってみなw
おれでも答えれる内容なら答えてやっからさ
バカなのにそうやって無理して回答しようとするから…
言語歴1週間の俺でよかったらなんでも答えるよ 今SJC-A勉強してるお^^
∧ ∧ / ヽ ./ .∧ i´`Y´`Y`ヽ(⌒) / `、 / ∧ ヽ_人_.人_ノ`~ ヽ /  ̄ ̄  ̄ ヽ \___ \ (  ̄ ̄ ̄11月  ̄ ̄ ̄ ̄) \_ 〉/ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ ヽ -=・=-′ ヽ-=・=- / \___/ / : \/ (⌒) . ノ Y`Y´`Yヽ (´ ̄ .i__人_人_ノ ` ̄ヽ /
今年は就職できなかった。来年頑張ります。
612 :
577 :2010/11/01(月) 11:58:25
>>606 ああ、括弧がひとつ抜けていましたね・・・
修正しました、けどまだおかしいらしいですorz
>>612 二重のforループを抜けた後に表示するようにして
適当に数字入れて実行してみたけど合ってると思うよ
どこがどうおかしいのさ
今後Javaに演算子オーバーロードが実装される予定ってありますか?
ないな そういう設計方針なのもあるけど、その前にJavaには値型がないので、 オーバーロードされた演算子使いまくるとnewだらけで非常に非効率なコードの出来上がり。
616 :
577 :2010/11/01(月) 14:44:18
>613 online judgeという会津大学のサイトがあって、そこでは問題に対してソースを書いて提示、サーバ側で実行してクリアかどうかを判定してくれるんです。 そこで先述のような素数の数を出すソースを書いてみたのですが、 提示するとランタイムエラーが帰ってきてしまうのですよね。 コンパイルエラーならその内容も出てくるのですが、ランタイムエラーだと詳細がわからなくて・・・ 勉強の一環として会社のPCからやっていますが、 コンパイラを入れられない端末なので検証が出来ないのです。
>>616 >>577 で書いてあったように単に正しい結果が出力されていないだけでなくて本当にランタイムエラー?
>>577 からの修正後の補った } の位置次第の話なんだが、もし末尾に補って修正したのなら、
求められている出力は
> 各データセットごとに、n 以下の素数の個数を1行に出力して下さい。
なのに
>>577 では各整数が素数かどうかをテストするごとにそれまでの素数の数を表示しているから、
誤った出力だと判断されてるだけなんじゃないかと思うんだが。
もしそうなら、
>>613 の言うように最終結果だけを出力するように修正して試してみてはどう?
>>618 サイト0009の問題なら素数の個数を出力しろだから回答はあってる。
JAVAがC#に勝る点って何?
C#よりJavaの方が検索しやすい
C# は Windows 以外では実質的な選択肢に入らない。 Java VM がいい感じに枯れてて、スクリプトや仮想マシン型実行環境の中では一強状態。
JSFって結構使われてたりすんの?
javaのジェネリックってtemplateみたいな事できたんだね List<String>以外に使い道が無いと思ってた
キャスト除去以上の意味はないよ? 全てObjectに置き換わる
626 :
624 :2010/11/01(月) 21:00:59
saxでxmlをパースする時、サンプルコードでは親ノードを気にしていない事がよくあります 実際のところsaxでは親ノードを気にしないプログラミングが当たり前なのでしょうか?
SAX を選択する時点で構造が正しいと前提を置いた上で効率重視 (速度とヒープ消費) なので気にしない。 構造チェックだけならパーサにスキーマ指定できなかったか?
630 :
627 :2010/11/01(月) 22:33:48
>>628-629 thx
なるほど、たしかにスタックを使えば親がわかりますね
domを少し調べてみたのですが、saxと比べるとサンプルが少ないですね
やっぱり、xmlは扱いにくい
Javaスクリプトが絡んでくるのってどんなとき?
633 :
630 :2010/11/01(月) 23:06:05
スレッドの待ち合わせ処理を、thread.join()を使わずに以下のようにするのは やはり駄目なのでしょうか? (JavaDocにはgetState()は同期の制御用でないとありました) MyThread thread = new MyThread(); thread.start(); while (thread.getState() != Thread.State.TERMINATED){ if (Thread.interrupted()){ // 中断用フラグ設定 thread.cancel(); } }
ダメというか、普通 join() でやるだろ。 あとそのコードのままだと待機中にCPU100%になるぞ。
でたらめ教えるなよ 無知なのに答えるなって何度言ったら(ry
637 :
デフォルトの名無しさん :2010/11/02(火) 04:00:41
先生は初歩的な質問には答えません 難しい質問だとおなかが痛くなるのでやっぱり答えません
つ 正露丸
>>634 別にどうしてもだめってことはないけど、Thread.interruptedの使い方なんかおかしくないか?
あなたのやりたいことは本当にそれで合ってるのか?
String str2 = "Book is 100yen."; String regex2 = "(\\d.+?)(yen)"; result = str2.replaceAll(regex2, "\\\\$1");//ココ ココの\が4個並んでいる、それぞれの意味を教えて下さい。 \100とするには、\は2個で良いような気がするんですが 結果は4個必要みたいです。
642 :
デフォルトの名無しさん :2010/11/02(火) 17:24:50
643 :
642 :2010/11/02(火) 17:29:22
失礼、「何をしたいのか」が抜けていましたね。 複数のNIC(仮想NICも含む)が存在する環境で、どのNIC/IPアドレスが「生きている」(外と通信している)かを識別したいのです。
>>641 ソース: \\\\
文字列: \\
正規表現の解釈: \
\dとかは\\dと指定すればいいのに、 どうして\のときは\\では駄目なのですか
\ が \\ だったら、 \ の次に本当に文字 'd' が来て欲しい場合も \\d になっちゃうじゃないか 数字を表す \\d と区別できない \\d -> \d -> 数字 \\\\d -> \\d -> \ と d
JFrameでコンテントにパネルを貼っていて window内でキー入力を受け付けるには KeyListenerをどう書いて追加すればいいですか? もう public void keyPressed(KeyEvent e) {} などは記述しています。 つなぎ方がわかりません。
javaをc++の方言としてexeやdllにコンパイルする方法があるそうですが c++の関数を呼んだりはできないのでしょうか?
JAVAがPythonに淘汰されるのはいつ頃ですか?
JavaとPythonじゃ開発分野は競合しないし全然関係ないわ
JavaとPythonの開発分野ってどこ?
javaのコンパイルした結果から逆にソースコードを抽出ってできるんですか?
Java→なんでも Python→シェルサポート Web
>>649 できるぞ
GCJ CNI でぐぐってみたまえ
>>653 コンパイルした結果 (classファイル) にソースコードは含まれていないから、中にあるものを取り出すわけではないので、抽出っていうのはちょっと違うな
再合成とでも言うべきか・・・ ともかく、逆コンパイルは、ある程度はできる
658 :
sage :2010/11/02(火) 22:16:35
ごめん、あげちゃった。疲れとるな・・・orz
socketプログラミングって普通にストリームを扱うみたいにやっていいの? socketを使うとプロトコルが作れるみたいだけど、 いちいち今なんバイト目かを数えるは面倒な気がする
普通にストリームを扱うみたいにやっていいよ
JAVAって英語と数学できないと厳しいですか? 専門学校に入ろうと思ってるのですが素人なのでわかりません
Scannerクラスを見ていて、 String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input); s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)"); MatchResult result = s.match(); //ココ findInLineメソッドはリターンはStringなんですが、 そのリターンをココの部分のmatchメソッドで使っている形跡がなくて、 よく見ると、LRUCacheってところから取得してるみたいですけど、 LRUってのを調べたら、最も最近利用された情報が格納されるみたいで、 もしかしたら、findInLineのリターンは使用してないけど、 そのときにLRUCacheに格納されてて、matchメソッドから、 LRUCacheを参照して情報を取得しているとかありますか?
>>662 中堅以上の国立大学の情報系学部や院でも行けよ・・・。
それは、置いといて英語も数学もどこまでやるかによって必要かが
変わってくる
基本的には、不要。応用的なことをしだすと必要。
英語については、日本語の参考書やドキュメントで情報が不足の時に
海外の参考書やドキュメントを読むために必要。
数学については、大学初頭数学くらいが分かってないと一部ライブラリ
が使いこなせなかったり、数学的要素の強いメソッド(関数)の作成に
困るかもしれない。
>>662 数学はできた方がよいが、できなくてもよい。数学的素養は多少必要。英語はできると英語ドキュメントが読めるので便利。
Javaはオープンソース文化が強くてソースがすべての世界だから、大量のソースをすべて読み取り理解するほど熟達しているなら英語不要だと思う。
おれはその域には達していないし達することはできないけどね。
数学的素養は高校レベルあればどうとでもなると思うけどねえ。 それより勉強が嫌いで、受験勉強とかしたくないから専門に・・のような人なら向いてないかもよ。 同じプロジェクトに若い専門卒PG(他社だけど)が何名かいたんだけど、俺が技術系の本や雑誌の話したら 「自宅でこんな本読むんですか?もしかしてこの本自分のお金で買ったんですか?なんのためにw?」 みたいなことを複数に言われてもにょった。 メンバーがこんなんばっかりだったら博打で中華にアウトソースしたくなる気持ちもわかるなぁ、と思ったもんだ。
技術的な質問はダンマリだけど、こういう話題は良くレスがつくw
いろいろな為になるお話しありがとうございます! どうしてもSEになりたくて、PCの勉強がしたいので質問させていただきました。 英語に関しては相当努力しましたが全然伸びずに、かなり苦手なので・・・ あと文系理系は専門の場合関係ないですよね? JAVAとはすこし逸れますがよろしくお願いします。
>あと文系理系は専門の場合関係ない
学歴・履歴という意味ではまったく関係ない。
得意不得意という意味では密接に関係ある。
ろくに勉強もしてない今の状態で、簡単なゲームとそのソース(Javaでなくていい)を見比べて、
どの箇所が何の処理をやってるか大体わかれば、
>>665 の言ってる「大量のソースをすべて読み取り理解」の素養あり。
素養なければ英語読めるように勉強しましょう。
人間同士の言葉の勉強さえもしたくないんであれば、
機械との言葉(あるいはプログラマ同士の言葉)の勉強はあきらめた方がいいかもよ。
>>668 専門学校は1:1:8でめっきり学生の質が分かれる
最初の1はそこそこの大学(マーチ早慶等)から流れてきた一応の頭がある層、ただしコミュ障だったりサボりぐせがあったり
真ん中の1はニッコマ程度の学力はあったが、金銭的な理由だったり親等が馬鹿で間違って入ってきちゃった層
残りは因数分解や分数の計算が出来ない真性の落ちこぼれの層、特に文系出身は小学生未満でとにかくひどい
たぶん勉強したくてこのスレに書き込んだと思うから大学に行った方がいいよ、頑張って地元の国立とかね
専門学校っていかに生徒を辞めさせないでお金を集めるかしか考えてないから、授業のレベルが著しく低いんだわ
あと地方の進学校では2年の夏から1日12時間程度勉強するのが基本だが、それくらい頑張ったのか?
一応偏差値67の進学校で毎日8時間くらい勉強してました SEもすごい厳しい世界みたいですね もう少し調べてみます
俺も専門卒だけど、確かに生徒はそれなりにまじめに頑張ってる奴と、遊びに来てる奴と綺麗に分かれてたな。 まぁ、就活の結果も綺麗にわかれるだろうと思っていたら案外そうでもなかった。 やっぱ専門卒ってだけで下の方になってしまって、内面までちゃんと見てもらえないのかと悩みもしたけど 結局俺は大卒から見ても結構良い方な会社に入れたので運が良かったんだろうな
質問です。 Graphics[] は配列として扱えましたが Graphics2D[] にして配列にするとエラーになりました。 2Dの方は配列にする方法ないのですか?
>>673 どういうソースか、どういうエラーかぐらい書いて下さい。
エスパー的に回答するとすれば、たぶんキャストしてないから。
ex.) g2ds[0] = (Graphics2D)img.getGraphics();
何それオープンGLか何かか?
676 :
273 :2010/11/03(水) 13:47:32
すいません。勘違いでした。 (Graphics2D)を代入するの忘れてました。
677 :
673 :2010/11/03(水) 13:48:16
失礼673です。
キャストはそれそのものが命令だから、代入とは言わないが、まあいいか。
679 :
デフォルトの名無しさん :2010/11/03(水) 14:00:08
教えてほしいです。JAVAクラスからJNI関数を呼びそこで値を取得したいのですが、JNI側で値を習得したらその値を構造体に入れる予定です。その構造体はJAVA側から参照出来るでしょうか?ヘッダー等を介してJAVAとJNIで一つの構造体を共有出来るでしょうか?
構造体というかメモリブロックとして受け渡しすれば出来るんじゃない? コンストラクタでbyte配列を受け取って、getter/setterはByteBufferで処理すれば 擬似的に構造体をJavaBeansにできると思う。(不確か) ただしJNIがリンクするライブラリに巻き込まれてJava側もJVMごと落ちる可能性があるから、 よほどのことがない限りプロセスは分けた方がいい。 実行可能ファイル(exeとか)をRuntime.execで呼び出してProcessクラス経由で扱う方が安全。 こっちはStreamで扱うことになるけど、JNIを扱うよりは学習量も少ないかと。
681 :
デフォルトの名無しさん :2010/11/03(水) 14:56:10
eclipesのvisual editerがないんだけどなぜでしょう? VE、GEF、emfを解凍してフィーチャーズとプラグインのコピーも本体のほうにはりつけたのですが出来ません
>>679 昔書いたコード見たらこんなのあった。
電子ペンの筆跡データから GeneralPath を生成する、ネイティブ側での処理の一部。
pathClass = env->FindClass("java/awt/geom/GeneralPath");
pathConstructorId = env->GetMethodID(pathClass, "<init>", "()V");
moveToMethodId = env->GetMethodID(pathClass, "moveTo", "(FF)V");
path = cls->env->NewObject(cls->pathClass, cls->pathConstructorId);
cls->env->CallVoidMethod(path, cls->moveToMethodId, x, y);
Java側では、構造体に相当するクラスを作って、
ネイティブ側では、構造体の各値を上記のように渡す関数を作る。など。
683 :
679 :2010/11/03(水) 15:07:28
>>680 >>682 有り難うございます。
参考にします。ちなみにJAVAのShortとJNI要はCのShortは互換性?同じと捉えても良いでしょうか?
JNIってプリミティブ型のエンディアンも自動的に変換してくれるの?
javaのint<->jni.hのjintみたいな部分はエンディアンの変換必要ない。
690 :
681 :2010/11/03(水) 16:05:59
691 :
681 :2010/11/03(水) 16:07:10
VisualEditorじゃなくれWindowBuilder Proの間違いですww
693 :
デフォルトの名無しさん :2010/11/03(水) 19:51:41
初めての質問です。 スレ違いでしたらすみません。JavaのHyperLinkListenerをJ#で使うにはどのようにすればよいのでしょうか?
694 :
デフォルトの名無しさん :2010/11/03(水) 20:05:05
習作で,箱庭型のシミュレーションプログラム???を作り始めたばかりのところです. 中にいる粒子(キャラクタ)に周囲の環境を認識させ判断させるAIを考えていますが, 世界全体を表す大きな(重そうな)クラスをメソッドの引数としても,重くなりませんか? つまり, javaの引数はきちんと cでいうポインタのようなモノだけでやりとりしているのでしょうか.
Javaのオブジェクトは参照渡し。Cで言うポインタ渡しと同じ。
696 :
デフォルトの名無しさん :2010/11/03(水) 20:33:42
>>695 ありがとうございます.
ぜんぶインナークラスでやるべきかとかバカなことを考えました。
参照渡し≠ポインタ渡し=値渡し
はいはい参照の値渡し参照の値渡し
javaって何でvectorがあるんですか? C++のstlをパクッたからですか
eclispe3.6にve入れたんだがパレットの欄にswingコンポーネントがないんだけど どうやってだすの?
Vector, Hashtable あたりは JDK 0.9〜1.1 までの遺産。 STL とは操作互換性とか全く意識してないと思うがな。
Dictionaryが使用不可になったいきさつを御存じなんですか?
別に今でも使用できるぞ
Java 出た頃はどの入門書もレベルが低くて 「抽象化されたインターフェースを使え」 という意識はほとんどなくどれも Hashtable ベタ書きだったからな。コアライブラリでも 1実装しか提供されてなかったのであまり意味がなかった。
次のリリースでDicinonaryにつけられた推奨されないクラスの烙印をとりのぞいてほしい。
スペルミスするくらいならやっぱり使わない方がいいクラスなんじゃね
ユーザより入力されたデータが、ひらがなか?とか、 郵便番号の形式か?ってチェックは、普通すべて、 正規表現でやる?web系の開発してる人の意見聞きたいです。
HashMap<K,V>に存在するキーと値を ファイルに書くとして、HashMapのデータを全て、キー+ 値 で読むには、どうしたらいいですか。
>>707 正規表現。あまり込み入ったのはコードで。
>>708 シリアライズでも使え。ファイルをテキストエディタで編集する前提なら Properties。
import java.util.*; public class TestBadLegacy { public static void main(String[] args) { List<Integer> myList = new ArrayList<Integer>(); myList.add(4); myList.add(6); Inserter in = new Inserter(); in.insert(myList); System.out.println(myList); } } class Inserter { void insert(List list) { list.add(new Integer(42)); list.add(new String("42")); } } これってジェネリックスでIntegerしてるのにlist.add(new String("42"));でString型を追加できるのはなぜですか?
>>710 コンパイラが
list.add(new Integer(42));
list.add(new String("42"));
は安全じゃないって警告するだろ
class Inserterでジェネリックしてないから。
実行可能jarを叩くだけのWindowsのexeファイルを作りたいんですが、 フリーのcコンパイラとかでおすすめや定番はありますか? アイコンも同梱出来ればなおよしなのですが。
javaのAPIは、よく出来ているなあ
>>713 おれは、jsmoothをよく使う。
設定を保存すれば、コマンドラインでjar->exeができるからantやmavenに仕込めるから楽。
>>658 これ良いね。ソース添付しなくても良くて便利。
javaの仮想マシンで動くjavaでない言語を作ることってできるんですか? 仮想マシンの仕様って公開されてるの?
>>693 OpenJDK のソースを持ってきて、自分でコンパイルしてクラスライブラリを作れば、使える可能性があるかも。
>>717 ちょっとでかい本屋行けば Java 仮想マシン仕様の本が置いてある。
元々 Sun (というかマクネリ) は「勝手な言語乗せんじゃねぇ!」ってスタンスだったが
最近は Scala や JRuby あたり使って Java のようなバイトコード作れるし
JavaScript, Jython あたりは内部でバイトコードに変換してるし。
invokedynamic が実装されれば動的型付言語も少しはマシになるかもしれん。
721 :
デフォルトの名無しさん :2010/11/04(木) 13:06:24
>>717 可能だし、普通に公開されている。jphpやjrubyは、JVMで動くphp環境だったり、
Ruby環境。Scalaという関数型プログラミング言語もJVMで動作する。
Jasminなんてclassファイルを吐くアセンブリもある。(Jasminは、バイトコードに
近い仕様)
OolongというJVMアセンブリもある。
ただ、実際には、方法が二種類あって、JVM上で動くjavaで作った環境
の上で何らかの言語を動かす方法と、JVMで直接動かす方法。
開発の容易さは、圧倒的に前者。
webサイト作ろうとして使おうとしてた部品がjavaで書かれてたのでjsp使ったんだけど 他の選択肢ってないの? phpやpythonだといろんなフレームワークあるよね blogも簡単に作れる
>>722 あり過ぎてわけわかんないレベル。
毛色のかわったやつだとWicketとか。
Servlet API 自体が古い CGI 仕様を参考にして作ってしまったからな。 サーバサイドのフレームワークは乱立状態。 ところで JWebPane って次の JDK で乗らないの? JavaFX とともに死滅? 実用主義の Oracle ならネイティブブラウザコンポーネント使えとか圧力来そうだが。
jsp以外にもいろいろあるのか どれが一番推奨なんだ
コレクションフレームワークですけど、 ListとMapの用途は、分かったんですけど、 Setの存在理由がピンと来ません。 MapのリターンとしてSetがあったり、Listで使えたりしますけど、 Setが、私がSetですみたいに、位置づけられているということは、 Set独自に存在理由が、あると思うんですけど、 Setがあるときに、こういうのが便利であるとか、 こういうふう、よく使われるとか、 教えて下さい。
特にない 要素に重複がない (同じ要素を2つ以上持たない) ということを表しているだけ add するときすでに同じ要素があったら追加されないとか、まぁ便利といえば便利なときもあるけど
>>726 がーっとデータを突っ込んでは、重複省いてアルファベット順に並べて、
また突っ込んでは並べてなんて時は TreeSet が便利
730 :
デフォルトの名無しさん :2010/11/04(木) 18:30:15
731 :
デフォルトの名無しさん :2010/11/04(木) 18:32:52
732 :
デフォルトの名無しさん :2010/11/04(木) 19:24:01
javaでmecabを使用して形態素解析をし、 その結果を利用して各名詞の個数を数えたいのですが、ひとつひとつの要素が どういった形で格納されているのかよくわかりません。 なので、形態素解析の結果を使って名詞を取り出すプログラムの書き方を教えてもらいたいのですが。
動作未検証。 Map map = new LinkedHashMap(); Node node = tagger.parseToNode(str); for (;node != null; node = node.getNext()) { if (node.getFeature().startsWith("名詞")) { Integer n; if (map.containsKey(node.getSurface()) { int oldN = ((Integer)map.get(node.getSurface())).intValue(); n = new Integer(oldN + 1); } else { n = new Integer(1); } map.put(node.getSurface(), n); } } System.out.println("名詞の種類 : " + map.keySet().size()); System.out.println("出現回数 : "); for (Iterator itS=map.keySet().iterator(); itS.hasNext(); ) { String surface = (String)itS.next(); int n = ((Integer)map.get(surface)).intValue(); System.out.println(" " + surface + " : " + n); }
テスト済みのやつ貼ってください
いやです
736 :
デフォルトの名無しさん :2010/11/04(木) 21:46:10
>733 素早い回答ありがとうございます。 よければ簡単な解説をしてもらえませんか?
いやです
それで理解できないなら諦めろ
739 :
デフォルトの名無しさん :2010/11/04(木) 21:51:24
Mecabの仕様を見ろks Javaほとんど関係ない
>>736 どこまで理解できて、どこから理解できていないか伝えれば、暇なやつが答えてくれるかもしれない。
ソースを見た感じ、一度パース結果をmapにいれて、名詞の種類とかを計算しているっぽいけど、そういうことを知りたいのかな。
n次元配列って作れないの? プログラム中で入力や計算により求めた値n リスト使ってもあまり上手く行かなかったというか、頭がこんがらがって断念した 高速に、リストまたは配列の値を、コピー、代入、参照、時に出力をしたい
>n次元配列って作れないの? ちょっと調べればあるでしょう。 int[][] arrays = new int[HEIGHT][]; for (int y=0; y<HEIGHT; y++) { arrays[y] = new int[WIDTH]; for (int x=0; x<WIDTH; x++) { //この for は場合により Arrays.fill でも可 arrays[y][x] = 0; } } あるいは List[] lists にして、lists[y].get(x); するとか。 >高速に、リストまたは配列の値を、コピー、代入、参照、時に出力をしたい n次元配列とは全然別のレベルの話だなぁ・・・ サイズが可変なのか固定なのか、どの処理が一番パフォーマンスに影響するかなどで最適な方法は変わるけど、 ほんとに「高速に」が必要な規模なの? 昨今のPC使ってて個人の練習レベルとかの小規模なものだったら、 違いなんて屁みたいなもんだよ。 ただひとついえることは、いろんな方法で書けるようにならないうちは、 こだわってもしょうがないってこと。
本当の可変次元配列は面倒いから俺ならHashMapにする
マイクロ秒の差を競うチキンレースをやっていたいんですよ!
public class MyArray { private final int dimensions; private final List list; public MyArray(int dimensions) { list = new ArrayList(); this.dimensions = dimensions; } public void set(int[] indexes, Object value) { set(indexes, 0, value); } public Object get(int[] indexes) { return get(indexes, 0); } }
private void set(int[] indexes, int i, Object value) { if (i == dimensions-1) { while (list.size() <= indexes[i]) list.add(null); list.set(indexes[i], value); } else { while (list.size()-1 <= indexes[i]) list.add(null); MyArray sub = (MyArray)list.get(indexes[i]); if (sub == null) { sub = new MyArray(dimensions); while (list.size() <= indexes[i]) list.add(null); list.set(indexes[i], sub); } sub.set(indexes, i+1, value); } } private Object get(int[] indexes, int i) { if (list.size() <= indexes[i]) return null; if (i == dimensions-1) { return list.get(indexes[i]); } else { MyArray sub = (MyArray)list.get(indexes[i]); if (sub == null) { return null; } return sub.get(indexes, i+1); } }
xjcのWXS以外がJDK6じゃ使えないとかのバグ直す気ないよね
public static void main(String[] args) { //Objectを値にとる可変長4次元配列 MyArray array = new MyArray(4); //1文字あたり16進数4桁であるとして、各桁を添え字として保存 String str = "テスト文字列でごわす♪"; for (int i=0; i<str.length(); i++) { char c = str.charAt(i); int[] indexes = { (c >> 12) & 0xf, (c >> 8) & 0xf, (c >> 4) & 0xf, c & 0xf }; array.set(indexes, new String(new char[] { c })); } //65536文字分全部を調べて、保存されていれば表示 for (int i=0; i<0xf; i++) { for (int j=0; j<0xf; j++) { for (int k=0; k<0xf; k++) { for (int l=0; l<0xf; l++) { String s = (String)array.get(new int[] { i, j, k, l }); if (s != null) { System.out.print(Integer.toHexString(i) + Integer.toHexString(j)); System.out.print(Integer.toHexString(k) + Integer.toHexString(l)); System.out.println(" " + s); } } } } } }
n次元というからには矩形だろうから リスト使うよりも一次元配列にインデックス計算して入れたほうがいいと思う
純粋なロジック時間は、大抵はI/Oと割り込みのオーバヘッドに食われる。
そんならジャバじゃなくてシーでもやってろ
fileのエンコードはms932になっているので日本語で処理できるのですが System.out.printの表示がutf-8になっているみたいですが、 これを、そのときだけshiftjisに変えて出力する方法はありますか。
755 :
デフォルトの名無しさん :2010/11/05(金) 19:34:04
Seesaaって実務でよく使われてんの?日本だけ?
使われているがstrutsのラッパだから日本だけかな。
758 :
デフォルトの名無しさん :2010/11/06(土) 02:04:32
JMenuBarの高さを取得したいのですが、どなたかご存知ないでしょうか?
>>752 今までpython使ってて、可変長リストやリストの中にリストを任意の数だけいれたりは問題なかったけど
同じようなことをJAVAで組んでくれって頼まれた時に、手詰まりしました
>>750 時間の関係から、何次元までしか使わないって事になったので、今は数次元配列とその方法でなんとかした状態です
>>743 読んでもよくわからないので組んでみます
作ったn次元配列の中身の数ヶ所の値に乱数を足したり引いたりみたいな感じの事を、100*100000*20000*α回くらいやります
>>746 ,747,749
組んでみます
java関係ない
>>758 その JMenuBar に getPreferredSize を呼んでみたら
ひとつ質問です。 Servletの名前ってサーバ視点とクライアント視点どちらで付けるんですか? サーバ視点だと送り出す側だからSend*Servlet。 クライアント視点だと受け取る側だからGetだとかLoad*Servlet。 私はサーバ視点からの命名が正しいと思ってたのですが、知人と意見が割れてしまったので教えてください。 件のServletの処理内要はJSONをクライアントに送り出すものです。 お前ら根本的に間違ってるぞ!こういう名前使え!ってのがあれば合わせて教えてください。 よろしくお願いします。
>>763 サーバ側で動くわけだけど
クライアントの要求に応じてクライアントの代わりに動くわけだから
正直どっちでもいい
でもたいてい読み込み、変換、返答にクラスを分ける
その場合は Servlet は Send になる
766 :
763 :2010/11/06(土) 13:18:29
>>764 なるほど、どちらでも良いのですね。
もう一度良く話し合って、それでも意見が割れる様ならばジャンケンでもして命名規則の統一をする事にします。
ありがとうございました。
GUI部品を使うなら普段はAWTとSwingどちらが推奨されますか?
Swingチンコ
769 :
デフォルトの名無しさん :2010/11/07(日) 14:33:16
インターフェースのabstractメソッドの定義で、戻り値をそのインターフェースの実装クラスに指定する方法はありますか? たとえばインターフェースAの中に抽象メソッドget()があり、 Aの実装クラスBでget()を実装する場合にはBを返す、 Aの実装クラスCでget()を実装する場合にはCを返す、ということをやりたいです。 Aの定義の時点でget()にこの制限をつけることは可能でしょうか? それともAの定義ではget()の戻り値はAとする意外ないのでしょうか?
>>769 Generics を使えばある程度までは制限できる。Enum クラスを参照。
常に具象クラスが分かっている状態で使うなら、
それぞれのクラスのオーバライドで戻り値を限定した方がずーっと楽だけど。
とりあえず、本当にその必要性があるかどうかを検討するべきに一票
javaからemacs lispの便利関数を利用したいのですが 何か方法はないのでしょうか
>>769 >>770 のようにやるときは呼び出す側も Generics になってないとしょうがないと思う。
例えば TreeSet<T> のコンストラクタで Comparator<T> を与える場合のように。
>>770 のいう「必要性」は、「そういう設計が適しているか」ということ。
773 :
encodeURL :2010/11/07(日) 19:34:44
すいませんが質問なんでageさしてもらいます。 javax.servlet.http.HttpServletResponse#encodeURL(String url) について質問です。 #javax.servlet.http.HttpServletResponseのインスタンスがresponseだとして質問します。 response.encodeURL(request.getContextPath() + "/test1") だとクッキー無効の場合APIリファレンス通りjsessionidが付与されます。 しかし、、、 response.encodeURL("/test1") だとクッキー無効の場合APIリファレンス通りjsessionidが付与され、ません。 コンテキストパス有り無しで何故そうなるか気になって、Eclipseのjad(classを逆コンパイルしてソース参照できるplugin)で HttpServletResponse#encodeURL(String url) のソースを見てみたんですが、HttpServletResponseは周知の通りinterfaceで、 HttpServletResponse#encodeURL(String url)の実装はHttpServletResponseWrapper#encodeURL(String url)です。 そのコードは下記です。 public String encodeURL(String url) { return _getHttpServletResponse().encodeURL(url); } 見ての通りServletResponseWrapper#encodeURLをコールしています。 で、ServletResponseWrapper自体にはencodeURLメソッドは無いので、 結局その実装はというと、HttpServletResponseWrapper#encodeURL(String url)になるわけです。 以上のようにグルグル回って結局encodeURLメソッドの本当の意味での実装(jsessionidを付与している等)が見当たらないのですが、 皆さん何か分かりませんでしょうか? #手元にEclipseとservlet-api.jarがあれば見てもらうと分かりやすいと思います。 よろしくお願いします。
7年前に数週間 Tomcat かじったきりの男の独り言。つまり素人同然なのであしからず。 要するに HttpServletResponseWrapper のコンストラクタで与えられている HttpServletResponse が、いかなるクラスのインスタンスであるか、ってことでしょ。 サーバ側と接続してリモートデバッグできるんじゃないのかな。 それで適当にブレークして調べるとか。 もしくは HttpServletResponse を継承してるクラスを Eclipse にリストアップさせてあたりをつけられそうだな。 リモートデバッグできない、やり方分からない、 Tomcat インストール済みのレンタルサーバ使ってるだけとかで、 手元に環境もソースも再現できてない、という場合は、 わざと null など与えて例外起こさせて、スタックトレースから強引に知れないだろうか。 そもそも response.encodeURL("/test1") じゃなくて response.encodeURL("test1") じゃないのかな。 ぶつぶつ。
775 :
encodeURL :2010/11/07(日) 21:04:08
>>774 ご回答ありがとうございます。
なんとなく当たりが付きました。
どうもHttpServletResponse#encodeURL(String url)の実装は
HttpServletResponseWrapperを継承しているMobyletResponse#encodeURL(String url)
のようです。まぁここの処理が更に謎めいていましたが。
どうもコンテキストパス有り無しでjsessionidが付く付かないではなく、
ご指摘どおり、そもそも response.encodeURL("/test1") じゃなくて response.encodeURL("test1") じゃないとダメみたいですね。
ただ内部処理を見ても"/"が関係あるコードは見当たりません。
困ったもんです。
何か分かる人いらしたら引き続きレスお願いいたします。
引き続き独り言。
MobyletResponse#encodeURL は super.encodeURL してるじゃん。
>>774 でいってるように MobyletResponse のコンストラクタで与えられてる HttpServletResponse が焦点じゃないのかい。
例えば Tomcat のパッケージ内には org.apache.catalina.connector.Response がある。これはどうなってんのかな。
1167 String absolute = toAbsolute(url);
boolean leadingSlash = location.startsWith("/"); とかなんとかあるな。
何にせよ toAbsolute だから "/test1" だと "
http://サーバ名/test1 " とかになるんじゃないのかな。
1168 if (isEncodeable(absolute)) {
ここをたどると doIsEncodeable までいって
// Does this URL match down to (and including) the context path?
だの
// This URL belongs to our web application, so it is encodeable
なるコメントが出てきたけど、
ここでアプリケーション内かどうか (/webapp以下かとか) を判断してるんじゃないのかなぁ。
>>770 ,772
ありがとうございます。
Genericsを使うとしたらこんな感じになるんでしょうか?
Interface A<E> {
public abstract E get();
}
class B<E> impliments A<E> {
public E get() {
・・・
}
}
この設計がやりたかったことを設計するのに適しているか考えてみます。
>>777 BがAを実装していると決まってるなら、境界条件をもっと厳しくするだろ?
interface A<E extends A<E>> {
E get();
}
class B implements A<B> {
public B get() {
...
}
}
<? super T>じゃないか?
780 :
encodeURL :2010/11/08(月) 00:33:41
>>776 レスありがとうございます。
>MobyletResponse#encodeURL は super.encodeURL してるじゃん。
>
>>774 でいってるように MobyletResponse のコンストラクタで与えられてる HttpServletResponse が焦点じゃないのかい。
ここまで分かってるんですが、
>例えば Tomcat のパッケージ内には org.apache.catalina.connector.Response がある。これはどうなってんのかな。
ここに話が飛躍しているのがちょっと分からないです。
HttpServletResponseをF4で階層型を開いたりsuper.encodeURLをCtr+Tで実装を開いたりしていますが、org.apache.catalina.connector.Responseは一切見当たらないのですが。。。
どうやってorg.apache.catalina.connector.Responseこのクラスまで行きましたか?
変なのが居ついちゃったみたいだなw
帳票出力するときは、事前に方眼紙に書いてみて、 印刷項目と項目の間の空白の数とかを数えて、 プログラミングするんですか
>>782 いや、フィーリングです。環境依存+実装依存だし。
帳票を印刷のを勉強しているのですけど UTF8だと思った通りに漢字1文字がキャラクタ2文字で合うんですけど shiftJISだと、文字自体の大きさがおかしくて、どうしても 前後が、ずれるってことないですか? java内部は、どうもUTF8みたいなので、outだけshiftjisにしても、 ずれるような気がするんですけど。
>>780 要件:
HttpServletResponse をインタフェースにもつ何らかのクラスがある。
そのクラスの encodeURL メソッドがいかなる実装であるかを調べなければならない。
なお、それが MobyletResponse でないことは既に明らかになっている。
手順1.実行環境について整理する。
質問者が実行環境について徹頭徹尾何一つ書いていない。
しかし、MobyletResponse をググることで、それが mobylet なるものの一部であり、
mobylet のサイトでは Tomcat について言及されている。そこで Tomcat を仮定する。
手順2.実行環境において出現しうる、HttpServletResponse の実装クラスを列挙する。
ローカルに実行環境が再現されていれば Eclipse で列挙可能だが、現状そうではない。
仕方ないので Tomcat の javadoc を調べる。
"Response" を名称の一部に持つものを適当に検索したところ、
org.apache.catalina.connector.Response が見つかった。これだろうとあたりをつける。
手順3.そのクラスのソースを調べる。
同様にローカルに用意はないので、ネットで検索して発見。
実際に処理を追うと、"/" に関する処理が見つかる。
そもそも、URLつーもんの省略時の記法のことを考えれば、
原因は
>>774 の最後の行のとおりだと想像できるわけで、
案の定そのとおりのことが書かれているようだから、これだと決め付け、掘り下げずに納得して終了。
>>784 java での "印刷" といえば、例えば Printable とか Graphgics とかを使うんだけど。
印刷したい文字列としてはどうやろうと String を使うことになるので UTF 以外に無い。
その out っていったい何さ。
それ以前に文字幅とエンコード関係ないだろ
プリンター印刷です。 漢字や数字、それに+や-が混在する帳票を作成してみると UTF8だと正しく印刷されるけど、shifutjisだとうまく行かないんですよね。 例えば、|犬|と印刷するときに、|と犬の間隔が、UTF8とshiftjisは 微妙に違うみたいです。それか、shiftjisの場合は制御コードが 混じっているとかあるんですか。UTF8だと問題ないんですけどね。 だから、一般にプリンターへの印刷のときはUTF8でプログラミング されるのかなと思ったのです。
質問の内容はわかる。答え方も分かる。あるかないかを答えればいい。それだけだ。
だが彼がホントに知りたいのは、現実に起こってる現象の理由ではなかろうか。
「こうしたらこんなことがおきました!なぜでしょう!?」なぜそう聞かないのだろうか。
多分「ある」と決め付けてるからなんだろうな。
であれば、無慈悲に
>>787 のとおりの回答をするほかないのかもしれない。
だが俺は、彼の本当の要望、「なぜ起こっているか」に答えてやりたいのだ。
でなければ彼は、ともすれば永遠に、孤独の闇に葬られてしまうのだ。
たしかにその運命は、彼自身の立ち居振る舞いに端を発している。自業自得だ。
しかし現に、俺という存在にまだ光明は残されているのだ。
若きプログラマに救済を!
ああだがしかし、俺の「out って何さ」はまったく無視されてしまったのである。
残念。おやすみなさい。
List<Torihiki> torihiki; new ArrayList<Torihiki>(); ... new ArrayList<Torihiki>(); ... 一本のプログラムの中で、上記のように new ArrayList<Torihiki>();を行ってTorihikiオブジェクトの内容を 更新して、またnew ArrayList<Torihiki>();というように、 これらを多数繰り返したら、torihikiが同じアドレスを指し示して しまうようなことってありますか。
790の訂正 Torihiki torihiki; torijiki = new Torihiki ... torijiki = new Torihiki でした。
ある。
>>788 君の分析だと単純に shifutjis(原文ママ)をUTF8(原文ママ)に変換すれば「正しく」「問題なく」印刷されるんじゃないのかな?
Java無関係じゃんってのは言っちゃ駄目?
JVMの実装上はあるかもしれんがJavaにはアドレスなんて概念ねぇよ。
ないだろ
いやあるよ
メモリが有限である以上、ありうるんじゃないの?
(c でいえば malloc と free を繰り返しせば起こる)
ただし、いずれかの別の変数で参照してる限りは起こらないし、
起こったところでプログラムからは“アドレス”は見えない。
たまたま同じになっても、まったく困らないだろうね。
>>790 が何で知りたがったんだかさっぱり。
いやないな。あればjavaメモリ管理が成り立たない
Javaよりもっと低レベルな話してんだけど。
ヒープの掃除中に生存中のオブジェクトが占める場所が動く可能性があるのだが この場合は、「同じアドレス」とはどう解釈されるのだろうか
ソフトバンククリエイティブから出てる本って根本的にろくなのない気がする
804 :
encodeURL :2010/11/08(月) 19:40:37
>>785 度々レスありがとうございます。
>しかし、MobyletResponse をググることで、それが mobylet なるものの一部であり、
>mobylet のサイトでは Tomcat について言及されている。そこで Tomcat を仮定する。
そのサイトのURLを教えてもらっていいですか?
私のほうではそのようなサイトが見当たらないので。
#SeasarのMobyletのサイトのこれ
http://mobylet.seasar.org/ではないですよね ?
>>804 「初めての方へ」に Tomcat って書いてある。
806 :
encodeURL :2010/11/08(月) 19:55:12
>>805 なるほど。
調査中に仮定をもっと入れて調査することの大切さを知れました。
誠にありがとうございました。
807 :
デフォルトの名無しさん :2010/11/08(月) 19:56:41
最近Javaの学習を始めたのですが詰まってしまい自分の力で抜け出せそうにないので質問させてください。 やりたい事は画像認証(JCaptchaとか)なのですがGoogleAppEngine上で動作させたいのです。 GAEではjava.awtの画像系クラスがサポートされていなくどうしてよいかわからない状態です。 情報お持ちの方居りましたらお助けください。 JCaptchaじゃなきゃ駄目などとこだわりはないのです、画像認証できるなら何でもかまいません。
「私はこういう条件でこれをしようと思って こうしたのですがこうなってしまいました どうすればよいのでしょうか」 という形式でもう一度
このプログラムの解説お願いします public class R457 { public static void main(String[] args) { final double ERROR = 1e-10; final int NMAX = 100; for (double x0 : new double[]{10, -10}) System.out.println(find(x0, ERROR, NMAX)); } /** * x<sup>2</sup>-2x-3=0 の解をNewton-Raphson法で求める。 * @param x0 初期値 * @param err 許容誤差 * @param max 最大繰り返し回数 * @return 解の一つ */ public static double find(double x0, double err, int max) { for (int i = 0; i < max; i++) { double x = x0 - (x0 * x0 - 2 * x0 - 3) / (2 * x0 - 2); // x ← x - f(x) / f'(x) if (Math.abs(x - x0) <= err) return x; x0 = x; } throw new RuntimeException("解が求まらない"); } }
>>809 そのコメントの通りじゃないか
何がわからないんだ
mainメソッドは、x^2-2x-3=0 の解をNewton-Raphson法によって求めるメソッド "find" に関して、 初期値を 10 にした場合と -10 にした場合の両方で、どのように求まったかを表示する。 findメソッドは、指定された最大繰り返し回数(このプログラムでは100回)にいたるか、 または誤差が許容誤差(このプログラムでは1e-10、1/(10^10))にいたるまでNewton-Raphson法を繰り返す。 Newton-Raphson法についてはまったくよくわかりません。
813 :
807 :2010/11/08(月) 22:10:08
>>808 すいません、頭相当こんがらがっているみたいで
指定通りの形式で書き直します
GoogleAppEngineで動作させると言う条件で画像認証機能を実装したい。
ネットで調べコードを書いていると画像系クラスがサポートされていなく実装ができない。
GAEでも画像認証機能を使うにはどうすればよいか
ageた上に文章上手くかけなくてすいません
>>813 ちょっと調べてみたよ。
ImageIOらは禁止、com.google.appengine.api.images だけでなんとかせよということらしいね。
画像認証をやるには、ただ画像を表示するだけでなく、機械に読みにくくするのが必要ということでいいね。
ImagesServiceFactory クラスで回転・変倍をかけることができるようだ。
「うねり」は無理っぽいけどなんとかいけそう。
1.com.google.appengine.api.images のクラス群をつかって、
あらかじめ用意した画像を表示できるようになること。
2.ImagesServiceFactory を使って変倍・回転をかけられるようになること。
3.人間に読める範囲でランダムに変倍・回転をできるように調整すること。
4.文字列のランダム生成と、それにあわせた画像の配置をできるようになること。
(A-Z, 0-9のファイルを用意しておくなど)
5.セッション管理機構を介して、提供した画像に対するユーザの入力と、
手元にある文字列との一致をチェックできるようになること。
6.人間が「読みにくい」と判断した際に、画像を取り替えることができるようになること。
こんなもんなのかな。
6.は javascript も必要かな? オプション実装でどうぞ。
815 :
807 :2010/11/08(月) 23:22:20
>>814 com.google.appengine.api.imagesを使って簡易画像編集ソフト見たいなのは以前作った事がある。
画像回転とかも角度指定できるようなのでやってみたら90°単位でしか回転できない仕様でなかなか思ったようにいかない・・・
JCaptcha見たいのがGAEで使えると一番いいんだけどやっぱり無理なのですね。
とりあえずapi.imageで頑張って見るよ、ありがとうございます
オライリーのajaxとJAVAの本がアメリカのアマゾンであまり評判が良くないんだが、 持ってる奴感想頼む
Linuxのいろんなコマンドがやっているみたいにコンソール画面 で、現在行の前を書き換えるような操作ってJavaでもかけますか? topコマンドみたいなのを自作してみたいんだがコンソールを GUIスクリーンみたいに扱う方法がわからないのです。
やったことないけど、エスケープシーケンス使えばできるのかな?
もしくはJCursesみたいなcurses系ライブラリに乗っかるか
820 :
デフォルトの名無しさん :2010/11/09(火) 23:10:10
>>819 ありがとうございます。ただ早速入手してみましたが、libjcurses.dllなるDLLが同梱されていて
Linux上ではライブラリがロードできずにコケます。。
Windowsではなにやら動いてそうなのですが。。
JNI使っているとなると、Javaだけでは無理っぽいですね。
JCursesって環境にあわせてビルドするもんじゃないの。
>>818 エスケープではwin2k以降できない
Linuxって言ってんじゃん。文盲? それにエスケープなんて訳さない。莫迦?
おまえじゃ無理
発狂したゆとり(笑)
825 :
デフォルトの名無しさん :2010/11/10(水) 08:47:51
jdk-6u22をインストールしたら削除の途中で致命的なエラーが出て、 インストールも削除もできなくなりました。 どうすればいいでしょうか?教えてください。よろしくお願いします。
>>817 public static void main(String[] args) throws Throwable {
String txt = "なまむぎ\rなまごめ\rなまたまご\fおしまい";
for (int i=0; i<txt.length(); i++) {
if (txt.charAt(i) == '\f') {
System.out.write(0x1b);
System.out.print("[2J");
System.out.write(0x1b);
System.out.print("[0;0H");
} else {
System.out.print(txt.charAt(i));
}
System.out.flush();
Thread.sleep(500);
}
System.out.println();
}
http://hp.vector.co.jp/authors/VA016670/escape_code.html 環境によりけり? Linux だけなら大丈夫じゃないかな・・・しらんけど。
ちゃんとした作法は自分で調べてね
829 :
デフォルトの名無しさん :2010/11/10(水) 11:14:00
Linux上でJAVAで書いたプログラムをアプレットにするために コンパイルしてWindowsで作動しますか?
成果物に互換があるかって意味?あるよ。 Javaはバイドコードっていうランタイム上での実行可能コードだから。
だから何だよ。
アプレットにするってことはWeb公開するんだろうから フラッシュだのと同じでブラウザやプラグイン次第
833 :
デフォルトの名無しさん :2010/11/10(水) 11:42:18
WINのJAVAがこわれたのでLinuxで作ろうとしています。 互換性はあるのですね?
これじゃだめだw
あるよ。
836 :
デフォルトの名無しさん :2010/11/10(水) 12:48:30
javaのプログラミングで,ページ内のリンク数,被リンク数を取得する事は可能でしょうか?
837 :
デフォルトの名無しさん :2010/11/10(水) 12:56:45
ページって何?
答えないとうるさいし 可能と答えてもうるさいはず 何故なら彼は殆ど完成してるサンプルコードを所望なのだから 頼んだらコード書いてくれるスレがあったと思うよ
>WINのJAVAがlpわれた 直せよwww
>>1572 HTMLのリンクを追跡したいのなら、「java HTMLパーサー」で検索すれば
いくつかあるぞ。
・Jericho HTML Parser
100%Java言語で実装されたパーサーとしては頻繁にメンテされてる。
間違ってHTMLじゃない動画とかを読ませると最悪OutOfMemoryError
・MozillaParser
FirefoxのHTMLパーサーをJNI経由で呼び出す。文字コード自動認識とか得意。
Linuxで動くボットを作って日々運転してるが、時々JNIメソッドないでハングする
場合あり。それでも全自動で無限にリンクを追跡するようなケースでは安定性
最高だった。JNI使っていてWindowsではデバッグ程度しか走らせてないから
Windows上での信頼性は未知数。Linuxよりはユーザーも多いだろうし期待で
きるかも。
>>1577 補足自己レス。
たいていのHTMLパーサーは、HTMLタグの閉じ忘れがあるだけで
OutOfMemoaryErrorとかスレッドスタックがあふれてなんとかError
をスローする場合がある。売り物にするんならHTMLパーサーは
やめて正規表現でinputとかaとかscriptタグを捕まえるほうがマシ
かもしれない。
8進数かと思って確認したら微妙に違った
paintComponentメソッドは誰が呼んでるの?
847 :
デフォルトの名無しさん :2010/11/10(水) 21:47:31
>>846 ,
>>847 どうもです。SWINGを基本から勉強してみようと思います。
それから例外を発生させたら、AWTイベントキューのスレッドが
なんとかって出てきました。トラブルシュートのデクニックを
ありがとうございました。
自分で呼ぶこともある
javaでリダイレクト先のurlを取得したいのですが、どうすればよいですか?
HttpURLConnectionならgetURL()で良いんじゃね?
awt/swingではEventQueueがPropertyChangeEventを配信しているようですけど、ドキュメントにAWTEventについては書いてありますがPropertyChangeEventについては記述がありません。 PropertyChangeEventは誰が生成して誰が(どのスレッド)が配信しているんですか?
Javaでシステムフックはやっぱり無理?
うん
PropertyChangeのイベント機構では、普通はcompo.addPropertyChangeListener(lis)を使って登録して、登録したlisに通知(委譲)されますが、 この通知をcompo.processEvent(AWTEvent)のように発生したソース内部で処理したいと思います。 compo.processEvent(AWTEvent)なのでPropertyChangeEventはポストされず、 compo.processPropertyChangeEvent(PropertyChange)のようなものもないので、プロパティは各種AWTEventのようにcompo内部で処理することをライブラリはサポートしてないように見えます。 自分のプロパティ変更を(addPropertyChangeListenerで登録せずに)protected compo.processEventのような方法でそのcompo自身でprop変更通知を処理するにはどうするのでしょうか。
firePropertyChange をオーバーライドするというのはどうだろう
SwingUtilities.invokeLater() 使え
jpackageにアクセスできんのだがなんかあった?
firePropertyChangeで処理するのは確実ですがPropertyChangeEvent配信前に処理することになりますよね。仕様要求は満たしますが。 PropertyChangeEventは、通常では発生元compo自身には配信されないってことでしょうか。 実際はEDTの話なのでinvokeLaterは関係ありますがswingはあまり関係ありません。
はい どうしてもというならコンポーネント自身が PropertyChangeListener を実装して this.addPropertyChangeListener(this) すればいいです
>>861 それやるとinterfaceの仕様でpublic void properyChange methodが公開されてしまい改修できないバグになる。
その通りだが、どうしてもというならやむを得ないし、渡された引数を信用せず現在の正しい値を調べてから処理すれば、いちおうランダムに呼ばれても問題は防げる
>>857 のfirePropertyChangeですけど、EDT以外のスレッドからコールしてもいいってドキュメントのどこかに書いてありましたか?
場合によってはバグになりますよね。
そもそもコンポーネントのプロパティにEDT以外から触ること自体がご法度だから EDT以外からfirePropertyChangeが呼ばれたらその時点ですでに何かがおかしい
//配信してもらうんだったらこれでいい
class MyLabel extends JLabel {
public MyLabel() {
addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
//別スレッドにしたいなら invokeLater などなど
}
});
}
}
//PropertyChangeEvent配信前に処理することになりますよね
protected void firePropertyChange(String propertyName,
Object oldValue, Object newValue) {
super.firePropertyChange(...);
//ここで自己処理。配信後に処理することになる
//別スレッドにしたいなら invokeLater などなど
}
>>864 オーバーライドするだけなら呼び出し元スレッドは同じ
何に引っかかってるか見えないな・・・・
それと似たコードで実験しましたが、addPropertyChangeListener(PropertyChangeListener) なのでpropNameの問題とpropイベント配信が誰なのか不明なので無限ループになります。 ただ、それでも処理の効果をviewに反映させるためにEDTが必要になりますが、PropertyChangeEventはEDTでは扱ってないので結局beans property eventはawtでサポートされてないようです。
具体的にどういうプログラムを組んでるか分からないけど やれることをやってないように思う >無限ループ new PropertyChangeListener() { boolean processing; public void propertyChange(PropertyChangeEvent ev) { if (processing) return; //再入禁止処理 processing = true; 処理(); //この処理の結果また呼ばれても、本メソッドが原因でのループにはならない //さらに例外処理かませておけば true になりっぱなしにならない processing = false; } } >viewに反映させるため repaint とか revalidate とかやってもいかんの?
>>866 >//別スレッドにしたいなら invokeLater などなど
必ず別スレッドになるわけじゃないから確実に別スレッドにしたいなら自前の方がいい
あぁそうか 別スレッドになってる根拠何もないわ 指摘ありがとう
871 :
デフォルトの名無しさん :2010/11/12(金) 00:54:44
>>850 HttpURLConnection#setInstanceFollowRedirects(false);
でリダイレクトを自動追跡しなくなります。
この状態で接続し、
・getResponseCode()が300番台(300〜302)
・getHeaderField("Location")で何か文字がとれる
上記を満たす応答がとれてきたらリダイレクト。Locationヘッダの値がリダイレクト先
です。通常Locationヘッダは完全URLだったと思いますが、たまにURIを返すヤツも
いる模様。
URL getRedirectURL(URL target) throws Exception {
HttpURLConnection ucon = (HttpURLConnection)target.openConnection();
ucon.setInstanceFollowRedirects(false);
ucon.connect();
int status = ucon.getResponseCode();
if ( status == HttpURLConnection.HTTP_MOVED_PERM
|| status == HttpURLConnection.HTTP_MOVED_TEMP
|| status == HttpURLConnection.HTTP_MULT_CHOICE ) {
return new URL(target, ucon.getHeaderField("Location");
}
}
最後の return null; がねぇぞよ。
jdk-6-doc-ja.zipがsun.comから落とせねぇ。 さまよったあげく別サイトで見つけたけど… ふざけんなよ糞オラクルが…
Java だけ IBM が買えば良かったのにな。
アパッチなんかもういらんだろ。 もしアパッチライブラリとウェブサーバがなくなったとしても、インターネット的に実際はあまり影響ない。(1、2年は影響があるが) もしアパッチが解散になったとしても実際はBSDライセンスだからforkされて開発者側にも何ら影響がない。
876 :
デフォルトの名無しさん :2010/11/12(金) 07:09:43
Eclipse Galileoを使用しているのですが、 行選択してフォーマットを選ぶと、範囲指定した部分だけ整形してくれる機能ってデフォルトではできないんでしたっけ? 以前はできていた気がするのですが… もしプラグインなどが必要なら、どれを入れればよいのか教えていただけないでしょうか。
ibmに成ったら終わるだろうな。 ibmから仕様ライセンス買ってibm製のjavaハード買って保守契約結ばないと使わせないとかに鳴りそう。
878 :
チェック :2010/11/12(金) 15:22:02
879 :
チェック :2010/11/12(金) 15:25:18
BGM等を作曲してほしいという意味なら板違い そうではなくてすでに曲データがあるのならそれを寄こせ
「コンストラクタを呼び出す」ってどういう事ですか? いまいちイメージが湧きません><
「メソッドを呼び出す」 ならイメージわきますか?
そのイメージは湧きます。ただ、コンストラクタの必要性がわかりません>< コンストラクタは初期値だと習ったんですが、 int 〇〇〇 = △ ; とかの宣言じゃダメなんですか?(+_+)
なんかム板でOSGiの話題ってあんまり無いよね。
>>883 Hoge a = new Hoge(x);の動作は、イメージとしてはこんな感じです
Hoge _a = Hogeオブジェクトを未初期化の状態で確保;
_a.初期化(x);
Hoge a = _a;
>>883 42 とか 3.14 といった数値や "abc" といった文字列は、書けばそのまま int や double, String などの値になります
それ以外の List だとか Button だとか File だとかいったオブジェクトは、直接プログラム上に書き表せる値ではありませんので、
そういったオブジェクトが欲しいときは new を使って作成します
作ったオブジェクトは、その後いろんなメソッドを使って望み状態に変えていったりするわけですが、
その前にそもそも作ったばかりの最初の状態はどんななのかというのが必要なわけで、
そのオブジェクトの最初の状態を設定する(=初期化する)のがコンストラクタです
コンストラクタですね
888 :
チェック :2010/11/12(金) 17:14:22
>>880 曲データは持っていません。
デフォルトの名無しさんのセンスにまかせます。
>>883 「クラス」の必要性(プログラム設計の上での存在意義)は分かっていますか?
まずそれが分かっている必要があります。
あるね
892 :
デフォルトの名無しさん :2010/11/12(金) 22:26:20
エクリプスでヘルプ日本語どうやる?
どうやるんでしょうね
894 :
デフォルトの名無しさん :2010/11/12(金) 22:54:41
All in one Eclipseってヘルプ日本語化してたっけ? Eclipseのヘルプとか見たことないし覚えてないわ まぁ、All in one Eclipseで駄目なら諦めた方がいいよ
>>876 行選択して右クリックからformatしたら出来たと思う
テキストデータの中に、235,256という文字が入っていて、 235,256を数字の235256に変換するにはどうしたらいいでしょうか。 parseIntは例外になりました。Stringにしてカンマを除去するしか ないのでしょうか?
StringTokenizer使えばいいんじゃないの
>>896 NumberFormat#parse()を使う
int i = Integer.parseInt("235,256".replaceAll(",", ""));
900 :
デフォルトの名無しさん :2010/11/13(土) 00:20:53
int parseNumber(String strNumber) throws java.text.ParseException { java.text.DecimalFormat fmt = new DecimalFormat("#,###"); return fmt.parse("235,256").intValue(); }
他人が作ったライブラリにFooという型があります。 自作ライブラリにBarという型があります。 FooからBarへ型を変換したいです。 Bar#valueOf(Foo foo)というクラスメソッドをつくるのか、 FooUtil#fooToBar(Foo foo)というクラスメソッドをつくるのか、普通の人はどっちがいいでしょうか? 前者はすっきりとコードが書けるし、ライブラリの利用者にとっても解りやすいように思います。 後者はライブラリ間の依存関係がユーティリティクラスに集約されているので、保守性の点で優位だとおもいます。
FooUtil#fooToBar(Foo foo)を作り、 Bar#valueOf(Foo foo)の内部でFooUtil#fooToBar(Foo foo)を呼び出す。
>>901 依存関係の観点からは、集約されているから優位なのではなく
Barから切り離されているために、
後からあたらなクラスHogeが出てきてBarクラスへの変換が必要になっても
Barクラス及びそれに依存しているクラス・パッケージには影響がないことが優位
>>894 All in One Eclipseって「All-In-One Project」のやつか?
それなら、Pleiadesの方がいいと思う。
ツェラーの公式で曜日がずれるんだけどどうすればいいの?
公式のタイプミスでしたorz
Javaでオブジェクトをcloneするというときは、 ディープコピーのことでしょうか?シャロウコピーのことでしょうか?
Javaでのディープコピーは特殊な操作をしないとムリ
Object#clone() はシャローコピー ディープコピーなら一度シリアライズして復元すれば良いが、Serializable 付けておきながら 実際やると不具合出るようなクラス作る奴たまに居るんだよな。
>>910 オブジェクトの内部にあるオブジェクトもclone()してやると
深いコピーになる
>>913 つまりコピーコンストラクタじゃん。
もっとちんぽんかんにやりたいなら、シリアライズしてデシリアライズすればディープコピーになる。
>>910 一般的にはディープコピーのことだろうね。
なのでcloneメソッドを実装してやる必要がある。
cloneをディープコピーで実装したら簡単に無限再帰に陥りそうだ
まぁ clone 対象の内部実装まで意識して使う必要がある Java のちょっと泥臭い部分だわな。 配列かプリミティブに近いデータ型か、javadoc でキッチリ挙動が書いてあるものくらいでしか使ってないが。
.NETにもJavaを真似たICloneableインターフェイスがあるけど最近は非推奨になってるよ 仕様が曖昧すぎてインターフェイスとしては使い物にならないらしい
もうマイクロソフト様様だな
String s = "20101113 12345 9876543 cおはよう u150,000 az75000 "; sから正規表現で、"おはよう"、だけを抜き出すことはできますか?
920追記 String s = "20101113 12345 9876543 cおはよう u150,000 az75000 "; は、文字列は入れ替わることがあって、例えば、 String s = "20101113 12345 9876543 u150,000 cおはよう az75000 "; などもあります。"c"に続く文字列は何が来るかわかりません 接頭語は"c"と"u"と"az"しかありません。 例えば、"cおはよう"、や、"cお はよ う"、などもありえます
net.example.IHoge←インタフェース net.example.Hoge←実装クラス と net.example.Hoge←インタフェース net.example.HogeImpl←実装クラス と net.example.Hoge←インタフェース net.example.internal.HogeImpl←実装クラス ってどれがが良いの?
2つめで HogeImpl をパッケージプライベート。 実装のバリエーションが出るなら3つめ。
net.example.Hoge ←インタフェース net.example.DefaultHoge ←実装クラス
テックスコアとJavaへの道以外に良教材サイト教えてくれ
ひしだま's 技術メモページ
JavaからAntを呼び出してコンパイルするプログラムを作っているのですが、 その出力メッセージが、 buidLogger.setOutputPrintStream(new PrintStream(System.out)); というものによりコンソールに表示されるようになっています。 このコンソールに表示される文字列を、変数に格納して別の部分で使いたいと思っているのですが、どうすれば格納することが出来るのでしょうが?
System.out じゃない別の出力先 (自分で new した ByteArrayOutputStream とか FileOutputStream とか) を指定すればよろしいかと思います
>>930 レスありがとうございます。試しに、
ByteArrayOutputStream baos = new ByteArrayOutputStream();
buildLogger.setOutputPrintStream(new PrintStream(baos));
byte b[] = baos.toByteArray();
for(int i=0;i<b.length;i++){
System.out.println((char) b[i]);
}
このようなコードでやってみましたが、うまくログが表示されません。
何か根本的な勘違いをしているのでしょうか?
setしただけですべてのメッセージが出力されるのか? setしてからメッセージを出力し、それが終わってから表示しないと無意味じゃないのか?
>>932 レスありがとうございました!
なんとかできそうです。
クラスのオブジェクト化で Person a = new Person(); といった形で覚えますが、そのうち = の左右でクラスが異なる場合がありますが これはどういうことなんでしょう?
親子
あー継承がどうたらという奴ですね。有難うございます。
あの・・・・・・一つ聞いていいですか?
>>921 ,924
どうやって?
少しは自分で考えてみるべきだ Matcher m = Pattern.compile(" c([^ ]+)").matcher("20101113 12345 9876543 cお はよ う u150,000 az75000 "); m.find(); System.out.println(m.group(1));
ゆとりはソース付きで1から10まで答えを出してあげないと
常駐荒らしに化けるみたいだから
その執着心でAPIリファレンスでも読めばいいのに
>>602 >>608 >>636
そんなん昔からだっての おまえがゆとり
300以上前のレスまで掘り返してバカ回答者逆切れ
「逆」ではねーだろ
List<String> という型の意味は、 中にString型オブジェクトのみが入ってるList という認識で合ってますか? List<Class<? extends T> こんな表記も見かけるのですが、これはどういう意味なのでしょうか…?
>>943 合ってます
List<Class<? extends T>> は、 Class<? extends T> が入ってる List です
? extends T というのは、T 自身または T を extends/implements したクラスならなんでも ok という意味です
Class<? extends T> は、T 自身または T を extends/implements したクラスの Class オブジェクトです
946 :
943 :2010/11/16(火) 18:51:26
>>944 ありがとうございます!
とてもよく分かりました。
Classというクラスがあったのですね。。
947 :
デフォルトの名無しさん :2010/11/16(火) 21:35:25
>>943 でもさ、それってよくわかんないよね
俺もtemplateを勉強するまでイマイチわからなかった
AtomicBooleanの使い道を教えろてください
AtomicBooleanの使い道を教えてください
千葉ロッテ下さい
Strutsって便利ですか? 全部javaで書いた方がいい気がするんですが
Strutsも全部Javaで書かれてますよ
>>952 車輪の再発明するより、すでにあるもの使って楽をするのも時には、大事
まぁ、仕様を理解する時間がかかりそうなら、車輪の再開発も悪くないけどね
int yymmdd = Integer.parseInt(inTable[0]); int y = Integer.parseInt(inTable[0].substring(0, 4)); int m = Integer.parseInt(inTable[0].substring(4, 6)); int d = Integer.parseInt(inTable[0].substring(6, 8)); いま、こういうふうに書いているんですけど、 yymmddに代入したら、y,m,dに自動的に部分代入できるような 記述は出来ないんでしょうか?
できません yymmddが変わるたびに毎回実行してください
>>955 せいぜい、何らかのオブジェクトを用意してメソッドを介してのみ得られるようにする
public class YmdData {
private int yymmdd;
//private int y;
public void setSorce(String s) {
yymmdd = Integer.parseInt(s);
//y = Integer.parseInt(s.substring(0, 4));
}
public int getY() {
return yymmdd/10000; //もしくはこれをやめる代わりに、他の3箇所のコメントを生かす
//return y;
}
}
など。
インスタンス管理がわけわかめになるなら、観念して
>>955 のままでどうぞ
あっ Sorce!?
>>955 こんなのはどうですか?
public class YMD {
public final int fullYMD;
public final int year;
public final int month;
public final int day;
public YMD(String strYyyyMMdd) {
this.fullYMD = Integer.parseInt(strYyyyMMdd);
this.year = Integer.parseInt(strYyyyMMdd.substring(0, 4));
this.month = ・・・;
this.day = ・・・;
}
public int hashCode() { this.fullYMD; }
public boolean equals(Object obj) { return this.fullYMD == obj.hashCode(); }
/**現在日時のaddVal日先を示すYMDを返す。
* @param addVal 加算日数。負の数も可。
*/
public YMD dayPlus(int addVal) {
Calendar cal = Calendar.getInstance();
cal.reset();
cal.set(this.year, this.month - 1, this.day);
cal.add(Calendar.DAY_OF_MONTH, addVal);
return new YMD(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(DAY_OF_MONTH));
}
}
equalsとhashCodeを実装し、プロパティをコンストラクタ以外で変更不可
にしているので、Mapのキーとして使用しても安全でStringをキーにする場合とか
より高速に動くと思います。
さらに欲を出すとcomparableとかSerializableとかいろいろ乗せられます。
なんでもいいが equals が適当すぎるのが気になる null チェックと getClass() チェック入れようぜ
>>961 equalsにnull渡したら普通ぬるぽだろうから、それはいいんじゃね?
Mapのキーにすることにこだわらなければequalsの速度は
たいして重要じゃないから、その場合は型チェックもいいかもですね。
ただこれも問答無用キャストでおかしな型渡したら呼び出し元が悪い
っていう処理でいいような。。。Stringなどの組み込みクラスがやらない
処理はSUNやOracleが面倒を理由にハショったのではなくて、やるべ
きでないという判断があるからだと思うぞ。
>>962 Mapはキーにnullも使えるけど、そういうことをしないように気をつけるってことだな
型チェックは偶然他のクラスとハッシュ値がかぶったら困る・・・例えば ymd.equals("Hoge") が true になるかもしれん
Map<Object,Object> ならキーに YMD も String も Integer もごっちゃに放り込めるけど、そういうことをしないように気をつけるってことだな
それらの制約がすべてドキュメント化されていれば、まぁ別にそれでもいいかと思う
なんというか・・・笑えるw
>>963 好みの関係もあるのでしょうが、バグの可能性が高いコードに対して曲がりなりにも
よさげな応答を返す実装は個人的に嫌いなんですよ。
equalsは違う型同士の比較に使ってはいけないというのは一般的にそうだし、
nullとそうでない値はequalsを呼ばずとも同じでないことが明らか。
その場合にfalseを返して先に進ませたところで、どの道ちゃんと動かないケースが
あるでしょう。最初に異常が見つかった時点でエラーを丸めずわざとコケさせる方
が、追いかけるソースの量が少なく済む分だけ全うなな品質ができるまでの所要
工数は短くなると思っています。
それにMapのキーに入れた場合に内部で発生するequalsはhashCode()が同じ値
を返すもの同士の比較に対してだけ発生しますが、nullのハッシュコードは求めよ
うがないため、nullとnullではないオブジェクトの比較がMapによって引き起こされる
ことはないはずですよ。
SHA1やMD5などあるがJavaのハッシュ計算アルゴリズムは何使ってるの?
>>967 Object#hsahCode()の中身は特に決まったアルゴリズムがありません。
equalsをオーバーライドする各クラスの特性に応じて適切にオーバーライド
することが推奨されています。
ただし、絶対守るべきルールとして「a.equals(b)」がtrueを返す場合に
「a.hashCode() == b.hashCode()」がfalseになってはなりません。
また次の用件を可能な限り満たすように実装することが期待されます。
・a.equals(b)がfalseとなるようなオブジェクトでは、できるだけ
a.hashCode() == b.hashCode()もfalseとなるように実装する。
・可能な限り高速に計算できるようにする。またはhashCode()が
戻り値で返す値は、計算結果をprivateメンバなどにキャッシュし、
高速に動作するように工夫する。
ちなみにObject#hashCode()は確か固定値で1を返します。
String#hashCode()は文字コードの掛け算と足し算で計算した無意
味値を返しますが、文字列が長い場合は計算時のCPU負荷があ
がってしまう可能性があるため、hashCode()が最初に呼び出され
た時にハッシュを計算し、その値をprivateなメンバ変数にキャッシ
ュしています。
>>967 ちょーテキトー
IntegerのhashCodeなんてこれだけだぜ
public int hashCode() {
return value;
}
>>969 それって System.identityHashCode(null) すると 0 が帰るってだけでしょ。
>>972 単にHashMapがnullを0扱いするだけ
下記のようなデータを持つテキストファイルを読んで処理したいのですけど 20101201 235000 xxxxx.... 20101202 235000 xxxxx.... ... まずデータを読み込んで各種チェックなどをしてListに格納しました。 そうして、キーになる日付の重複がないかチェックするときに、 それだけのために、Setに移してデータ件数をListのものと比較するのは 大袈裟ですか?
いや別に。 重複削除のためにSetに詰め替えるのはまれによくある。
最初からSetに詰めれば手間が省ける すでにあったらaddがfalseを返してくれる
まれなのかよくあるのか はっきりしる
JAXB以外でマーシャル・アンマーシャル(シリアライズ・デシリアライズ)できるものってありますか?
>>974 重複の有無だけを調べたいんだったら、全部移さんでも、
contains を使う
Set に add する前とした後で件数変わってなかったら
という調べ方もあるよ
>>975 >>976 ありがとうございます。
974ですけど、Listにチェック済みのデータを格納して、それから、
色々処理したいのですが、そのときに、forでループさせて、先頭から、
終わりまで読めるのが条件なんですけど、今はArrayList<String[]>で
格納してるけど、最初からTreeSetにしてたほうがいいのでしょうか。
Set系はforでループできたでしょうか?
>>980 >Set系はforでループできたでしょうか?
おいwwww
小難しい概念はともかく、Set はインデックスがないだけの List でしかないぞ。
/ヽ /ヽ / ヽ / ヽ ______ / ヽ__/ ヽ | ____ / :::::::::::::::\ | | // \ :::::::::::::::| | | | ● ● ::::::::::::::| | | .| :::::::::::::| | | | (__人__丿 .....:::::::::::::::::::/ | |____ ヽ .....:::::::::::::::::::::::< └___/ ̄ ̄ :::::::::::::::::::::::::| |\ | :::::::::::::::::::::::| \ \ \___ ::::::::::::::::::::::::|
983 :
デフォルトの名無しさん :2010/11/17(水) 23:40:01
>>980 Setだけに挿入する処理だと、日付文字列がイコールならその他の全てのメンバー変数
(日付文字列の右にある詳細な値)が全く異なっている場合であっても、equals()がtrueを
返すように実装する必要があります。
可能であればMap<String, 読み出したデータ>みたいな感じで、キーが日付文字列、
valueがテキスト行の解析結果という構造が理想では?
そうなると、TreeMapとかLinkedHashMapを使って読み出したデータを並び順を
保持しつつ蓄積していくのが良いと思います。
※Map#put(key, value)メソッドは、同じkeyに対して既にデータが登録されていた
場合、古いvalueオブジェクトへの参照を戻り値で返します。
なので、(map.put(日付, 読んだデータ) != null)となる場合は同じキーに対して
すでに別のvalueが関連づけられていた=>同じ日付のレコードが2件以上存在
と評価できます。
ただしこの方式でやる場合はvalueにnullをputしてはいけません。
Integer#getInteger(String nm)っておかしくね? なんでIntegerクラスに環境変数に関するメソッドがあるんだよwwww
>>985 君は見てはいけないものを見てしまった・・・
TreeMapのComparatorみたいに、HashMapにもハッシュの計算方法を外部から差し込めるインタフェイスがあればいいのに
Ubuntu上のJavascript から lsコマンドを実行したいのですが、それは可能でしょうか。
>>988 JavaでJavascriptのインタプリタを書いてlsコマンドをAPIとして与えればよい
1を読むべき > JavaScript, Ajaxの質問は、ここでは受け付けていません。
class Ppppp{ public static void main(String[] args){ Person[] p = new Person[2]; p[0] = new Person("a", "a1"); p[1] = new Person("b", "a2"); for(int i = 0;i < p.length;i++){ printPerson(); //7行目???? } } static void printPerson(){ System.out.println() //11行目???? } } class Person{ private String name; private String bland; Person(String name, String bland){ this.name = name; this.bland = bland; } public String getName(){ return name; } public String getBland(){ return bland; } } a, a1 b, b1 と表示させたいのですが 7行目と11行目の()の中がどうしてもうまくいかなくて、どう直せばいいのでしょうか? 11行目で表示ロジックで、7行目でループを使ってprintPersonを呼び?たいです
printPerson( p[i] ); static void printPerson(Person p) { System.out.println(p.name + ", " + p.bland); }
993 :
992 :2010/11/18(木) 02:31:52
失敬。間違い。 System.out.println(p.getName() + ", " + p.getBland());
ねーおじさん達 javadocって開発でつけてる?規約作れ!って言われて作ってるんだけど そのコメント規約で、クラスとかメソッドにjavadocつけようかつけまいか悩んでるんだけど 大規模ならつけて、小規模ならつけなくて良いよね?
そんな適当な基準ねーよ 作れって言ってる奴と相談しろ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。