1 名前:デフォルトの名無しさん [2008/01/13(日) 00:25:22 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド110【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1197710566/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝のう存じます。 次スレは>>980 あたりで。
133 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:13:45 ] >>132 メンバ変数の話だとすると、 final 変更できないメンバに付ける。コンストラクタで初期化することはで きるので、あるインスタンス内でのみ有効な実行時定数として使う static final そのクラスの全インスタンスに共通の定数として使う static そのクラスの全インスタンスに共通の変数として使う
134 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:17:52 ] >>133 ありがとうございます。 static final は Cでいうと #define みたいなものと捕らえて大丈夫ということでしょうか?
135 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:23:12 ] >>134 そんな感じですね。 例を思いついたので書いてみる class 人間 { static final int 足の数 = 2; // 足の数は全人類共通 static int 人口; final String 名前; // 名前は一度決めれば変わらない 人間(String n) { 名前 = n; } void 出生() { 人口++; } void 死去() { 人口--; } }
136 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:24:23 ] 定数の特徴がstaticでfinalなんだよ って昔言われたな
137 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:26:21 ] >>135 わかりやすい例で納得できました ありがとうございます
138 名前:123 mailto:sage [2008/01/15(火) 18:36:34 ] >>131 > そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは? > もっとも、1.5以上じゃないと使えないけど。 おおお!全然知りませんでした!ありがとうございます。 早速これに乗り換えます。
139 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:41:14 ] >>135 カタワは人間でないt(ry
140 名前:デフォルトの名無しさん [2008/01/15(火) 19:23:05 ] >>139 カタワは基本構造から差し引かれているわけだから2本って定義は間違ってないよ。
141 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:48:07 ] java.nio.channelsのSelector#wakeupについて教えて下さい。 このメソッドはSelector#selectの待ち合わせを解除するものですが、 動かしてみたところ、 Selector#selectで待ち合わせていないときに(複数回)Selector#wakeup を呼び出すと呼ばれた回数だけ次のSelector#selectで待ち合わせをしなくなるように見えますが そういうものですかね?
142 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:05:46 ] >>129 >List#toString()は >各要素を出力してくれますので。 そうとは限らない。おまいは何か勘違いしている。 Listの実装に何を使うかによって違う。
143 名前:デフォルトの名無しさん [2008/01/15(火) 21:16:48 ] import java.util.*; class Super {} class Sub extends Super {} public class Main { static void test1() { List<? extends Super>s = new ArrayList<Sub>(); s.add(new Super()); //あ s.add(new Sub()); //い } static void test2() { List<? super Sub>s = new ArrayList<Super>(); s.add(new Super()); //う s.add(new Sub()); //え } public static void main(String args[]) { test1(); test2(); } } 上記コードの あ・い・う・え すべて「シンボルを見つけられません。」というエラーになるんですが 本には あ・い はエラー、う・え はOKって書いてあるんです。 これて、本が間違ってるんでしょうか?それとも何かコンパイラーの設定とかあるんでしょうか? 本はソフトバンククリエイティブの 「 Java2 Exam 310-055 」で、336ページです。 ここだけがどうしても理解できないので、スッキリしたいです。
144 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:32:51 ] ひどいコードだな。
145 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:30:40 ] >>141 java.sun.com/javase/ja/6/docs/ja/api/java/nio/channels/Selector.html#wakeup () >ある選択操作から次の選択操作までの間にこのメソッドを 2 回以上呼び出しても、 >1 回だけ呼び出したときと同じ結果になります。 ってあるから、もしそうだとしたらバグかな? どうでもいいとは思うが
146 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:34:42 ] 漠然とした質問で申し訳ありませんがお聞きします。 eclipseなどだと、ソーエディタの変数名にマウスカーソルを合わせたりすると「型名 変数名 -クラス.メソッド」 という感じで表示されますよね? この文字列ってどうにかして取得できませんか?イメージとしては 元のJavaのソースコードを食わせて、すべての変数に対して「型名 変数名 -クラス.メソッド」 が取得できればいいです。 eclipseはJavaで書かれていると聞いたので、こういったことを処理するクラスがあるのでしょうか?
147 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:39:24 ] >>146 リフレクションAPIを使うといいよ
148 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:40:23 ] Eclipseはすべて自前でやっている Eclipseのプラグインを作ってEclipse(というかJDT)の機能を使うって手もあるけど・・・ そのJavaのソースコードを普通にコンパイルして、実行時にリフレクションで取得する方が簡単と思う たとえばAっていう名前のクラスなら A.class.getDeclaredMethods() とか
149 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:41:14 ] >>146 できねーよ。自分でパーサー組んでコンテキスト分析すれ。
150 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:42:28 ] >>147 早速のご回答ありがとうございます 大変恐縮なのですが、そのAPIはどのパッケージにあるか教えていただけますか?
151 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:44:43 ] おまいら別クラスの任意の位置のローカル変数にどうやってリフレクション使わせる気だ。
152 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:53:16 ] 変数名が要るのか、失敬 それなら、classファイルのデバッグ情報を読む・・・ちょっと手間だな
153 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:35:59 ] >>105 ダブルクリック。
154 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:01:28 ] >>143 本の通りで、コンパイルエラーになるなら本が間違ってる。 もしくは、本の説明が足りない。もしくは、本にとってあなたは想定外の人物。 私の環境だと「え」以外はエラー。
155 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:03:42 ] >>143 の疑問は解けないかもしれないが、今回探した中では一番読み応えのあった文章 Javaの理論と実践: Generics、了解! (初級:ただし、JDK 5.0でのgenericの基本に慣れている必要がある) ttp://www.ibm.com/developerworks/jp/java/library/j-jtp01255/
156 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:20:37 ] >>121 Main.java …… static int hogehoge = 1; static A a = new A(); static B b = new B(); …… a.starting(); A.java class A { public void starting() { int i = Main.hogehoge; Main.b.ending(i); …… } } 試せ。適当に書いてみてエラーが出なければ多分正しい
157 名前:デフォルトの名無しさん [2008/01/16(水) 15:01:17 ] Iteratorを使ったループでの同期化について質問させてください。 動画の描画のような、毎秒数十回呼び出されるループ内で、ArrayListをIteratorで回してます。その一方で、別スレッドからこのArrayListに追加するためのメソッドがあります。 (例)-------------- ArrayList<Hoge>() hoge = new ArrayList<Hoge>(); loop(){ // 毎秒数十回呼び出すループ Iterator<Hoge> it = process.iterator(); while(it.hasNext()){ Hoge h = it.next(); if(!h.loop()){ // Hoge内のループがfalseを返したら削除 it.remove(); } } } public void addHoge(Hoge h){ hoge.add(h) } ------------------ こういう場合にIteratorループでConcurrentModificationExceptionが起こらないようにするには、どうすれば良いのでしょうか? synchronized修飾子で囲ってみたり、Collections.synchronizedList使ってみたりと色々試したのですが、どうしてもConcurrentModificationExceptionが起こってしまいます。 大人しくVector + Enumerationを使ったり、for(int i = 0; i < hoge.size(); i++) で回せば解決するのですが、Iteratorでの解決策が無いはずは無いと思うのです・・・。
158 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:15:37 ] loopの中をsynchronized(process)で、 addの中をsynchronized(hoge)で くくる? www.nextindex.net/java/thread/syncblock.html
159 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:17:19 ] CopyOnWriteArrayListを使ってIterator#removeの代わりにList#removeにする・・・とか。
160 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 16:34:58 ] JAVAを使う職業に転職したいのですがいい本はないでしょうか? 今は会社員ですが、辞める予定ですので、早く覚えたいのです。
161 名前:157 mailto:sage [2008/01/16(水) 16:47:54 ] さっそくのご回答有難うございます。 そしてすいません、4行目の Iterator<Hoge> it = process.iterator(); は、 ↓ Iterator<Hoge> it = hoge.iterator(); の間違いでした。 >> 158さん ありがとうございます。 どちらのメソッドもsynchronizedブロックで括るということですね。 むむむ、しかし試してみたところ、やはりadd後に即、loop内でConcurrentModificationExceptionが起こってしまいました。 ArrayListをiteratorで回してる最中は、追加・削除等の処理は一切行っちゃダメってことなんですかね。何か凄く不便に感じます。 多分、僕が無知なだけなんだろうとは思いますが・・・。 >>159 さん やや!並行処理用のコレクションがあったとは知りませんでした。 パフォーマンスも満足行くものみたいですね。 ありがとうございます、活用してみます。 やはり、並行処理するならば、ArrayListにこだわるのは良くないということなんでしょうかね。 MapにはConcurrentHashMapがあるようですね。以下のサイトを参考にしました。 ttp://www.itarchitect.jp/technology_and_programming/-/24161.html 返答ありがとうございます。
162 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 16:51:04 ] >>157 API を読みましょう。ってことなのでしょうか ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Collections.html
163 名前:デフォルトの名無しさん [2008/01/16(水) 16:57:34 ] >157 List list = new ArrayList() { @Override public Iterator iterator() { ArrayList list = new ArrayList(this); return list.iterator(); } }
164 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:20:23 ] <fmt:bundle> と <fmt:setBundle> って機能まとめて一つで良いよなぁという独り言。
165 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:17:07 ] >>163 it.remove();
166 名前:デフォルトの名無しさん [2008/01/17(木) 09:41:33 ] すいません、Javaを勉強しようと思っているのですが 色々種類がありすぎてどれから始めるのが良いのか分かりません。 おすすめとかありますか? ちなみに、僕のスペックです。 ・経験言語 Perl(4年)/PHP(3年) Ruby(半年)/C(半年) JavaScript(1年)
167 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:54:15 ] Java の色々種類って何だよ 開発環境なら Java SE 6.0 + Eclipse 3 使っとけ。 GUI なら Swing (Java SE 標準) 使っとけ。 Web 系なら Tomcat 使っとけ。 データベースなら PostgreSQL 使っとけ。 i-Appli, ゲームは知らん。
168 名前:デフォルトの名無しさん [2008/01/17(木) 10:40:08 ] >166 得意分野から入るってならばSeasar2あたりでJ2EEをやる Ruby(Rails)やったことあるならば大雑把には感覚つかめる筈 まったく知らない分野に手を伸ばしたいならばSocket通信とSwingあたりがいいかと思われ。 簡単なチャットプログラムあたりを作成するのがちょうどいい
169 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 14:43:05 ] JDK6に含まれている JDBC 4.0 APIには、DataSet<T>やBaseQueryなどが 含まれていないようなのですが、これらは、他のライブラリに入っているのでしょうか? それとも、JDBC 4.0仕様から削除されたのでしょうか?
170 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:27:49 ] リファレンス実装が十分固まらないうちにリリースに間に合わなくなって 1.6 から除外された。 その後は知らん。
171 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:30:36 ] >>167 MySQL勧めとけ internet.watch.impress.co.jp/cda/news/2008/01/17/18139.html
172 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:37:09 ] Sun に買われた Cobalt がどうなったか知らんのか。
173 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:45:23 ] Stream の close() の仕方について質問です。 以下のようなみたいなコードがあったとき、 FileInputStream fis = new FileInputStream("hoge.txt"); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); 今まで以下のように書いていました。 br.close(); isr.close(); fis.close(); ところでピアソンの「プログラミング言語Java 第4版」p.450(20.4 InputStreamReader と OutputStreamReader という節) をみると、以下の記述があります。 >どちらの場合も、変換ストリームをクローズすると、関連付けされているバイトストリームもクローズされます。 >標準ストリームを変換するような場合には、クローズされるのは常に好ましくはないかもしれません。 >したがって、変換ストリームをいつクローズするかは慎重に検討してください。 これをよむと、以下のように isr.close() するだけで fis も close() されるという理解でよいですか? br.close(); isr.close(); 以下のように br.close() だけだと、isr と fis は close() されないですよね。 br.close();
174 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:48:59 ] 創るJava って第2版がでるんだな。(2008/1/23)
175 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 17:00:26 ] >>173 br.close()だけでぜんぶクローズされるはず。 手元にソースがなくて確認はしてないけど、ストリームにかぶせるタイ プのストリームはぜんぶclose()で中のストリームのclose()を呼んでい たと思う。
176 名前:デフォルトの名無しさん [2008/01/17(木) 17:08:09 ] >173 その文章書く時間あるならば、先にJavaDoc嫁 void close() throws IOException このストリームを閉じ、関連付けられているすべてのシステムリソースを解放します。ストリームがすでに閉じている場合、このメソッドを呼び出しても何も行われません。
177 名前:173 mailto:sage [2008/01/17(木) 17:15:07 ] >>175 どうもありがとうございます。BufferedReader のソースを見たところ、 close() の内部で、BufferedReader のコンストラクタで受け取った Reader の close() を呼んでいました。 今後プログラムを書くときは、br.close(); だけを書くようにしよう。 >>176 すみません、聞く前に javadoc 読むようにします。 ちなみに PrintWriter#close() は、Javadoc では「関連づけられているすべてのリソースを開放する」とは 書かれていませんでしたが、ソースを見ると、やはりコンストラクタで受け取った Writer をclose() していました。
178 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 17:41:49 ] >>177 1.6 のドキュメントだと、PrintWriter#close() には 「関連するすべてのシステムリソースを解放します」って書いてあるけど。 「ストリームを閉じます」だけで終わってるのは 1.4以前かな。
179 名前:173 mailto:sage [2008/01/17(木) 17:47:19 ] >>178 手元にある DL 済みの javadoc は 1.5 です。(はじめのカキコ時に java のバージョンを書いておくべきでした) 「ストリームを閉じます」だけで終わっています。 やはり DL ずみの1.6 では、>>178 さんのようになっていますね。
180 名前:デフォルトの名無しさん [2008/01/17(木) 19:31:49 ] JavaServletについてわからない事があるので教えていただけますか。 /*環境*/ OS:Windows xp Professional SP2 開発アプリケーション:Eclipse Version 3.3(Tomcatの起動はxampp内のTomcatを利用) サーブレットコンテナ:Apache Tomcat 6.0(XAMPPのTomcatプラグインより利用) Eclipseから出たメッセージ 「インポートされた javax.servlet は見つかりません。」 //Servlet.java import java.io.*; import javax.servlet.*; //”javax.servlet”の所で赤の波線が出る import javax.servlet.http.*; //”javax.servlet”の所で赤の波線が出る public class Servlet extends HttpServlet { public void doGet (HttpServletRepuest req,HttpServletPesponse res)throws ServletException, IOException { } } 多分、servlet.jarか、servlet-api.jarが必要になるのだと思いますが。 これを、どのようにすれば、正常に動作させる事が出来るのか解らないです。 どうぞよろしくお願いします。
181 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:44:24 ] 初心者です、何を始めたらいいですか?
182 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:54:56 ] Javaでぐぐるとこから始めたらいいです
183 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:08:06 ] 最近自分で調べた方が早い事ばかり聞いてくるな。
184 名前:デフォルトの名無しさん [2008/01/17(木) 20:26:40 ] POIでVBAを含んだExcelを読み込み、保存するとVBAが消えてしまいます。 消えないようにする方法は無いでしょうか。 POIでVBAを書き込む方法ってありますか??
185 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:36:22 ] Exception#printStackTraceで出力される例外情報を文字列化してログファイル におちしたいんですが、良い方法ありますか?
186 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:47:06 ] つ ロギング
187 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:49:01 ] >>185 ちなみにNetBeansだとロギングAPIでコード補完されます。
188 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:08:31 ] >>185 Throwableクラスに、文字列を取得するのにぴったりのメソッドがあるだろ?
189 名前:デフォルトの名無しさん [2008/01/17(木) 23:10:36 ] サーブレットとJSP簡単に言うと如何使い分けてるのが一般的?
190 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:26:54 ] MVCのCとVで分ける
191 名前:デフォルトの名無しさん [2008/01/17(木) 23:55:22 ] servletでフィルターをかける場合にfilterインターフェイス使うみたいだけど、 インターフェイスって、implementしたクラスで実装するんじゃないのですか?
192 名前:デフォルトの名無しさん [2008/01/17(木) 23:58:04 ] 途中で書き込んでしまった。 色々な本なんかを見てると実装している部分が見当たらないんです。 俺の認識が間違ってるだけですか?
193 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:58:16 ] その実装クラスを作るときに ServletFilter インターフェイス使ってんじゃん。
194 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:11:19 ] なぜ継承やオーバーライドをするのでしょう? 似通っているクラスであれ、継承せずに新しいクラスを作り、 新しいメソッドを作ればいいとか思っちゃうのですが。 効率性の問題ですか?
195 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:17:43 ] >>194 君みたいな開発者のおかげで、僕の仕事があります。ありがとう。
196 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:18:05 ] >>194 ヒント:ポリモーフィズム
197 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:19:55 ] >>194 新しいクラスも既存のクラスも同じインタフェイスで扱いたいから
198 名前:191 [2008/01/18(金) 12:32:05 ] >>193 例えばinit()なんですけど、 実行される内容は自分で書きますが、 「最初に実行される」という決まりはどこに定義されていて、 自分の作ったクラスにどのように継承?されているのでしょうか?
199 名前:デフォルトの名無しさん [2008/01/18(金) 13:35:03 ] そんな決まりはない ただの慣習 されども慣習を守らないとみんなが迷惑する
200 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 14:01:12 ] >>199 おい! >>198 最初にinit()を実行するという決まりは、Servlet Specificationで規定されている。 だから、Servlet仕様にきちんと準拠して実装されたServletコンテナなら Filterとして作成され、web.xmlにFilterとして登録されたクラスの init()メソッドを呼び出すように実装されている。
201 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 14:10:15 ] すみませんが、質問です。 Luceneというオープンソースの検索エンジンを使ってみたのですが、思ったよ りパフォーマンスが出なかったので、プロファイラ hprof で分析してみました。 itpro.nikkeibp.co.jp/article/COLUMN/20061102/252525/ 結果 CPU SAMPLES BEGIN (total = 50358) Thu Jan 17 17:43:10 2008 rank self accum count trace method 1 33.34% 33.34% 16787 300001 java.lang.Thread.run 2 33.33% 66.67% 16786 300005 java.lang.ref.Reference.getPending 3 17.58% 84.25% 8853 300364 java.io.RandomAccessFile.readBytes 4 11.94% 96.19% 6013 300777 java.io.RandomAccessFile.readBytes 5 0.33% 96.52% 167 300473 jrockit.net.SocketNativeIO.readBytesPinned 6 0.29% 96.81% 146 300537 java.lang.String.<init> 7 0.19% 97.00% 96 300536 org.apache.lucene.store.BufferedIndexInput.readByte 8 0.15% 97.15% 77 300587 org.apache.lucene.store.IndexInput.readString 9 0.14% 97.29% 69 300561 org.apache.lucene.store.IndexInput.readString 10 0.12% 97.41% 58 300578 org.apache.lucene.store.IndexInput.readString ...(略)... てっきり java.io.RandomAccessFile.readBytes がCUP時間のほとんどを占める かと思ったら、それは30%に満たず、java.lang.Thread.run と java.lang.ref.Reference.getPending が全体の2/3を占めていました。 これは一体、何を意味するのでしょう?パフォーマンス改善には何をしたらい いと思われますか?
202 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 14:11:14 ] >>198 サーブレットコンテナを作る側と、サーブレットを作る側で 「お互いこういう決まりで作りましょうね」という規格(Servlet API) の上で決まっているだけで、 唯一固有の実装により定義されるわけではない。 例えばTomcatなら、そのコードの中で、 Filterクラスをインスタンス化して、最初にinit()を実行し、 該当リクエストがある度にdoFilter()を実行する、 というように実装されている。 Tomcatのソース読めば見つかるはず。 これはあくまでTomcatの実装であって、 他のサーブレットコンテナ(ResinやJetty、商用ならWebSphereやWebLogicなど)なら また別の書き方で、フィルタの扱い方が実装されているけど、 やはりServlet APIの規則に従って実装されている。 それをはずすとServlet API準拠って名乗れないからね。 繰り返すけど、この辺は、APIの仕様に定義されている。 これは文書読まないとわからない。 どのAPI使うにしろ、そういった約束事の塊に出くわすので、 慣れろと言うしかない。
203 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:19:23 ] 明快Javaってどうなの?
204 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:08:31 ] 自分で読んで決めろ。それか該当スレ やさしいシリーズじゃなけりゃなんでもいい。
205 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:10:38 ] 創るJavaのほうがいいよ。
206 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:13:14 ] >>205 もうすぐ新版もでるしね はじめて工作員活動しちゃった
207 名前:デフォルトの名無しさん [2008/01/18(金) 17:13:59 ] パネルの背景を画像にして、その上に各コンポーネントを貼り付けていこうと 考えているのですが、うまく表示されません。 1.最初は画像を背景にしたJLabelをJPanelに貼り付けて、 さらにその上に貼り付けていこうと考えていたのですが、 うまく作成することができませんでした。 (上に貼り付けたコンポーネントが正しく表示されない) 2.そこで、JPanelのpaintComponet部分でdrawImage してみましたが、画像は描写されませんでした。 1の場合LayoutはSpringLayoutやNullで行へば回避できるのか? そもそも2で行おうとしていることは可能なのか? また、このような場合に行う良くある方法についてのアドバイスをお願いします。
208 名前:デフォルトの名無しさん [2008/01/18(金) 17:43:12 ] javaの勉強中なんですが、 VectorやHashtebleなどでコンパイルすると、 注:Hashtable_sample.java の操作は、未チェックまたは安全ではありません。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。 とでるんですが、どうすれば解決できますか?
209 名前:デフォルトの名無しさん [2008/01/18(金) 17:48:45 ] DOS窓って一体何のことですか?
210 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:49:30 ] >-Xlint:unchecked オプションを指定して再コンパイルしてください。
211 名前:デフォルトの名無しさん [2008/01/18(金) 17:49:56 ] >>207 自己レス 2のほうでImageIcon経由Imageを作成したらうまく動きました。 もしかしたら、ロードが終わってない状態で 画像を表示しようとしていたのかもしれません。
212 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:55:01 ] >>207 1の方法でもちゃんと動いたぞ import略 public class Test {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() { JLabel label = new JLabel(new ImageIcon(getClass().getResource("image.png"))); label.setLayout(new FlowLayout()); label.add(new JButton("button")); JPanel panel = new JPanel(new BorderLayout()); panel.add(label); JFrame frame = new JFrame(); frame.add(panel); frame.pack(); frame.setVisible(true); }});}}
213 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:55:36 ] >>209 コマンドプロンプトのことです
214 名前:デフォルトの名無しさん [2008/01/18(金) 18:01:38 ] >>213 もしかしてWindowsのことですか!
215 名前:デフォルトの名無しさん [2008/01/18(金) 18:03:22 ] -Xlint:unchecked オプションを指定ってどうすればいいんですか??
216 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:10:07 ] >>208 Generics でぐぐるといいかもしんない
217 名前:デフォルトの名無しさん [2008/01/18(金) 18:16:53 ] >>212 ありがとうございます。 さっそくJwindowに変えてやっていみたのですが、動きますね。 ラベルでなくパネルのほうにコンポーネントを貼り付けようとしたせいで 背景の画像が表示されなくなっていたのかもしれません。
218 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:17:23 ] >>215 javadocの開発ツールjavacの部分嫁
219 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:55:48 ] >>208 javac -Xlint:unchecked Hashtable_sample.java
220 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:52:24 ] ジェネリックメソッドで <T> T getT(){ return //T型のオブジェクト生成 } ってやりたいんだけど、どうすんの?つうかコンストラクタは引数無しじゃなきゃダメ?
221 名前:デフォルトの名無しさん [2008/01/18(金) 20:27:09 ] Tに引数なしのコンストラクタがある保証ないじゃん
222 名前:デフォルトの名無しさん [2008/01/18(金) 20:30:37 ] <T> T getT(Class<T> clazz){ return clazz.newInstance(); } とやるしかない もしくはクラス名を渡すなど。
223 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:38:03 ] >>222 即レスあざす。・・・マジすか まぁ、妥協できないとこじゃないんで別の実装考えますね。
224 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:53:21 ] 設計の問題でどうにかなる
225 名前:デフォルトの名無しさん [2008/01/18(金) 21:02:46 ] >223 自分も同じようなこと考えたんだけど、コンパイルされた後には型情報ってなくなるんだよね。 あくまでコンパイル時にキャストがうまくいくってだけで、そこまで。 ただ、使い方を制限するなど、使い道は多いぜ。 <T extends HogeHoge> T getT(Class<T> clazz){ return clazz.newInstance(); }
226 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 21:03:11 ] ファイルから数値を読み込んでそれの合計とか平均とかだしたいんですけど どうすればいいですか
227 名前:デフォルトの名無しさん [2008/01/18(金) 21:23:15 ] 勉強するといいよ
228 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 21:39:00 ] javadoc読めば良いと思うよ
229 名前:デフォルトの名無しさん [2008/01/18(金) 21:51:14 ] あんまりWebアプリ作る技術者系の人はここにはいないのかな
230 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:14:29 ] >>220 つ >>155 おすすめ
231 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:20:57 ] >>225 ,230 確かにTが実行時にコンスタントプール内のクラスを指し示してる保証もできないですしね。 バイトコード弄くりじゃ結局ジェネリックス使わないし・・・結局 <T> T createT(T t){ //tが不正でないか調べる return t;//正しいtを返す } って感じにしました。まぁ、超個人的なことなんで何したいのか分からないと思いますが・・・ ありがとうございました。
232 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 13:15:50 ] antのbuild.xmlってなんであんなフリーダムになっちゃったの?
233 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:14:35 ] swingのJLayeredPanelに ImageIcon icon = new ImageIcon(img); jlabel.setIcon(icon); jPanel.add(jlabel); jlayeredPane.add(jPanel, 2); おおざっぱですがというような方法で層状にして画像を表示しているのですが、上の6ピクセル行くらいが空白になってしまい表示できません。これを解決する方法ってありますか? iconを使うと無理?