5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【初心者】Java質問・相談スレッド111【大歓迎】

1 :デフォルトの名無しさん:2008/01/13(日) 00:25:22
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド110【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1197710566/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。

次スレは>>980あたりで。

108 :デフォルトの名無しさん:2008/01/15(火) 12:56:55
エラーメッセージは?

109 :デフォルトの名無しさん:2008/01/15(火) 13:21:59
SE 6 で JavaScript 使えるようになったことだし、そろそろ PDA のフルブラウザ程度の
標準 GUI コンポーネント作れよというチラ裏。

110 :デフォルトの名無しさん:2008/01/15(火) 13:37:25
つJavaFX Mobile

111 :デフォルトの名無しさん:2008/01/15(火) 13:48:40
>>12
NodeListの動作はW3C DOMが決めているものだから、xml4j云々は関係な
いでしょ。W3C DOMの仕様だって、IEとMozillaのJavaScript DOMの挙動
を明確化するところから始まったものだし。



112 :デフォルトの名無しさん:2008/01/15(火) 15:17:41
java初めて1ヶ月の初心者です。
エクリプスで普通に実行できるプロジェクトが、DOSからjreで起動しようとするとシンボルが見つかりませんエラーを頻発するのは何が原因と考えられますか?
ちなみにjavacをやっても、同じ数だけ、クラスが見つからないよエラーが出ます。

113 :デフォルトの名無しさん:2008/01/15(火) 15:20:11
クラスパス関連

114 :デフォルトの名無しさん:2008/01/15(火) 16:05:05
ttp://www.uploda.net/cgi/uploader2/index.php?file_id=0000048495.txt
サンプルみながら弄くってるのですが

ボタン押したら終了するようなのって
このソースのどこら辺をどう変えたらいいですか

115 :デフォルトの名無しさん:2008/01/15(火) 16:10:00
>114
jframe.setDefaultCloseOperation(jframe.DO_NOTHING_ON_CLOSE);
JavaDoc、JFrameのsetDefaultCloseOperationの項目を嫁

116 :デフォルトの名無しさん:2008/01/15(火) 16:10:54
actionPerformed の中でイベント e.getSource() が終了ボタンかどうかを判定して
終了ボタンなら終了動作をすれ

117 :デフォルトの名無しさん:2008/01/15(火) 16:17:12
>>actionPerformed の中でイベント e.getSource() が終了ボタンかどうかを判定して
すんません、どうやって判定するんですか

118 :デフォルトの名無しさん:2008/01/15(火) 16:17:37
==

119 :デフォルトの名無しさん:2008/01/15(火) 16:49:14
ネットで既にあるアプリケーションのサンプル、ソースを見ると
Main.java A.java B.java のようにクラスごとにファイルを分割しているもの
見るのですが、どのように分割したファイルを関連付けすればいいのでしょうか

例えばMenuItem等の基本的機能を実装したMain.javaに、
JTreeを実装したA.java、TextAreaを実装したB.javaを追加するような形です

120 :デフォルトの名無しさん:2008/01/15(火) 16:52:03
同じパッケージ (同じディレクトリに保存してある) なら何もしなくても使えるだろ。

121 :デフォルトの名無しさん:2008/01/15(火) 16:57:19
すみません、表現がおかしかったですね
・MainでMainメソッド等を作った
・A,BでMainメソッド込みで必要な機能をそれぞれ作った
 ↑
 これをMainに関連付けるにはどうしたらいいのでしょうか

122 :デフォルトの名無しさん:2008/01/15(火) 17:00:46
↓エスパー求む

123 :デフォルトの名無しさん:2008/01/15(火) 17:01:32
すみませんが、質問です。
intの配列を、リストに変換するライブラリはないでしょうか?
commons にありそうな気がするのですが。

Arrays.asList() を使ったのですが、
intの配列だと、配列全体を一要素とするリストができてしまいます。
java.util.Arrays.asList(new int[]{1,2,3})
=> (java.util.Arrays$ArrayList<E>) [[I@18f6235]

Integerの配列なら、そのままリストに変換されるのですが。
java.util.Arrays.asList(new Integer[]{1,2,3})
=> (java.util.Arrays$ArrayList<E>) [1, 2, 3]


124 :デフォルトの名無しさん:2008/01/15(火) 17:04:21
なんか最近質問も回答もひどいな。

125 :デフォルトの名無しさん:2008/01/15(火) 17:11:56
>>123
一発変換じゃないけど、commons lang の
Integer[] org.apache.commons.lang.ArrayUtils#toObject(int[])
とかで、いったんInteger[]に変換してからArrays#asList()で変換するとか。

126 :デフォルトの名無しさん:2008/01/15(火) 17:14:33
>>121
「関連付ける」っていう表現がJava歴12年の私によくわからない。
何を心配しているのだ?


127 :デフォルトの名無しさん:2008/01/15(火) 17:15:42
List<Integer> list = new ArrayList<Integer>();
for(int i: array){
  list.add(i);
}

なぜこの程度のコードのために非標準ライブラリを使おうとするんだ?

128 :123:2008/01/15(火) 17:27:31
>>125
おお、これでOKです!ありがとうございます。
http://commons.apache.org/lang/api/org/apache/commons/lang/ArrayUtils.html#toObject(int[])

>>127
まあループをなるべく書かないのがポリシーなのだと思ってください。
LISPで再帰せずにmapを使うようなものです。
commons-langは、まずどんなプロジェクトでも使わないことはないし。

129 :123:2008/01/15(火) 17:39:13
趣味じゃなくて実用の話をすると、これは配列の中身をログに書き出すために、
リストに変換したかったのです。配列#.toString()と違い、List#toString()は
各要素を出力してくれますので。

ロギングのためにわざわざループを書いたり、その後使うあてのない諸々の変
数を宣言したりするのは煩雑ですが、これなら一行ですみます。

log.debug("x = " + Arrays.asList(ArrayUtils.toObject(xarray)));


130 :デフォルトの名無しさん:2008/01/15(火) 17:41:35
それは十分趣味だと思うが。

131 :デフォルトの名無しさん:2008/01/15(火) 17:51:26
>>129
そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは?
もっとも、1.5以上じゃないと使えないけど。

132 :デフォルトの名無しさん:2008/01/15(火) 18:05:40
final
static final
static

の使い分けがわかりません。

final float TEST = 1.0f;
static final float TEST = 1.0f;
static TEST = 1.0f;

どういう状況・どういう時に使い分けるのですか?

133 :デフォルトの名無しさん:2008/01/15(火) 18:13:45
>>132
メンバ変数の話だとすると、
final
変更できないメンバに付ける。コンストラクタで初期化することはで
きるので、あるインスタンス内でのみ有効な実行時定数として使う
static final
そのクラスの全インスタンスに共通の定数として使う
static
そのクラスの全インスタンスに共通の変数として使う



134 :デフォルトの名無しさん:2008/01/15(火) 18:17:52
>>133
ありがとうございます。
static final は Cでいうと #define みたいなものと捕らえて大丈夫ということでしょうか?


135 :デフォルトの名無しさん:2008/01/15(火) 18:23:12
>>134
そんな感じですね。

例を思いついたので書いてみる
class 人間 {
static final int 足の数 = 2; // 足の数は全人類共通
static int 人口;
final String 名前; // 名前は一度決めれば変わらない

人間(String n) {
名前 = n;
}
void 出生() {
人口++;
}
void 死去() {
人口--;
}
}


136 :デフォルトの名無しさん:2008/01/15(火) 18:24:23
定数の特徴がstaticでfinalなんだよ
って昔言われたな

137 :デフォルトの名無しさん:2008/01/15(火) 18:26:21
>>135
わかりやすい例で納得できました
ありがとうございます

138 :123:2008/01/15(火) 18:36:34
>>131
> そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは?
> もっとも、1.5以上じゃないと使えないけど。

おおお!全然知りませんでした!ありがとうございます。
早速これに乗り換えます。

139 :デフォルトの名無しさん:2008/01/15(火) 18:41:14
>>135
カタワは人間でないt(ry

140 :デフォルトの名無しさん:2008/01/15(火) 19:23:05
>>139
カタワは基本構造から差し引かれているわけだから2本って定義は間違ってないよ。


141 :デフォルトの名無しさん:2008/01/15(火) 19:48:07
java.nio.channelsのSelector#wakeupについて教えて下さい。

このメソッドはSelector#selectの待ち合わせを解除するものですが、
動かしてみたところ、
Selector#selectで待ち合わせていないときに(複数回)Selector#wakeup
を呼び出すと呼ばれた回数だけ次のSelector#selectで待ち合わせをしなくなるように見えますが
そういうものですかね?






142 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/01/15(火) 21:32:51
ひどいコードだな。

145 :デフォルトの名無しさん:2008/01/15(火) 22:30:40
>>141
http://java.sun.com/javase/ja/6/docs/ja/api/java/nio/channels/Selector.html#wakeup()
>ある選択操作から次の選択操作までの間にこのメソッドを 2 回以上呼び出しても、
>1 回だけ呼び出したときと同じ結果になります。

ってあるから、もしそうだとしたらバグかな?
どうでもいいとは思うが

146 :デフォルトの名無しさん:2008/01/15(火) 22:34:42
漠然とした質問で申し訳ありませんがお聞きします。
eclipseなどだと、ソーエディタの変数名にマウスカーソルを合わせたりすると「型名 変数名 -クラス.メソッド」
という感じで表示されますよね?
この文字列ってどうにかして取得できませんか?イメージとしては
元のJavaのソースコードを食わせて、すべての変数に対して「型名 変数名 -クラス.メソッド」
が取得できればいいです。
eclipseはJavaで書かれていると聞いたので、こういったことを処理するクラスがあるのでしょうか?

147 :デフォルトの名無しさん:2008/01/15(火) 22:39:24
>>146
リフレクションAPIを使うといいよ

148 :デフォルトの名無しさん:2008/01/15(火) 22:40:23
Eclipseはすべて自前でやっている
Eclipseのプラグインを作ってEclipse(というかJDT)の機能を使うって手もあるけど・・・

そのJavaのソースコードを普通にコンパイルして、実行時にリフレクションで取得する方が簡単と思う
たとえばAっていう名前のクラスなら A.class.getDeclaredMethods() とか

149 :デフォルトの名無しさん:2008/01/15(火) 22:41:14
>>146
できねーよ。自分でパーサー組んでコンテキスト分析すれ。

150 :デフォルトの名無しさん:2008/01/15(火) 22:42:28
>>147
早速のご回答ありがとうございます
大変恐縮なのですが、そのAPIはどのパッケージにあるか教えていただけますか?

151 :デフォルトの名無しさん:2008/01/15(火) 22:44:43
おまいら別クラスの任意の位置のローカル変数にどうやってリフレクション使わせる気だ。

152 :デフォルトの名無しさん:2008/01/15(火) 22:53:16
変数名が要るのか、失敬
それなら、classファイルのデバッグ情報を読む・・・ちょっと手間だな

153 :デフォルトの名無しさん:2008/01/15(火) 23:35:59
>>105
ダブルクリック。

154 :デフォルトの名無しさん:2008/01/16(水) 00:01:28
>>143
本の通りで、コンパイルエラーになるなら本が間違ってる。
もしくは、本の説明が足りない。もしくは、本にとってあなたは想定外の人物。

私の環境だと「え」以外はエラー。

155 :デフォルトの名無しさん:2008/01/16(水) 01:03:42
>>143 の疑問は解けないかもしれないが、今回探した中では一番読み応えのあった文章
Javaの理論と実践: Generics、了解!
(初級:ただし、JDK 5.0でのgenericの基本に慣れている必要がある)
ttp://www.ibm.com/developerworks/jp/java/library/j-jtp01255/

156 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/01/16(水) 15:15:37
loopの中をsynchronized(process)で、
addの中をsynchronized(hoge)で
くくる?
http://www.nextindex.net/java/thread/syncblock.html

159 :デフォルトの名無しさん:2008/01/16(水) 15:17:19
CopyOnWriteArrayListを使ってIterator#removeの代わりにList#removeにする・・・とか。

160 :デフォルトの名無しさん:2008/01/16(水) 16:34:58
JAVAを使う職業に転職したいのですがいい本はないでしょうか?
今は会社員ですが、辞める予定ですので、早く覚えたいのです。

161 :157: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/01/16(水) 20:20:23
<fmt:bundle> と <fmt:setBundle> って機能まとめて一つで良いよなぁという独り言。

165 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/01/17(木) 14:43:05
JDK6に含まれている JDBC 4.0 APIには、DataSet<T>やBaseQueryなどが
含まれていないようなのですが、これらは、他のライブラリに入っているのでしょうか?
 それとも、JDBC 4.0仕様から削除されたのでしょうか?

170 :デフォルトの名無しさん:2008/01/17(木) 15:27:49
リファレンス実装が十分固まらないうちにリリースに間に合わなくなって 1.6 から除外された。
その後は知らん。

171 :デフォルトの名無しさん:2008/01/17(木) 15:30:36
>>167
MySQL勧めとけ

http://internet.watch.impress.co.jp/cda/news/2008/01/17/18139.html

172 :デフォルトの名無しさん:2008/01/17(木) 15:37:09
Sun に買われた Cobalt がどうなったか知らんのか。

173 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/01/17(木) 16:48:59
創るJava って第2版がでるんだな。(2008/1/23)

175 :デフォルトの名無しさん: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:2008/01/17(木) 17:15:07
>>175
どうもありがとうございます。BufferedReader のソースを見たところ、
close() の内部で、BufferedReader のコンストラクタで受け取った Reader の close() を呼んでいました。

今後プログラムを書くときは、br.close(); だけを書くようにしよう。

>>176
すみません、聞く前に javadoc 読むようにします。
ちなみに PrintWriter#close() は、Javadoc では「関連づけられているすべてのリソースを開放する」とは
書かれていませんでしたが、ソースを見ると、やはりコンストラクタで受け取った Writer をclose() していました。

178 :デフォルトの名無しさん:2008/01/17(木) 17:41:49
>>177
1.6 のドキュメントだと、PrintWriter#close() には
「関連するすべてのシステムリソースを解放します」って書いてあるけど。

「ストリームを閉じます」だけで終わってるのは 1.4以前かな。

179 :173: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 :デフォルトの名無しさん:2008/01/17(木) 19:44:24
初心者です、何を始めたらいいですか?

182 :デフォルトの名無しさん:2008/01/17(木) 19:54:56
Javaでぐぐるとこから始めたらいいです

183 :デフォルトの名無しさん:2008/01/17(木) 20:08:06
最近自分で調べた方が早い事ばかり聞いてくるな。

184 :デフォルトの名無しさん:2008/01/17(木) 20:26:40
POIでVBAを含んだExcelを読み込み、保存するとVBAが消えてしまいます。
消えないようにする方法は無いでしょうか。
POIでVBAを書き込む方法ってありますか??


185 :デフォルトの名無しさん:2008/01/17(木) 20:36:22
Exception#printStackTraceで出力される例外情報を文字列化してログファイル
におちしたいんですが、良い方法ありますか?

186 :デフォルトの名無しさん:2008/01/17(木) 20:47:06
つ ロギング

187 :デフォルトの名無しさん:2008/01/17(木) 22:49:01
>>185
ちなみにNetBeansだとロギングAPIでコード補完されます。

188 :デフォルトの名無しさん:2008/01/17(木) 23:08:31
>>185
Throwableクラスに、文字列を取得するのにぴったりのメソッドがあるだろ?

189 :デフォルトの名無しさん:2008/01/17(木) 23:10:36
サーブレットとJSP簡単に言うと如何使い分けてるのが一般的?

190 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/01/17(木) 23:58:16
その実装クラスを作るときに ServletFilter インターフェイス使ってんじゃん。

194 :デフォルトの名無しさん:2008/01/18(金) 12:11:19
なぜ継承やオーバーライドをするのでしょう?
似通っているクラスであれ、継承せずに新しいクラスを作り、
新しいメソッドを作ればいいとか思っちゃうのですが。
効率性の問題ですか?

195 :デフォルトの名無しさん:2008/01/18(金) 12:17:43
>>194
君みたいな開発者のおかげで、僕の仕事があります。ありがとう。

196 :デフォルトの名無しさん:2008/01/18(金) 12:18:05
>>194
ヒント:ポリモーフィズム

197 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/01/18(金) 14:01:12
>>199
おい!

>>198
最初にinit()を実行するという決まりは、Servlet Specificationで規定されている。
だから、Servlet仕様にきちんと準拠して実装されたServletコンテナなら
Filterとして作成され、web.xmlにFilterとして登録されたクラスの
init()メソッドを呼び出すように実装されている。

201 :デフォルトの名無しさん:2008/01/18(金) 14:10:15
すみませんが、質問です。

Luceneというオープンソースの検索エンジンを使ってみたのですが、思ったよ
りパフォーマンスが出なかったので、プロファイラ hprof で分析してみました。

http://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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/01/18(金) 15:19:23
明快Javaってどうなの?

204 :デフォルトの名無しさん:2008/01/18(金) 16:08:31
自分で読んで決めろ。それか該当スレ
やさしいシリーズじゃなけりゃなんでもいい。

205 :デフォルトの名無しさん:2008/01/18(金) 16:10:38
創るJavaのほうがいいよ。

206 :デフォルトの名無しさん: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で行おうとしていることは可能なのか?
また、このような場合に行う良くある方法についてのアドバイスをお願いします。



260 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)