【初心者】Java質問・相談スレッド130【歓迎】
それならIDEスレ誘導のアドレスも張っとけ
土方お断りとも書いてよ
童貞もお断りで。
>>前スレ982 4行目を int[] d = new int[]{5,2,3,9}; と書いたのと同じ。 たったこれだけのためにいくつレス使ってんだ。
童貞は許していただけませんか・・・
素人童貞は、OK?
JAVAでGUIのツールって簡単に作れるかいマスター
>>7 ご回答ありがとうございます。
つまり、配列をnewした時に、配列内の要素に割り当てた値は
その要素の初期値であるという理解でいいですかね
変数a,b,cが動いていても配列内のd[2]に格納されるのは
dがnewされる直前の状態のa+b-2つまり3であって
その後a,b,cが変動しても、再びdをnewするかd[2]に値を代入しない限りは、d[2]には影響しない
ということですね
>>11 そのとおり。配列かどうかは関係なくて、ふつうのint変数でも同じでしょ。
int a = 2
int b = 3
int c = a + b;
の後に a = 3; としても c の値に影響はない。cに入っているのは値であって式ではない。
前スレ
>>967 お返事感謝します
わかりました。ありがとうございます
>>11 逆に遅延評価の直接的な表現方法はないので
もし式に含まれる変数に連動して式の値を変えたいのなら
式をどう評価するかのメソッドを持ったクラスを作成して
式の値が必要な場所では式を直接記述せず評価メソッドを呼ぶようにする
複雑過ぎてすぐにエンバグしそう。
eclipseでアクションフォームBeansのコンパイルが通りません。 package struts01; import org.apache.struts.action.*; public final class BeginForm extends ActionForm { と書くと、org.apache.struts.action.*;が無いと言われます。 解決方法を教えて下さい。
17 :
デフォルトの名無しさん :2009/08/03(月) 12:11:15
>>16 WEB-INF/lib
の下に必要なjarがないのでは?
>>17 WEB-INF/libの下にjarを入れているけど効いてないみたいですね。
以前作った動的webプロジェクトはビルド構成を見るとWEBAPPライブラリに
servlet関連のjarなどが登録されているけど、今回作ったStruts1用の
プロジェクトではWEB-INF/libの下にjarを入れても自動的に
WEBAPPライブラリに登録されていないみたいです。
StrutsもServletもともにコンパイルが出来なくなっています。
原因と対策を教えて下さい。
19 :
デフォルトの名無しさん :2009/08/03(月) 12:49:07
>>18 原因は知らん。
対策は
プロジェクトを右クリックしてプロパティを選択。
「Javaのビルドパス「→「ライブラリー」タブにて「JARの追加」
でWEB-INF/libの下のjarを全部追加。
>>19 うまくいきました。ありがとうございました。
>>15 固定式なら関数オブジェクトってだけだろ
public class Sample {
public static void main(String[] args) {
Var a = new Var(2);
Var b = new Var(3);
Expr[] d = new Expr[]{a,b,new ExprApBm2(a,b)};
Expr e = d[2];
System.out.println("e="+e);
a.set(4);
System.out.println("e="+e); }
static abstract class Expr {
abstract int get();
public String toString() { return ""+get(); }}
static class Var extends Expr {
private int v;
Var(int v) { this.v=v; }
public void set(int v) { this.v=v; }
public int get() { return v; }}
static class ExprApBm2 extends Expr {
private Expr a, b;
ExprApBm2(Expr a, Expr b) { this.a=a; this.b=b; }
public int get() { return a.get()+b.get()-2; }
}}
eclipseからservletを作成するときは新規でサーブレットを、 JSPを作成するときはJSPを選択するけど アクションフォームBeansやアクションクラスを作成するときには、 それらしい選択肢が無いのですけど、普通にサーブレットととして 新規作成して良いものなのでしょうか。
Struts1.3 API日本語が、無いみたいなんですけど ないんですか?
24 :
デフォルトの名無しさん :2009/08/03(月) 17:58:03
Javaでは、変数や配列もオブジェクトなんですか?
配列はオブジェクトです
プログラミング環境に関しては ここで質問していいんでしょうか?
javaの色々な設定とかするのにXMLがよく使われているけれど XMLのコンパイラーといいますか、解釈するエンジンは何が担当しているんでしょうか。
JavaSuperXML
xmlパーサ
>>30 >>31 Microsoft XML Parser というのがヒットしました。
OSで管理してるんですね。ありがとうございました。
ワロタw ワロタww
ギャグだろ。
もうダメだろこのスレ
むしろ始まった。
>>29 javax.xmlというパッケージがあってね…
そういう風にも使える。 実装の隠蔽は結合度を弱めてくれる良い方法なんで、普通に行うテクニック。 気の利いた奴なら実装やらをコピペして使うんだが、逆にデバッグしてメールされた日には、キーッ!
∧_∧ クワッ! ∩`iWi´∩ ヽ |m| .ノ |. ̄| U⌒U
Pattern p = Pattern.compile(regexp, Pattern.MULTILINE); Pattern.MULTILINEというのは ABCZXY DEFZXY という2行になっている文字列を1行として扱う。 そして、regexpが.*ZXY$だったら何度もZXYにマッチするということなのですか?
複数行モードでない場合: $ は文字列全体の終端にだけマッチ 複数行モードの場合: $ は各行の終端にマッチ だけの違いのはず
>>42 そんなこと考えるよりJAVADOCの読み込み練習しといたほうがいいんじゃね?w
DOMでXMLファイルを読み込み終った場合、その後は完全にファイルにアクセスしなくなるわけ?
Struts1のblankのSRCの中のbuild.xmlは、Antを使えるようにしたとき だけに有効になるものですか?
このスレも夏だな〜 あぼーんの嵐だ
サンプルプログラム組んで実行すれば分かるような事を なぜわざわざ質問しようとするのか? 以後そういう質問は禁止にします
面倒くさいからに決まってるじゃんそんなの そんなことこそ聞かなくても分かるじゃん
数分程度の面倒を惜しんで何時間も回答を待つってのはあまり賢い選択とは思えないが
その間は別のことをしているので問題ないです
夏休みの宿題は自分でやらないのね〜 いつになっても身につかないお
別に身に付かなくていいのですわ
見当外れのことを自信たっぷりに書けば全力で訂正してもらえるよ。 ボランティアで。
便利だよな・・・
でもここの奴らってあまり性能良くないんだよね〜 使えねーって言うかw
使えないものを無理して使おうとする試みは大抵無駄に終わるから最初からやめておくべき
かなり程度は低いよなこのスレ
初心者が集まるからな
61 :
デフォルトの名無しさん :2009/08/04(火) 19:49:10
初心者本ぐらいはわかるようになったけど、次のすてっぷにいけ無いぽ。 どうすればよかんべ?
とりあえず結城本でも読んでみたら?
目的無くプログラミングしてたって進むはずない
javaの勉強のために、2ちゃんねるのdatを専ブラのようにまとめ表示するプログラムを作りたいと考えています。 >デフォルトの名無しさん<>sage<>2009/08/02(日) 23:47:15 <> プログラミング言語Javaに関する質問スレです。 public class Res { String from; String mail; String date; String message・・・} public class CreateResList { public List<Res> getResList() {} } みたいな感じでレスをまとめます。また、レスを表示するクラスpublic CreateThreadView{}みたいなクラスを作って CreateResList#getResList()の戻り値を利用したい考えています。 しかし、ResクラスはC言語で言う構造体のような使い方をしているので、コンストラクタ以外の操作(メソッド)が思いつきません javaなのにクラスを構造体のように使っているので、Resクラスに違和感があってたまりません。 Resクラスの代わりにenumを使おうかと考えましたが、 今まで使った事がないのでenumについてはほとんど知らないので止めることにしました ツッコミどころ満載ですいませんが、何方様かアドバイスお願いします
>ResクラスはC言語で言う構造体のような使い方をしている いいじゃん別に
そのレスを表示用にフォーマットするメソッドとか a<>b<>c<>d 形式の文字列を分解して各フィールドに格納するメソッドとか
67 :
64 :2009/08/04(火) 21:14:25
>>66 それは、考えていませんでしたorz
public class CreateResList {
List<String>line;
public CreateResList(InputStream in) {
line = 1行ずつ読み込んで、lineに格納する処理
}
public List<Res> getResList() {
List<Res> resList() = new ArrayList<Res>();
resList&Resクラスにレスを格納する処理
}
みたいにした方が、Resの独立性が高くなって後々使いやすいんじゃないかなと考えたからです。
getResListする度にArrayList生成する気なの・・・?
70 :
64 :2009/08/04(火) 21:20:51
>>69 違うスレの住人にも書き込もうとしたら
誤爆したorz
何してんだお前は。
>>67 データと操作を分離するそういうやり方もあってそれでもOKだけど、
もしオブジェクト指向初心者なら
>>66 のようにするのがお勧め。
enumは関係ない。
73 :
64 :2009/08/04(火) 21:31:49
>>68 List<Res> resList;
private static void createResList() {}
public List<Res> getResList() { return resList;}
みたいに、作っている間にちゃっかり分離すると思います。
思いつきで書いたので、申し訳ありません
>>71 すいません...
職業プログラマだった人が別のスレを見ているもので....
>>68 コストがさして重要でない場面なら、getの度に防御的コピーしておく方が安全でいいという考え方も
もしくは Collections.unmodifiableList で囲むとか
75 :
64 :2009/08/04(火) 21:49:40
>>72 お返事ありがとうございます
やっぱり、
>>66 のようにようにした方がいいのですか
わかりました。そっちの方向で作りたいと思います
>もしオブジェクト指向初心者なら
Linuxばっかりで遊んでいたので、プログラミング苦手です
練習なので、まぁまぁの完成度ならばうpロダにあげるかもしれません
その時はよろしくお願いします
classpassなんて変数使って何がしたいんだ
何をしたいのかはともかく、
>>76 そのページの絵は空欄じゃなくてピリオド1個
79 :
デフォルトの名無しさん :2009/08/04(火) 22:01:44
>>76 その例では「.」が入ってるんだよ。
見づらいけどちゃんと書いてあるだろ?
81 :
76 :2009/08/04(火) 23:43:12
HelloWorldからやってる素人なんですが、 コンパイル時にエラーがでたのでCLASSPASS を上のサイトのとおりにいじったのですが CLASSPASSは関係ないんですかね?指定された パスが見つからないというエラーがでたのですが。
CLASSPASSなんて変数使って何がしたいんだ
しつごい
関係ある classpath使うと 現在居るフォルダー見に行かなくなる 両方書けば良いだけだろうけど
CLASSPASSとCLASSPATH両方必要と申すか
最近は答える側まで初心者みたいだな
Javaにはあまりくわしくないのですが なんでほとんどのレンタルサーバってJavaって使えないんですか? PythonやRubyやCでCGI可能なとこはありますがJavaでCGIというのは無理なのでしょうか? Tomcatなどの専用のアプリケーションサーバが必要だからですか? クロスプラットフォームでASPのようにコスト面でもそんなに問題にならないと思うのですけど 何が弊害となってレンタルサーバにはJavaが入っていないのでしょう? あまりサーバ関連とかも詳しくないので識者の方の意見を聞きたいです
レンタルサーバの業者に聞け
だいたい利用可能なのはLLだからなあ 面倒くさいんだろ
個人でやる人は自鯖立てるんじゃないかね?
自鯖立てるかフリーのダイナミックDNSだろうな
>>88 メモリだろ、Tomcat動かすとした場合、最低でも256MBくらいはないと困る
おまけにTomcatをシェアして、各ユーザにウェブアプリを配備させたとしても、落ちるときは全部巻き込むわ、細かい設定は各アプリで制御できないわで、まったくの第三者がシェアするのには向かない。
そもそもCGIにするのは無謀。
で、月2000円くらい出せばJava使えるVPSとかあるけど、それも出せないならPHP仕えという話。
JPanelのレイアウトをBoxLayoutにしたら、pane.add(何か)をすると中央に表示されます これをどうにか左寄せにしたいのですが、どなたか教えてください
アクションフォームBeanのゲッターとセッターメソッド名と、 入力画面JSPの項目名は同じ名前じゃないといけないのですか?
違う名前でできるようにするとして、別の方法で関連付けなきゃ使えるわけがない。 あるかもしれないけど、別の方法は使ったことないな。
>>97 ありがとうございました。昨日からはまっていました。
eclipseでJSPを実行しようとしたらサーバで実行という表示が出ず 実行が出来ないのですけど、何がいけないのでしょうか。
何かがいけない
>>95 pane.add(Box.createGlue());
Tomcatプラグインで、配備だったか設定だったかはやった?
Tomcatプラグインは使ってないです。Tomcat側でコンテキストを 書いてます。サーブレットは動くんですけど。JSPもブラウザから 直接にURLでアクセスは出来ます。eclipseから実行したいけど、 サーバで実行という選択が表示されないんですよね。
105 :
デフォルトの名無しさん :2009/08/05(水) 21:07:46
Javaの初心者です。 1つ質問があります。 J2SEで用意されているクラスのフィールド(定数)を設定して、 そのフィールド(定数)の持っている機能を使えるようにするにはどうしたら良いですか? 因みに使おうとしているのは「ResultSet」クラスのフィールドです。 プリペアドステートメントでSQLを実行して「ResultSet」型のオブジェクトを返します。
eclipseの中のStruts用のプロジェクトからは、サーブレットやJSPを eclipseから実行できないとかあるんでしょうか?
108 :
88 :2009/08/05(水) 21:28:11
遅くなりましたがレスありがとうございました
別に金額とかはどうでもいいのです
なんで入ってないのか疑問に思っただけなので
Javaの欠点みたいなものが弊害で導入できないのだろうと思い
Javaに詳しそうなこのスレで質問してみました
>>91 単にめんどくさいというのもあるのかなと思いましたがそうなんですかね?
LLっていうのは何のことかわかりませんすみません
>>94 そういう仕様では確かに共有サーバでは厳しいですね
メモリもそんなにつかうということは結構動かすのにもコストもかかるんですね
貴重な意見どうもありがとうございました
Javaの多重配列は「配列の配列」であり、
int[] mAndD = new int[12][31];
は『31個の要素を持った配列を12個持っている配列を作成』
という意味だということです。
ここで疑問なのですが、多重配列が「配列の配列」だとすると、
『2次元配列が行列』というのは間違いで
『@まず長さ12の配列オブジェクトを用意⇒12個の要素それぞれが、長さ31の配列オブジェクトを参照している』
という解釈で良いのでしょうか?
図で表すとこんな感じ。
http://kita.kitaa.net/10/s/10mai107.jpg
>>107 できんの?
ほんとに答えてほしいなら、
もーちょっと環境とかやった手順とか詳細を書けよ。
その質問で答えかえってくると思うか?
111 :
64 :2009/08/05(水) 21:36:50
昨日、2ちゃんねるスレを綺麗に表示したいとレスした者です
ひとまず、スレッドを表示しながら考えようと思い、swingの所も少しだけ作りました
最初はJLabelで作っていたのですが、JEditorPaneの方が後々楽になりそうな気がしてJEdtiorPaneを使いました
そして、IDEで試しに動かしてみたら、CPUに高い負荷が係ります
同じjavaのV2C(専ブラ)と負荷を比べてみましたが、あきらかにこのコードの方がCPUへの負荷です
すいませんが、何方かヒントをください
長々スレを使うのは悪いので、アップロードしました
まだ、作っている段階なのでJLabelとJEditorPaneが混在する意味不明な所もあります....orz
ttp://www.dotup.org/uploda/www.dotup.org8121.zip.html
>>103 それは・・・既に「Eclipse とは無関係に」サーバで実行してるからではないだろうか?
というか、Tomcat プラグイン使わなくても Eclipse から Tomcat サーバ実行って、
できるんだっけ?
>>105 イミフ。
操作するもなにもResultSetは「結果」セット。
設定できるのはFetchする方向だけ。
ResultSet#setFetchDirection()
あとは既に設定されてしまっている結果にすぎない。
ResultSet#getConcurrency()
ResultSet#getType()
ResultSet#getHoldability()
これを変えたければMySQLだかOracleだか何かのドライバと相談しる。
>>105 もーちょっと具体的になにがしたいかを。
ResultSetのどの機能を使いたいん?
>>109 そう。こんなことも可能。
public static void main(String[] args) {
int[][] ia;
ia = new int[3][];
ia[0] = new int[1];
ia[1] = new int[3];
ia[2] = new int[2];
ia[0][0] = 1;
ia[1][0] = 2;
ia[1][1] = 3;
ia[1][2] = 4;
ia[2][0] = 5;
ia[2][1] = 6;
}
をデバッガで実行して、変数を見てみるといい。
118 :
デフォルトの名無しさん :2009/08/05(水) 22:50:51
>>113 携帯からの書き込みであまり詳しいことが書けなかったので申し訳ございません。
Class.forName("org.postgresql.Driver");
Connection con =
DriverManager.getConnection("jdbc:postgresql://サーバーのIP/DB名",
"ユーザー",
"パスワード");
String sql = "SELECT id FROM aaa WHERE id = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1,bbb);
ResultSet rs = ps.executeQuery();
rs.first();
<処理>
rs.last();
<処理>
でSQLクエリーを実行し、ResultSetを取得した後、
firstメソッドやlastメソッドを実行したら、
「SQLException」例外が発生して実行できません。
おそらく結果セットの型がデフォルトで「TYPE_FORWARD_ONLY」
となっていると思われます。
「TYPE_FORWARD_ONLY」は「ResultSet」クラスのフィールドの
一つですが、違うフィールドに指定を変更することは出来るのでしょうか?
(DBの種類はPostgreSQLです。)
ちなみにJ2SEの「ResultSet」クラスの仕様は下記URLです。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/sql/ResultSet.html#first ()
できませんので諦めてforでまわしてください
オラクル関連になったようですが、 Javaは今後どうなりますか。未来が心配です。
>>111 CPUの負荷だ?
単に画面が出るのが遅いだけなんじゃないのか
ファイル読んでから表示じゃなくて、読みながら表示しろ
>>118 TYPE_FORWARD_ONLY 以外を指定することはJDBCドライバ次第では可能だが、
できる限りやるべきではない。
結果の件数が多いとメモリを馬鹿食いして落ちるからだ。
あと、その情報は問い合わせ処理の結果として設定される情報だから、
ResultSetが返って来てから操作しても無意味だ。getType()の説明をよく読め。
123 :
111 :2009/08/05(水) 23:34:31
>>121 なるほど、読みながら表示ですか
明日はそこら辺を中心に考えてみたいと思います。
CPUは単純に負荷を見ていただけなので、正確な所まではわかりません
javaは起動する時にCPUの負荷が負荷が大きいから、そう感じたのかな?
124 :
118 :2009/08/06(木) 00:01:47
>>122 ご教授ありがとうございます。
getType()はResultSetの型を取得するメソッドで、
型はexecuteQueryメソッドを実行しResultSetを返す段階
で決まってしまうので返した後では無意味ということですね。
少し調べましたがどうやらConnectionクラスの
prepareStatementメソッドでSQL文の設定と同時に
ResultSetの型を指定できるみたいですね。
TYPE_FORWARD_ONLY 以外の型を指定するのが良くないようなので
方法についてもう一度再検討してみます。
125 :
デフォルトの名無しさん :2009/08/06(木) 00:03:46
どうでもいいけど、「ご教示」じゃないのか?
実にどうでもいいな 実にどうでもいいな
どうでもいいなら言わなきゃいいのに
128 :
デフォルトの名無しさん :2009/08/06(木) 00:08:39
ああ、悪かった。 どうでもいいと書きつつ、バカかといいたかった。
129 :
デフォルトの名無しさん :2009/08/06(木) 00:11:57
>>128 どうでもいいことを書き垂らすお前のが馬鹿だと思う。
130 :
デフォルトの名無しさん :2009/08/06(木) 00:12:53
>>129 まあまあ落ち着け。
馬鹿かどうかは学歴で決まるんだ。
こんなところで馬鹿かどうかなんて言い合ったってしょうがない。
132 :
デフォルトの名無しさん :2009/08/06(木) 00:16:03
低学歴乙!
133 :
デフォルトの名無しさん :2009/08/06(木) 00:18:55
しかしここのスレって「ご教示」とか「ご教授」とか細かいことまで要求されるの? 2ちゃんねるなんだし、そんなことどうでもよくね。 「ねこ」を「ぬこ」と言うのなんて2ちゃんねるでは一般化されているんだし。 ここはJavaの質問スレなんだし、質問の意味・意図が相手に伝わるような書き方・内容であればいいんじゃね。 細かいことはどうでも良いよ。
133のようなカモを待っているんだと気づかないといけない 構ってくれということ。
Double a; Double b; a=0; a= a+b; とやったら、文法がおかしいというエラーがでてしまいました。 bの累積を求めたいのですが、よいやり方はないでしょうか
Double a; Double b; a=0.; b=0.; a= a+b;
>>133 125が言わなかったら122は間違ったままだったんだからよかったじゃないか。
「ぬこ」に関してはわざと言ってるんだし別のはなし。
>>136 Doubleをdoubleに変えてみる。
>>138 変えなくてもオートボクシング、オートアンボクシングで通る
代入時にintのリテラルは通らないのとbが初期化されていないからコンパイルできない
>>133 お前がこの世に存在してること自体どうでもいいよ。はよ死ねカス
141 :
デフォルトの名無しさん :2009/08/06(木) 01:17:30
最近の学生は低レベルだな
143 :
デフォルトの名無しさん :2009/08/06(木) 01:58:46
ご教授ください
一昔前の学生は同じ荒らすんでも知性を感じさせたが 今年の荒らしには全く感じられないよな
荒らすことしかできない知障は放置がベスト
>>133 おまえがageたから荒れたんだろ。スレのみんなに誤れ。
┐(´〜`)┌
149 :
121 :2009/08/06(木) 14:10:22
>>123 CPUの負荷がどうのこうのなんて大雑把なことで心配するようなレベルか?って言ってんだ。
既存のは1秒で表示するのに自分のは10秒かかります、なんで?ってのなら多少構造を疑うが、
システム全体のサマリであるCPUの負荷なんてので言われたって環境のほうが気になるだろ。
教授をください
下らない質問ですいません どうして、staticな内部クラスはnewできるのですか? アウタークラスのstaticなメソッドはnewできななかったような.... public class Outer { public void innnerAcces() { Inner in = new Inner(); } static class Inner {} }
staticなので、(外部クラスの)インスタンスを必要としないからです staticが付いてないものは、インスタンスを必要とします staticフィールドと普通のフィールドもそうでしょ?
>>151 staticじゃなくてもメソッドはnewできんだろ
サーブレットを動かすのに、 eclipseから内部のtomcatサーバを起動させて動かすとサーブレットは動き 通常のtomcatを起動して動かすとサーブレットが見当たらないとなります。 URLは同じです。通常のtomcatとeclipseが内部で動かす状況が違う みたいです。 もう一つのプロジェクトは全く逆ので、通常のとtomcatからは動いて、 eclipse内部のtomcatからは動かないです。 両方ともうまく動くようにできないものでしょうか。
>>155 staticな内部クラスは普通のクラスと同じなんだけど、
どこににクラスが作られているか(パッケージorクラスの中)以外は同じ
ってことでいいんですか?
>>154 conf/caterina ... えーと、忘れたが、外部版のconf以下にプロジェクトの
WEB-INFを参照させる設定ファイルを書いて再起動すれば動く。
ただ、両方動かすなら片方のポートは8081とか別のポート番号にしないと、
起動時にそのポートは使われてるとかなんとか英語で怒られる。
dateListに1つ以上のデータが入っていた場合は、スレッド( TestThread tt = new TestThread(); tt.run(); while((str = br.readLine) != null){ tt.add(str); public class TestThread extends Thread { LinkedList<String> dateList; public void run (){ } public void add(String str) { dateList.addLast(str); while(dateList.size != 0) { //dateListが1件以上ある場合何かの処理する、処理が終ったデータはdateListから削除 dateList.removeFirst(); } //自分自身のスレッドをwait
159 :
158 :2009/08/06(木) 20:57:55
すいません、途中で書き込んでしまいましたorz 無視してください
えっ?
長くなりそうならどこかにうpした方がいい
>>158 run()の中に"何かの処理"を書かないと意味ないだろ
アプレットを作りたいと考えています。 WindowsXPのIE6に搭載されている、デフォルトのJavaVMの バージョンっていくつなんでしょうか。 自分自身の環境では、すでにJRE6を入れてしまっているため よくわかりません。 ご存じの方いたら教えてください。
>>163 IEのメニュー、[ツール][アドインの管理]で、[許可無しに実行されるアドイン]の
Java Plug-in 1.x.xx って見てみ。
165 :
163 :2009/08/06(木) 21:55:59
>>164 確認してみました。
Java Plugin 1.6.0_13 と表示されていました。
これは自分がインストールしたJDKのバージョンと同じものです。
もしかして、デフォルトではJavaVMなんて入ってないんでしたっけ??
>>156 そのような短絡的に安易な共通点を求めることはお勧めしない
で、内部クラスの説明をしていないわけだが軽くスルーで、
とりあえず、ネストクラスは一番簡単な static を使うべき、と。
167 :
156 :2009/08/06(木) 22:00:53
質問です BigDecimalの20090806を yyyy/mm/ddにフォーマットするにはどうすればよいでしょうか? すみませんがご指導のほどお願いします
169 :
デフォルトの名無しさん :2009/08/06(木) 22:27:47
>>168 それ結果は文字列でいいのか?
だったら、toStringして切り取れば?
BigDecimal bd = new BigDecimal(20090806);
String tmp = bd.toString();
String yyyy = tmp.substring(0, 4);
String mm = tmp.substring(4, 6);
String dd = tmp.substring(6, 8);
String ymd = yyyy + "/" + mm + "/" + dd;
>>168 そもそも日付をBigDecimalで扱う意味がわからない。
小数点以下で時分秒もいずれ計算するんだよ
>>168 DecimalFormat decimalFormat = new DecimalFormat("00000000");
DateFormat dateFormat = new SimpleDateFormat("yyyymmdd");
DateFormat slashDateFormat = new SimpleDateFormat("yyyy/mm/dd");
BigDecimal value = new BigDecimal(20090806);
String result;
try {
String strValue = decimalFormat.format(value);
Date dateValue = dateFormat.parse(strValue);
result = slashDateFormat.format(dateValue);
System.out.println(result);
} catch (ParseException e) {
e.printStackTrace();
}
冗長だけど、日付チェックもしたいならこんなのもアリ。
>>168 BigDecimal date = new BigDecimal(20090806);
StringBuilder sb = new StringBuilder(date.toString());
sb.insert(sb.length()-4, '/').insert(sb.length()-2, '/');
System.out.println(sb.toString());
こんなんとかも。
早速の回答どうもです いろいろ参考になりました 自分なりにここから色々試して見ます 本当にありがとうございました
>>165 インターネットオプション→詳細→Microsoft VMの項があればインストールされている。
されている場合はコマンドプロンプトからjview.exe。
JViewはXPの初期の段階で排除された。今はもうダウンロードすら出来ない。
それは踏まえてレスするがJViewのjavaの言語仕様は1.1。
それとSun Java VMとMicrosoft VMには互換性がないのでそもそもJ++が吐いたclassファイルくらいしかまともに動かない。
さらに、JViewの外部バージョンが同じでも内部バージョンが違うと動かない。
もう一つ、バージョンを完全に揃えたところでJViewがリンクするDLLのバージョンが完全に一致しなければ動かない。
んで、JViewではSwingがまともに使えないからsun java pluginを入れるんだがこの状態でアプレットを使うと変な挙動をすることがある。
その場合はアンインスコしてsun javaの JREを使う。
方法は↓
ttp://www.java.com/ja/download/help/uninstall_msvm.xml
言い忘れた。JViewはコマンドラインインタプリタだがIEにはJViewとは別のランタイムが組み込まれててそっちの言語仕様は1.3で止まってる。どっちにしてもSwingがryなので以下略。 んでバグフィックスだけC#が出るまで密かに続いてたが今は放置されてるはず。 だからまともに動かない。
>>175 Microsoft (R) Command-line Loader for Java Version 5.00.3810
Copyright (C) Microsoft Corp 1996-2000. All rights reserved.
使用法 : JView [オプション] <クラス名> [引数]
こんなのだろ?苦労してたんだな。お前
178 :
165 :2009/08/06(木) 23:33:31
>>175 詳細な解説ありがとうございます。事情を理解できました。
手元の環境WindowsXP SP3で、
jview.exe を叩いてみましたが見つかりませんでした。
インターネットオプションから、Microsoft VMも探してみましたがありませんでした。
アプレットは、Java6で作ってから、
ランタイムのインストールを促す作りにしたいと思います。
ありがとうございました。
179 :
165 :2009/08/06(木) 23:40:31
>>176 対応してて1.3ですか。
Javaは1.4以降しか触ったことないので残念です…。
アプレットについては、私は仕事でなく趣味なので
ぜんぜん大丈夫ですが、おっしゃる互換性のなさは
仕事だと苦労が絶えなそうですね…。
そして誰も使わなくなった。よって大丈夫。
182 :
デフォルトの名無しさん :2009/08/06(木) 23:56:54
Microsoftアプデートで、JVMもサポートしてくれりゃいいのにな・・正直なところ。
もともとappletはアニメーションやキャンバス2Dが売り(得意)だったはず。 さらにwebアプリと同様、<form>程度ならawtのコンポーネントで十分だし別に今でも廃れてないんだが。 変なIT記事読んで流行に流されてるようなら技術というものはちゃんと勉強しないといつまでも身につかないよ。
184 :
165 :2009/08/07(金) 00:17:13
実は普段は流行に流されてFlashをいじっているんですが、 先ほどふと思いついて10年振り?に先行者ゲームをやりまして。 あまりの軽さに驚き、アプレット作ってみたいなと…。 こんなに軽いなら、今もっとモダンなJavaアプレットが沢山あってもいいと思うんですけどね。
>>183 アプレットの話じゃなくてMS VMの話だ。
>>184 sun自体がアプレット=Java FX、従来のアプレットの役目はJWSに徐々に移行させている。
アプレットでは有用なライブラリが無いから、開発者のうちライトユーザはflashの方に流れていった。 javafxのようにアプレットとライブラリを一緒にリリースしてたら、たぶんアプレットはサーブレット(とwebコンテナ)同様にトレンドになってたと思うけどね。 もし2D,3DやUIやイベントについてのスキルがあるなならアプレットはかなり自由度が高いよ。 いまは、javascriptとflashを使えてVBとは違った意味でUIについて多少経験があるユーザが増えたから、 アプレットはそのユーザが戻ってくることを期待して整備が進んでいる。 たとえば、appletとjsがさらに強く連携してDOMが簡単にいじれたりする。 ただ、webやappletはブラウザのJS実装に強く依存するけど、webやnetを主体としたアプリを考えてるなら、 IE以外のmozilla,chrome,operaとかの方がMSの俺様ネイティブルールがないぶん素直でいいんじゃないか。
>>185 お前はjava.applet.Appletや<applet>タグしか頭に無いのか?
旧式な奴だなw
188 :
デフォルトの名無しさん :2009/08/07(金) 00:36:05
>>185 MSVMなんてもう使ってる奴いねーってw
脳味噌腐っちまってんじぇね?ww
>>187-188 こいつら同一人物か?
165からのスレの流れ読んでないし日本語理解できてないし。
>>186 mozilla系以外でLiveConnectって使えるの?
IEだとActiveX ScriptでJava呼べるけどさ。
>>189 もともとお前に対してのレスじゃないだろ
お前は日本語を理解できず状況把握も出来ない落ちこぼれ
一回糞まみれになって死んだほうがいいんじゃね?w
191 :
デフォルトの名無しさん :2009/08/07(金) 01:47:16
夏厨元気だな
>>189 ここは学校じゃないんだし、そういう態度のままだとこの業界では落ちこぼれになっちゃいますよ?!
193 :
デフォルトの名無しさん :2009/08/07(金) 02:26:51
しかし188が文脈読めてないのは間違いないがな。
質問なんですが、BufferedReaderのreadLine()でユーザーの入力を待っている状態で、 一定時間が過ぎたら"時間切れです"と表示させて処理を進行させたいんですが、 どうすればいいんでしょうか?
>>196 ありがとうございます。
スレッドを作って、そっちで10秒時間を計って"時間切れです"と
表示させる事はできるんですが、readLine()の入力待ち状態を強制的に終了させる方法が
わかりませんでした。
>>197 データが読めなくなってから10秒後にIOException(を継承したInterruptedIOExceptionとか)
を発行するようなread()を持つFilterInputStreamを作って、間にかませたらどうだ
ready() で入力があるか確認してから読めば?
空文字列のチェック (1)str.equals("") (2)str.length() == 0 (3)str.isEmpty ←Java6以降 (×)str == "" ←!!!間違い!!! で、(1)(2)(3)それぞれの使い方のメリット・デメリットを教えて欲しいのですが
こういうのもあるよ (4) "".equals(str)
あるけど(4)じゃない。
うまくいかないです。そもそもうまくいうものかどうかさえわかりません。 eclipseで動的WEBプロジェクトを作成してeclipse内部のtomcatサーバを 起動して、プロジェクトエクスプローラからサーブレットのxxx.javaを 右クリックして実行すれば正常に動いてくれます。 しかし、eclipse内部TOMCATサーバを終了させて、通常のTOMCATを起動して URLを入力してアクセスするとNOTFOUNDになります。 お聞きしたいのは。一つの動的WEBプロジェクトで、 eclipse内部のTOMCA起動でもサーブレットを実行できて、 その動的WEBプロジェクトをコンテキストで参照する外部のTOMCATでも 実行できるようにするのは可能なのでしょうか。いろいろやってみましたが 外部TOMCATで動けるような構成にすればeclipse内部tomcatでは動けず、 eclipseで普通に作れば内部tomcatでは動くければ外部TOMCATでは動かない。 今思っているのは、開発用にはeclipse内部tomcatで動くようにして (テストがしやすいです)、もう一つ外部tomcatで動く別の 動的WEBプロジェクトを作って、そちらにサーブレットを公開用に持ってくる というような二重管理するしかないのかなあと思っていたりします。 みなさまは、どのような感じになっているんでしょうか?
うるさい
205 :
デフォルトの名無しさん :2009/08/07(金) 19:09:05
>>203 外部のTOMCATは公開用?
ふつーは開発は手元のマシンでやって、
公開用は別のマシンだぞ?
ふつーは開発と公開用は別物。
それを二重管理とは言わん。
>>205 eclipse内部のtomocatと、インストールしたtomcatの違いです。
別物らしいです。
eclipseはそういう部分でもポンコツだからね
swingでボタンとかをクリックした瞬間に、イベントを発生させられます これを任意のコードの中で発生させたいのですが、どうすればいいのですか?
公開用サーバに配備するときは.war形式にしない?
210 :
デフォルトの名無しさん :2009/08/07(金) 19:23:25
>>206 だからそのインストールしたtomcatを動かす必要がない。
公開するのであれば別のマシンでやれ。
>>208 ボタン 「とか」 って言われてもこまるけど、
JButton には doClick() メソッドがあるよ
>>211 言葉が足りませんでした。例ではswingを出しましたが、
自作イベントを作って、それを任意の場所で発生させられるか?
という所が知りたい事です
>>210 eclipseで作ったプロジェクトは、あくまで開発用であるから
eclipse内部のtomocatのみで開発は終始すればいいということですよね。
203に書いたことが出来ないようなので、そうしようかなあと思います
ありがとうございました。
>>212 自作のXxxListenerインタフェイスを定義して、
それをaddXxxListenerメソッドで登録できるようにして、
その登録されたものを普通に呼び出すだけでは?
>>212 イベントとは何かといえば、単なるメソッドの呼び出しだ。
XxxListener の実装やそのイベントの発生元のコードを真似すればいい。
>>200 なぜ1,2で出来ることにわざわざ3を作ったか考えろ
217 :
デフォルトの名無しさん :2009/08/07(金) 19:52:36
まeclipseは元来素人向けだから その辺注意しながら使わんとね
だからIDEがらみは該当スレでやれ。アンチまで連れてくるな。
いませんよアホらしい
221 :
198 :2009/08/07(金) 20:52:52
>>197 すまん。
出来るかどうかやってみたんだが、どうも一旦 in.read() で待ちに入ってしまうと
interrupt しようが close しようが戻ってこないようだ。
ポーリングするしかないのかねぇ。
>>200 1と2は間違えて
str.equals(" ")
str.length() == 1
としてもコンパイルエラーにならない。
3はメソッド名間違えたらコンパイルエラーになるので
間違いに気付くことができる。
223 :
デフォルトの名無しさん :2009/08/07(金) 21:09:14
>>213 eclipseのtomcatでも、
インストールしたtomcatでも、
同じwebプロジェクト参照することはできるよ。
eclipseで普通に作ってから、
インストールしたtomcatで動くよう設定ファイルを書けばいい。
だけどみなさんはあまりそういうことしない。
意味がないから。
System.out.println("タムをしらんかのう タムをしらんかのう");
225 :
212 :2009/08/07(金) 21:25:14
226 :
デフォルトの名無しさん :2009/08/07(金) 21:32:03
なあ、なんでEclipseみたいなくそIDEがそんなに人気あんの? マジでわけわかめだわ。
227 :
デフォルトの名無しさん :2009/08/07(金) 22:10:13
>>226 残念ながら
なんでWindowsが人気あるかとか
なんでMicrosoft Officeが人気あるかとか
なんで今のキーボード配列が人気あるかとか
そーいったレベルになっちゃったね。
デファクトスタンダードだ。
新しいプロジェクト入ったとして、
一人だけeclipseじゃなくてnet beansでやります!
みたいなのが通用しないし。
Sun的にはどうなんだろうか 名前も含めてw
名前、メールアドレス、電話番号が規則的に書いてあるテキストがあります これを、今まではStringBuilderでちまちまとHTMLに変換してswingで表示してきました しかし、StringBuilderで結合してHTMLを作るのは大変です 何か楽をしてHTMLを作り出す方法はないでしょうか?
まて。 プログラムにやらせてるんだから、一件分の出力部分を書いてループで回す だけなんだから、大変もなにも無いと思うんだが。 強いて言えばXHTMLっていうものをググると幸せになれ・・・Swingで表示なら XSLTのほうかな?
>>230 ループはちゃんと使っています
でも、目的の画面を表示するためにはHTMLをけっこう書かなきゃいけないんです(ループでは表現出来ない)
だから、StringBuilderでやっていると何がなんだかてことになるわけです
XHTMLで調べてみます
ありがとうございました
>>226 ところどころイマイチであるところもEclipseのいいところだからなぁ
多分、今どきのスタイルシート頼り切りのHTML記述に染まっていないピュア な心根の持ち主なんだよ。一つ一つ丁寧に心を込めて属性を書きました。
235 :
デフォルトの名無しさん :2009/08/07(金) 23:16:45
何か楽をしてHTMLを作り出す方法はないでしょうか?
雛形を作っておいてreplaceする
237 :
デフォルトの名無しさん :2009/08/07(金) 23:35:28
>>235 すまんがおまいさんの状況がわからん。
そんなに大変だと思えない。
HTMLが複雑なのか?
Velocityなんてものがあるぞ。
238 :
231 :2009/08/07(金) 23:55:45
なまけもの再登場w
その、楽にHTMLを作るために、属性はグループ化してスタイルシートにまとめて、 構造はXMLな元データを取り出してXSLTで変換して、という技術が作られた。 たとえば <住所録> <名前>xxx</名前><メールアドレス>xxx</メールアドレス><電話番号>xxx</電話番号> <名前>xxx</名前><メールアドレス>xxx</メールアドレス><電話番号>xxx</電話番号> ・・・・ <住所録> という感じのデータを入力として、XSLTスタイルシートで指定した任意のHTMLに 変換することができる。
>>231 HTMLがXHTMLになったって大して変わるもんじゃなさそうだが…。
個人情報を出さない程度に実際のコード一式をうpろだに出してみたらどうだ。
本家ならパッケージ javax.xml.transform 参照。 他のプロジェクトからも色々とライブラリが公開されてる。
Eclipse IDE for Java EE Developers (189 MB) と Eclipse IDE for Java Developers (92 MB) は どういった点が異なるのでしょうか? どちらがお勧めですか?
246 :
デフォルトの名無しさん :2009/08/08(土) 01:09:47
>>245 一応言語依存だからいいのでは?
>>244 Java EE Developersのほうはなんかいろいろついてくる。
マシンのスペックが悪くないなら
Java EE Developersいれとけば後々めんどくさくないよ。
iアプリを作成しているのですが、java.awt.geom.Point2Dが使えないため同機能のクラスを自作したいと思っています。 似た機能(の1部)は作成済みなのですが使ってみるとヌルポが返されたりして1部機能しかまともに使えません。 どのようにすれば、同機能のクラスとして使えるのでしょうか? 作成済みソース。 public class Point { double x; double y; Point location; Point(Point p){ location = new Point(); location.equals(p); } Point(double X,double Y){ x = X; y = Y; }
void setLocation(Point p){ location = new Point(); location.equals(p); } void setLocation(double X ,double Y){ x = X; y = Y; } double getX(){ return x; } double getY(){ return y; } } お願いします。
eclipseで動的WEBプロジェクトでStruts1が無事に動くようになりました。 一週間苦しみました。3月からjava勉強始めてちょうど5か月です。 ここでの質問は100回以上してます。7割くらいは返答いただきました。 ありがとうございました。一通り概要が理解できたので、もう一度、 Javaアプリケーションに戻って、理解を深めようと思います。
>>251 それなら今度は答える側になってこのスレに貢献することで恩返ししないとね
>>251 5ヶ月だろうが50ヶ月だろうが、習うしかしてないのなら違いは無い。
>>244 そんな質問してるうちは上には縁がないので下でいいよ
上はJ2EEね
EコマースとかWeb開発で使う
256 :
255 :2009/08/08(土) 01:46:20
まじすまん リロードしてなかった スルーしてちょうだい
>>255 でもそれってライセンス料が必要になるでしょ。支払いはどうするの?
?
>>207 IDEの管轄外にある環境をIDEが管理にするわけないのに何言ってんだこの馬鹿は。
EclipseだろうがNetBeansだろうが関係無いわ。
>>219 (1)str==nullのときぬるぽ。内部的に""の実体を探しに行く分、極めて少しだけ時間がかかる可能性がある。
(2)str==nullのときぬるぽ。str以外の実体にメモリアクセスをともなわない分、(1)より極めて少しだけ速い可能性がある。
(3)str==nullのときぬるぽ。古い環境だと動かない。おそらく最速だが(2)と変わらないような気もする。
(4)str==nullでもぬるぽにならない以外は(1)と同じ。
>>255 ライセンスよく嫁。自分で使うだけなら全部無償。
261 :
デフォルトの名無しさん :2009/08/08(土) 05:26:33
ずいぶん昔のレスを引きずってんだなこいつw EEを自分で使うんなら素直にMS使ったほうがいいんじゃね? それともUNIX使うスキルもねーのかよ お前はただの「おのぼりさん」だろお前?w
>>260 >>219 ですが、ありがとうございます。
見易さ優先の(1)、速さを優先の(2)といったところでしょうか。
空文字列チェックを行うからには、前の行でnullでないことをチェックしておくので、ぬるぽに関しては気にしなくて良いと思いますが。
>>262 260じゃないけど横から。
str != null && str.equals("")
って書くよりは
"".equals(str)
って書く方がソースとしてもバイトコードとしてもコンパクト。
equalsの引数にはnullを渡してもよいからこう書けるわけです。
str != null && str.length() == 0
よりは遅いかもしれないけど、毎回こう書くのは面倒でしょ。
特に1つのif文内で複数の変数をチェックする場合とか。
とはいえ、両方変数なら結局は
str1 != null && str1.equals(str2)
って書くはめになるんだけど。
あるいはorg.apache.commons.lang.StringUtils.equals(String, String)を使う。
264 :
デフォルトの名無しさん :2009/08/08(土) 10:56:35
開発環境での実行時のメモりの使用量をコントロールするツールとかってありますか? ソースの書き方でパフォーマンスを違いを知りたいのですが
>>201 >>263 もし実際に自分でそう書いているのなら、これを機会に改めた方がいい。
if("".equals(str)){
//処理
}else{
System.out.println("length=" + str.length());
}
とか書かれたときのことを考えるべき。
266 :
263 :2009/08/08(土) 12:01:56
>>265 そりゃstrのメソッド呼ぶ気なら事前にnullチェックするでしょうよ。
でもその場合は、
if (str != null && str.equals("")) {
//処理
} else {
}
と書いてもelseにはnullでも来てしまう訳で、
if (str != null) {
if (str.equals("") {
} else {
}
}
とか、
if (str == null) {
return;
}
if (str.equals("")) {
} else {
}
と書く事に。
もし、nullまたは空文字とそれ以外を分けたいなら
if (str == null || str.equals("")) {
} else {
}
って書きますけどね。
良く話題になる文字列のチェックだが、nullチェックはそこでするのか?と思う。 例1) public void method(String str) { if(str != null && str.eqals("XXX") { // 処理 } } はおかしくて public void method(String str) { if(str == null) throw new IllegalArgumentException(); if(str.eqals("XXX") { // 処理 } } だろ? String str = buf.toString(); ならば、nullチェックしないだろ? nullチェックと比較はまとめる方が珍しいと思う
>>266 どんな状況でもこうやればいいという感じで書いておきながら屁理屈こねるなや
後出しで色々いっても見苦しいぜ
これだからJavaやってる奴は
これだからプログラムやっている奴は
>>268 こんなザコために定石なことをわざわざ丁寧に答えたお前の方が「マヌケ」だと思うが?
>>271 スレの趣旨に反しない限り、別に何書いたっていいだろ?
暑苦しいなあ
276 :
265 :2009/08/08(土) 12:43:21
jframe→jscrollpane→jpanel→jeditorpaneの順番で張り付けていくと、 jframeでは何も表示されません jscrollpaneを経由せずに、jpanelをjframeに張り付けるとちゃんと表示されるのですが なぜですか?
自演多すぎ。
>277 jpanelいらん
>>279 あの〜、まったく表示され無いんですけど
JFrame mainFram = new JFrame();
mainFram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane scrollPane = new JScrollPane();
mainFram.add(scrollPane);
for(JEditorPane view : viewList) {
scrollPane.add(view);
全部はれやカス
>>281 全部貼れと言われても、JEditorPane pane = new JEditorPane("text/plain",str);
viewList.add(pane);
しているだけなんだけど
これ以上コードは無い
jframe→jpanel→jscrollpane→jeditorpane じゃないの?
つかこれ以上ないってsetVisivle(true)はしてるだろ。全部貼れよ。
>>284 お前、そんくらい誰でもわかるだろJK
お前、本当にプログラミングやってんの?
287 :
デフォルトの名無しさん :2009/08/08(土) 13:59:49
>>286 あのな、そーゆー当たり前だと思ってることをやってないってことが結構あるんだよ。
経験者ほどそれを知ってるから、284は全部貼れっていってるんだよ。
>>285 やってみましたが、表示されませんでした
291 :
279 :2009/08/08(土) 14:45:37
JScrollPane scrollPane = new JScrollPane(mainPanel);
としたら、なぜか表示されました
>>283 ,
>>285 本当にありがとうございました
>>280 で、ちゃんとコードを表示したのにヒントもくれなかったので
>>281 ,
>>284 ,
>>288 、口だけは達者なのがわかりました
威張っているだけならレスしないでください
>>282 mainFram.pack();
mainFram.setSize(800,600);
どこがおかしいか分からないくせに勝手に省略すんなってんだ。
ポカミスは誰だってやるんだよ。
一行違うだけで結果は全く違う。お互い推測でおかしいおかしいって
時間食っても仕方ないだろう。
百聞は一見に…ってことだ。
>>291 280のコードのどこに mainPanel があるんだよw
294 :
281 :2009/08/08(土) 15:40:47
>>279 なんで俺がお前さんのために、ずっと2chに張り付いていなければいけないのか教えてくれw
295 :
デフォルトの名無しさん :2009/08/08(土) 16:09:41
>>291 そうやって調子の乗るならちゃんと質問料を収めてくれますか?
あなたはスレに貢献すらしてませんよね。
醜悪だなあ
貧乏人がくぶる
298 :
デフォルトの名無しさん :2009/08/08(土) 16:52:27
まあEclipse使うってことは周りから10年取り残されるって言うのと同じ意味だからな 覚悟は要るよな
Javaの勉強を始めたばかりのものです。 Eclipseで今学習中なのですが、違うものに変えたほうがいいでしょうか? ひとまず基本情報の午後問題、Javaを解けるレベルまでを考えています。
>>300 まったくない。
世界で一番使われてるIDEだし、
大抵の職場でつかわれてる。
一部アンチがいるだけだ。
気にするな。
>>300 javaの勉強なら、eclipseだろうがなんだろうが関係ない。
IDEの機能に惑わされなければな。
>>301 ,302
お二方ありがとうございます。
急に不安になったので書き込みましたが、
引き続きROMりながら勉強に励みます。
>>303 ちゃんと勉強したいなら2ちゃんねるを見るなんて馬鹿なことはするな
夏になったらおかしいのが沢山発生した
public final class Struts1Process extends Action { public ActionForward execute (ActionMapping map, ActionForm frm, HttpServletRequest request, HttpServletResponse response) { Struts1Form outFrm = (Struts1Form) frm; request.setAttribute ("outFrm",outFrm); return map.findForward ("success"); この場合に、ActionForm frm のオブジェクトとしてアクションフォームBeanの 内容を引き継いでいると考えていいのでしょうか。
はい
パッケージってネーム空間みたいなもん?
コンポーネントを複数重ねあわせた際、マウスイベントを 全コンポーネントに処理させるのはどうすればいいですか? トップのコンポーネントにイベントが持って行かれちゃって困っております
>>308 パッケージってディレクトリ(フォルダ)のことだよ
315 :
デフォルトの名無しさん :2009/08/08(土) 23:52:55
階層構造になってるだろ(´・ω・`)
>>292 >mainFram.pack();
>mainFram.setSize(800,600);
これだとフレームの中のコンポーネントのサイズが狂うからパネルのサイズを設定した後フレームをパックじゃないか?
317 :
292 :2009/08/09(日) 00:30:25
>>316 推測してた名残だと思って無視してくれ、すまん。
ちなみにsetSize→packだと、packで再計算されるからsetSizeの意味が無い。
>>317 packに任せるにはsetSizeではダメで、setPreferredSizeが必要なんじゃ?
JDK6u14って日本語版ないみたいだけどこれって内部メッセージはちゃんと日本語なんだよね あとJREの最新版はu15みたいだけどSDKのバージョンとJREのバージョンが違うことってあるの?
322 :
デフォルトの名無しさん :2009/08/09(日) 03:09:44
>>321 バカ?
そこのダウンロードするとlanage選択でEnglishしか選べないんだよ!
死ねかす!
lanageってwww
326 :
デフォルトの名無しさん :2009/08/09(日) 11:21:24
「ねかす!」ってなに?
327 :
デフォルトの名無しさん :2009/08/09(日) 11:23:13
あげないローカルルールってどこ?
教えてくんはカエレ
javaで簡単なwebブラウザを作ろうと考えているのですが JEditorPaneを使うと遅い気がします、何か他に良いライブラリを知っていたら教えてください
JavaでClass.forNameを使ってクラスオブジェクトを作った場合、 プロセスを落とすまでJavaVMにクラスはキャッシュされたままでしょうか?
テストのときだけ実行したいメソッドがあります。 C言語ではテストかどうかを外部の設定ファイルを見て、実行するかしないかを制御してたのですが、 Javaも同様の制御が無難でしょうか? もっとよい方法はありますでしょうか?
>>333 リフレクションとかアノテーションとかを使うことになるのかもしれないが、
テストのときというのがどんなことをするかによるだろ。
設定ファイルにクラス名.メソッド名を羅列して、その順番に実行するのか?
それとも単にランチャーからどのクラスのmain()メソッドを実行するかだけなのか?
とかな。
static final boolean debugFlag = true; を定義して 普通にリリースするときに falseにすればいいだろ・・・
>>334 言葉足らずでした。
本番時は他社のシステムに接続し(SOAPで)データを受け取るのですが、
テスト時は外部システムに接続できないので、適当な値を変数に設定したいのです。
そこで、処理を分岐させたいのです。
>>335 Javaは新しい言語なので、何かしぶいやり方があるのかと思いまして。
最初のウィンドウクラスにリスナー追加したらおk
>>336 今どきならばJUnitでモックとか使う。
というか、大昔からそれしかないが・・・(C言語でも似たようなことやってた)
>>336 おおざっぱに
「他システムに接続してデータ取得」の部分を一つのオブジェクトにしておいて、
interface Transfer { Data receiveData(Param param); }
class RealTransfer impliments Transfer {
public Data receiveData(Param param) { /*他システムと接続してDataを得て返す*/ }
}
class MockTransfer impliments Transfer {
public Data receiveData(Param param) { /*テスト用のDataを適当に生成して返す*/ }
}
class Main {
public static void main(String args[]) {
//転送用オブジェクトを選択生成
Transfer trans = null;
if(args.length == 1 && args[1].equals("test")) {
trans = new MockTransfer();
} else {
trans = new RealTransfer();
}
//本番かテストか気にせず使用
Param param = 〜;
Data data = trans.receiveData(param);
}
}
てな感じ。
>>337 すみません その方法を教えていただけないでしょうか。
感で
addMouseListener(追加したキャンバスクラス);
と書いてみたものの駄目でしたorz
また、最初のウィンドウクラスに
public void mouseClicked(MouseEvent e) {
System.out.println("click");
}
と書いても追加コンポーネントをクリックした時は反応がありませんでした。
(ウィンドウ上コンポーネント外では反応しました。)
342 :
340 :2009/08/09(日) 17:27:42
>>340 うああ "args[1]"→"args[0]"
その場書きだからとゆるしてやってくれ…汚しスマ
>>341 ”感”じゃなくて”勘”だろうw
未確認だが
追加したキャンバス.addMouseListener(最初のウインドウ);
ではどうだ?
Javaって機能ごとにクラスを分割するじゃん。(入力チェッククラス、ファイル書き込みクラス・・・) でも、これらって1つのおおもとになるクラスから、いちいちnewして呼ぶんでしょ。 1つのクラスに書いたほうが、たくさんインスタンスを作らなくてよい分、性能がいいんじゃないの? クラスが増えるとメンテナンスも悪くなるし。 きちんとメソッドごとに機能をわけていればよいと思うんだけど。
>>343 上手くいきました
ありがとうございます。
>>344 んなこた無い。再利用性ってググってみよう。
/home/ユーザー/hoge1/hoge2/hoge.txtというパスにあるファイルを作りたいと考えています どこのディレクトリまで存在しているか?ということをどうやったら、調べられますか? 例えば/home/ユーザー/まではちゃんとディレクトリが存在して、hoge1以下は存在しないよ〜 って感じです。
>>347 File file = new File("/home/ユーザー/hoge1/hoge2/hoge.txt");
while(!file.exists()) file = file.getParentFile();
//この時点のfileはあるらしい
//rootもなけりゃぬるぽ
もちろん未確認
>>347 作りたいだけなら
file.getParentFile().mkdirs();
file.createNewFile();
>>348 やっぱりそうですよね。
僕はそう簡単にだまされません。
先日、入力チェッククラスを作っている童貞がいました。
C++神の僕にはそんなクラスはかっこ悪くて作れません。
部品化(Bean)など上手くいっている現場は珍しい。 ほとんどはウンコ。わけわかめ。分けりやあいいってもんじゃない。 かえって思考が分散する。以上だ。
太古の昔から部品の共通化などと能書きは垂れるが 細部にまで一貫性を保ってプロジェクトを運用し、設計思想を貫けるような SEは殆どいない。理想はそうだろうが人間の頭は付いて来ない。 わかったか。
俺できるよ?
分けなくていいもんまで分けたり、 分けられるもんを分けなかったり、 取っておけるもんを毎回作って消したり、 単にツクリが悪いだけだろ。
358 :
347 :2009/08/09(日) 18:50:47
>>344 1つのおおもとになるクラスから他のクラスを呼ぶってのは、
最近あまりみないよ。
>>336 Java言語向けのやり方としては、外部システム接続がらみの境界線で
interfaceを定義して、テスト環境ではモックオブジェクトに切り替える
ようにするのが定石。
で、その切り替え処理はある程度DIコンテナ(Spring, Seasar2,
Google Guice等)に任せるのが最近の傾向。
テキストファイルを1行読み込んだら、読み込んだデータをテキストを処理するクラスに渡す という作業をループを使用して実装したいと考えています。 速度向上のためにテキストを処理するクラスはThreadを継承しようと考えています。 しかし、IOの方が遅いので行を読み込み終る前にテキストを処理するスレッドが終了してしまいます どうにかして、勝手におわらせないようにしたいのですが どのようにすればいいのでしょうか?
1行1スレッドという発想は神ですね。 感動しました。
365 :
361 :2009/08/09(日) 19:29:12
>>364 ありがとうございます。
早速ググってみます
final String str = "str";str = "STR";はダメなのに final ArrayList<String> list = new ArrayList<String>();list.add(str); は問題なくadd()出きるのですか?
Java には代入とメソッドの区別ができるから
>>366 final はオブジェクトの参照そのものが変化しないことを要求するだけ。
String への代入は参照そのものが変化するから×
list.add は list への参照そのものは変化しないから○
369 :
366 :2009/08/09(日) 20:06:49
>>366 finalが制限するのは、変数とオブジェクトの結び付きだけなので、オブジェクト自身に対する操作には影響しない。
絶対切れない紐の先に犬を結び付けたら別の犬に取り替えることはできないけど、犬がモノを食っても紐の種類には関係ない。
1つのメインのクラスから、色々なクラスをよぶとき、 クラス図はどう表現すればよいのでしょうか? 1つのメインになるクラスから、使用しているクラスに矢印をひっぱるのでしょうか?
アノテーションについて質問です。 アノテーションはあくまでクラス(Class<?>)が持つもので 例えば class Hoge { @Anno Integer i; } Hoge h = new Hoge(); としたとき h.iからそのフィールドに付いてる@Annoを取得(h.getDeclaredFields()してFieldを取得することなく)することはできないという認識でよいのでしょうか?
>>371 適当にやじるし引っ張っとけ。
あってもいないし間違ってもいないし、理解もしていない。
>>372 正しい。h.iは単なるInteger型の参照でそれからは情報を取ることはできない。
Hogeのクラス情報(h.getClass, Hoge.class)から取得する。
ちなみに、アノテーションはRuntime属性にしておかなければ実行時には情報がなくなるので注意されたし
アノテーションって何が出来るのですか
>>373 アノテーションの意味的には取得できてもよさそうなものですが、やはり無理なのですね。
ありがとうございます。
>374 一言で言えばフィールドやメソッドにラベルを付けられる ラベルが付いているか付いていないかでIDEやフレームワークが「なにか」をするかもしれない >375 いやできないのが自然だろう。 アノテーションは商品の値札のようなもの。 値札はパッケージや陳列棚にはつけるが、商品そのものには付けない が、他の店で等々の品はある。
javaにはRTTIがないから
>>372 の動作が自然だと思ってたんだが
>>375 はなんでそう思うの?
>>371 それは依存なので破線の矢印で表す。
矢印の方向はそれであってる。
@deprecateは取り消し線が付いて有益だと思う @supressは黄色いびっくりwarningが消えるので有益 他に何かある?
株やFXの業者サイトを開くと有名なjavaのマークの周りを■がぐるぐる回るアイコンが表示され その後チャートなどが表示されますが、あれは「JAVAで作成されたプログラム準備中」という意味でしょか?
BlockingQueueを教えてもらった者ですが、確認させていただきます BlockingQuequeに何も無くなったら、 自分自身(BlockingQueque)があるスレッドを自分自身で止めるということでいいんですよね?
383 :
デフォルトの名無しさん :2009/08/10(月) 12:20:40
ファイル読込で、BufferedReaderとInputStreamReaderを使用すると読み込むことは可能ですが、UTF8に変換されるのが困ってます。 SJIS読込→UTF8となって後の処理 SJISファイル出力でファイルを出力すると一部文字が文字化けしてしまいます。 これを解決するために、SJISファイルを読み込んで、内部的にもSJISの状態を保持して読み込むことは可能でしょうか?
>>382 自分自身(BlockingQueque)があるスレッド、などというものは存在しないよ
BlockingQueue自身はスレッドを持っていない
止めるのは要素を取り出そうとした(takeを呼び出した)スレッド
あとついでに、満杯のキューにputしようとしたスレッドも空きが出来るまで止められる
>>384 そもそもInputStreamReaderというのは、byte(バイト)をchar(Unicode文字)に変換するためのクラス
変換を通さずInputStreamから直にbyteを読み取ってOutputStreamに出力すればよいのでは
>>386 やっぱりそうなりますよねぇ。
一行読込とかやりたかったんだけど、自前で組むしかなさそうですねぇ。
サンクスです。
if(objFrm.get("idno")!=null && !objFrm.get("idno").equals("")){ このときに、!=nullはヌルじゃないを検査して、 !objFrm.get("idno").equals("")もヌルじゃないを検査しているのですけど どうして2回繰り返すのでしょうか。
s-jisのreader使って一行読み込んで,s-jisのwriter使ってoutputstreamに書き込めばいいんでない?
ちゃんと読まなかった結果がこれだよ…
>>384 もしかして "SJIS" じゃなくて "Windows-31j" とか "MS932" を指定すると上手く動いたりしないだろうか
>>388 null と "" は別のものなので、2個チェックする必要があります
393 :
382 :2009/08/10(月) 13:33:58
394 :
デフォルトの名無しさん :2009/08/10(月) 13:43:53
>>384 "Windows-31j" と"MS932"は、試してみましたがだめでした。
2chのスレッド内容を取得しようと思ったんですけど、httpHeaderに設定されている「content-length」の値と
SJIS→UTF8→SJISファイル出力で取得したbyte長が異なるので困ってます。
うーんいい方法はないのかなぁ。
>>394 改行コードの問題とかはない?
readLineは\nでも\rでも\r\nでも改行扱いするはずだけど、出力してる改行コードが元と違うとか
具体的に何がどう変わってるのか、バイナリダンプかなんかで比較して調べるべきかと
>>394 やりたいこととやってることが微妙に合っていないように聞こえるが。
2chのhtmlが文字列だからといって、Reader/Writerを使わなければならない訳じゃない。
そもそもContentLengthはhttpのボディ部が”バイナリとして”何バイトあるかを示しているはずだ。
だからReader/Writerじゃなく、InputReader/Writerでバイナリのままファイルに落とせ。
398 :
397 :2009/08/10(月) 14:29:48
>>397 ごめ、イキオイで間違った。
>inputRaeader/Writer
じゃなくて
InputStream/OutputStream
>>396 ディレクトリ操作とか便利そうですが、今回のファイル入出力に関してはちょっと用途が違うなと思いました。
>>397 ,398
やっぱしstreamでI/Oするのがスマートそうですね。
ちょっと実装してみます。
>>394 >「content-length」の値と
>SJIS→UTF8→SJISファイル出力で取得したbyte長が異なるので困ってます。
content-lengthの事を書いているのを見ると、差分データを取りに行きたいんでしょ?
スレッド番号.infoみたいなのを作ってレスポンスヘッダからconect-lengthの値を取得して、
<content-length>数値</content-length>とかやった方がいいと思うんだけど。
>>394 改行コードは問題ありませんでした。LFなので特に困ってないです。
>>400 ご名答。
ずばり2chスレッドの差分データを取得するために、content-lengthの値を設定したいのですが、思った通りに値を設定できなくて四苦八苦してます。
ちょっと悩んでみます。
うるさい
むしろHTTPなら java.net.HttpURLConnection とか import java.net.URL でまかなえるのでは
>>402 自分で全体から一部を取り出さなくても、”新着レスの表示”リンクを見れば
URLにちょっと書くだけで差分が送られてくることが分かるだろ
全体を得たとしても、htmlを良く見ればレスがdat落ちと似た形式で一行毎になっているのが確認できるはずだ。
その部分を抜き出せば、レスの件数=行数。差分も得やすくなるだろ。
受信した生データはいったんそのままStreamでファイルに保存しておいて、 あらためてファイルからReaderで1行ずつ読み込めばいい
>>405 それがdatファイルの扱いに関しては簡単ではないんです。
>>406 ,407
初回は、HttpURLConnectionで取得しているのですが2回目以降は、最初に取得した情報をファイルに出力しておいて
ファイルの差分をHttpURLConnectionで問い合わせようとしています。
そこで、content-lengthが重要になってくるんです。
javaじゃなければ簡単に処理できんだけど、なんでUTF8以外を扱おうとするとおかしくなるんだろ。
>>408 とりあえず、初回読込はネットから取得してSJISファイル保存。
2回目以降のアクセスは、さきほどのファイルからbyteを取得して、ネットから差分取得でうまくいきました。
ありがとうございます。
>>410 自分のレス番号は名前の欄に書いてください
アンカーは自分以外の人のレスをしたい時に使うものです
そのレスだと
>>410 が
>>408 に感謝をしていると、ほとんどの人が勘違いします
412 :
410 :2009/08/10(月) 16:24:59
>>411 おっと、そうだったんですか。知らなかったです。
自分へのレスは、名前欄なんですね。
>>408 難しく考え過ぎてるように思える。
たとえば、前回からの差分位置を、前回に取ったcontentを書き出したファイルのサイズから得る必要があるか?
HttpURLConnectionを使ってgetContentLengthで数値を得たのなら、その数値そのものを適当なファイルに書いておいて、
次に取る時にその値を読み込んでrangeヘッダに使ってもいいんだろう?
そうすればcontnetを書き出したファイルのサイズがcontent-lengthと違うとかいう問題は無くなるし、
文字コードがjavaで扱い易いUnicodeになってても問題ない。さらには元のままの形式である必要さえもない。
>>410 出来たら、その出来たものをうpして見せて貰えないだろうか。
415 :
414 :2009/08/10(月) 16:51:08
「出来たら」は「完成したら」じゃなくて「他人に見せてもいいと思っていたら」ことで。念の為。
お前うざすぎ
>>415 アプリという形なら公開できますが、ソースは汚いですねぇ。
>>413 確かに簡単にできる方法を選択するのもありですね。
こっちでも実装してみます。
418 :
414 :2009/08/10(月) 17:45:36
>>417 試行錯誤してレスもいろいろ付いた結果どうなったかに興味があるんで、
綺麗なのは期待してないから気にするな。
JavaでGUIを使ったプログラムを作っている者です。 GUIを記述するクラス(クラスA)と、他の処理をするクラス(クラスB)を分けているのですが、 クラスAに記述されているGUIコンポーネント(例えばTextField)を、 クラスBから操作するにはどういう方法があるでしょうか? なお、クラスAでは、クラスBのインスタンスを生成して利用する形になっています。 初心者の私に思いつくのはクラスAのGUIコンポーネントをグローバル変数のようにしてしまうということくらいなのですが、 もっとスマートな方法は無いでしょうか?
クラスの分け方がキモイ
>>419 クラスAにクラスBのインスタンスをフィールドでもって、
クラスBにてクラスAを初期化する際にthisを渡すとか。
ClassA classA = new ClassA(this);
みたいな感じで。
まぁ、クラスの分け方に疑問を感じるが。
クラスAのGUIコンポーネントはクラスAにまとめるとか、
クラスの肥大化を嫌うのであれば、
クラスB→クラスAじゃなくてクラスA→クラスB、
もしくはクラスB→クラスA→クラスCとするとか。
>>419 クラスBがクラスA(のGUIコンポーネント)に何をさせたいのかという単位で、
クラスAにメソッドを作ってそれをクラスBに呼ばせる。
例えば、一連のTextFieldをクリアするのなら、クラスAにclearAll()という
メソッドを作って内部で各TextFieldをクリアする。それをクラスBから呼ぶ。
>>419 A -> B の参照はするが、A <- B の参照を持たせたくないという解釈でいいか?
幾つかの方法はあるが、古典的なパターンは
・Listenerインターフェイスを作成
・B(処理クラス)にLinstenerのaddメソッドを作成
・A(GUI)の初期化時に、Linstenerを無名クラスでnewしてBに追加
public A() {
b.addListener(new Listener() {
public void xxxChanged(Xxx x) {
// GUIの更新など
}
});
}
・B(処理クラス)では状態が変わったときに、linterを呼び出す
private notifyChanged(Xxx x) {
for(Linstener l: linteners){ l.xxxChanged(x); }
}
基本的なパターンなんで覚えておくといい
クラスの分け方おかしいか? 419はViewとModelを分離したいのだと思ったけど
MVで書き換えておく View -> Model の参照はするが、View <- Model の参照を持たせたくないという解釈でいいか? 幾つかの方法はあるが、古典的なパターンは ・Listenerインターフェイスを作成 ・Model(処理クラス)にLinstenerのaddメソッドを作成 ・View(GUI)の初期化時に、Linstenerを無名クラスでnewしてModelに追加 public View() { model.addListener(new Listener() { public void xxxChanged(Xxx x) { // GUIの更新など } }); } ・Model(処理クラス)では状態が変わったときに、linterを呼び出す private notifyChanged(Xxx x) { for(Linstener l: linteners){ l.xxxChanged(x); } }
Javaからデータベースを読むときは、数回しか読まないようなときでも PreparedStatementを使うように習慣つけるのがいいのでしょうか。
JDBCを直で使わないような習慣を付けるといいと思います
Prepared使うようにした方が良いね 直で使うなとかいう変な書き込みは気にしなくて良い 素人の書き込みだから
このスレ素人しかいねーじゃん。
素人が素人に説教していると聞いて
432 :
419 :2009/08/10(月) 22:30:27
みなさんご教授いただきありがとうございます。
>>423-425 おっしゃるとおりで、
「A->Bの参照はするが、A<-Bの参照を持たせたくない」
↑これが核心です。
たどたどしい説明から汲み取っていただきましてありがとうございます。
Listenerインタフェースを使うという定石があるのですね。
教えていただいたやり方でやってみます、ありがとうございました。
>>426 原則yes. 生JDBCじゃない場合でも、類似のものを使うケースはあるしな。
原則として、外部からやってきたパラメータはあらゆる意味で信用できない
ので、細心の注意(※)を払ってエスケープしながらSQLを組み立てるより、
最初からエスケープ自体が不要な方法を使うべき。
※細心の注意をはらっても、なお空隙を突かれるケースは少なくない。
不完全なマルチバイト文字でエスケープが破綻するとか、
冗長なUTF-8でエスケープを無効化されるとか……。
type safeなのが欲しい
>>433 ありがとうございました。
いまは勉強中とはいえ部品としてデータベース連携のJavaを作っているの
ですが、今までは気にならなかったのですがwhere句とかが並ぶときに、
アポストロフィと、+、が混在して複雑になりますね。
それと記憶するのでしょうから多少速度が早くなると思い、
さっそく部品を修正してみようと思います。
夏厨が見事にスルーされててフイタw
>>435 を見て思わず背筋が寒くなったが、セキュリティ関係にも、よ〜く注意しような……。
少なくともXSS対策とSQLインジェクション対策は十分に行うように。
TEST1というクラスは多くのスレッドでnewされます。 そのTEST1のAメソッドを、最初の1回目のインスタンスだけ実行をさせたいのです。 どういった方法があるのでしょうか。
>>438 class TEST1 {
static { A(); }
private static void A() { ... }
>>439 お返事ありがとうございます。
静的メソッドは使ってはだめだという規約があるのです。
やっぱり、静的メソッドにしないと駄目ですかね。。
その規約書いた奴殺せばいい
静的フィールドならいいのか? class TEST1 { private static final AtomicBoolean b = new AtomicBoolean(); { if (b.getAndSet(true) == false) { A(); } } private void A() { ... } }
A()の実行記録を静的フィールドに持てば?
>>442 あぁ、そういう単純な手があるんですね。
クラス変数はVMで一意ですからね。
フラグをアトミックに操作すれば問題ないですね。
参考になります。
静的メソッド禁止、きたこれ
何故の部分が忘れ去られて規則だけ残ると哀れな状態に成りがち。
447 :
デフォルトの名無しさん :2009/08/11(火) 02:52:36
このスレにふさわしくないかもしれませんが、 WindowsXPでJavaの使われているwebページを閲覧したい場合、 どれをインストールすればよいのでしょうか?
ふさしくないので消えてください ちなみに理解力のある人ならテンプレ読めばその質問の答えは見つかります 分からないならやっぱり消えてください
フィールドで初期化しても コンストラクターのsuper()のあとで初期化されるみたいなのですが、 そのまえにする方法ありますか?
まずは日本語でお願いします
super(initializeField()); みたいに、明示的コンストラクタ呼び出しの引数に フィールド初期化メソッド入れちゃうとか。
454 :
デフォルトの名無しさん :2009/08/11(火) 10:36:36
クラスのフィールドのオブジェクトをフィールドで初期化しても クラスのコンストラクターの中のスーパークラスのコンストラクターの 後でしょきかされるみたいなのですが、 その前にする方法ありますか?
うるさい
ヒドイです><
マンモスヤッピー
親クラスの初期化が子クラスに影響する状況ってあんまり考え付かないんだけど。 とりあえず、親クラスのメンバ変数を全部privateにしてから考え直すとか。
>>458 いや、あるぞ。
親クラスのコンストラクタから呼ばれるメソッドをオーバーライドしてたら、
子クラスのそのメソッドは初期化前に実行されてしまう。
Swingの中にはこの前提で作られてるメソッドもあって、場合によっては知ってないとひっかかるかもしれん。
>>454 クラスのフィールドを初期化ってサブクラスのフィールドだろ?
スーパークラスのフィールドで初期化されるのはスーパークラスのフィールドしかないだろ?
フィールドをオーバーライドしてんの?
>>459 コンストラクタからprivateでないメソッド呼んじゃいけない
461 :
460 :2009/08/11(火) 12:03:26
訂正 ×コンストラクタからprivateでないメソッド呼んじゃいけない ○コンストラクタからprivateまたはfinalでないメソッド呼んじゃいけない
スーパークラスのサブクラスなんていうのは無いんだよ。 クラスのサブクラス、クラスのスーパクラスならありますが。
うぜえw
呼んじゃいけないったって、それはSwingの中の人に言ってくれ というか言っても互換性が失われるから今さら修正不可能だろうけど・・・ もはやありのまま受け入れるしかない現状
呼んでしまっているのは仕方ない、 なのでオーバーライドしちゃいけない する場合には決してサブクラスのフィールドには触らないが原則
何でこんなゴミ作ったんだろう?
いいかげん糞は黙れ
おもいつきなんだけど、 public class A { public A(){} } の継承クラスBを作るのに、 public class B extends A { private A a; public B(){ なんかの処理 a = new A(); } } とか外見は継承だけど、中はコンポジションのようなやり方をするとなんか問題ある?
何に使うの?
一般的なケースでは問題ないと思うけど・・・なんでそんなことを? プロキシみたいにしたいとか? 一般的でない問題あるケースとしてはリフレクションを使えば外からAのprivateメンバに触れたりするはず あとはAがコンストラクタで自分自身をどこかに登録してたりとか
class B に対して extends Aをする以上 意味がないのでは?
ええ?Javaだと親クラスのメソッドは呼べないの? 継承関係がA B C D E ... と深くなっているときthisがEとして、 Dのメソッドはsuper使えば呼べるけど、C,B,Aとかsuperより上のメソッドをオーバーライドしてるときはどうやって呼びだすの?
DがCを、CがBを、BがAを呼んでくれるのを期待する 直接は呼べない
threadでpublic void run()をオーバーライドした時に InterruptedExceptionが発生したらどうしてる? あと、run()をしていると中でIOExceptionが発生した時とか
AがBに殺され、BがCに殺され、CがDに殺され、DがAに殺される。
class Roof { public void Hoge() {} } class Floor extends Roof { public void Hoge() {} } class Base extends Floor { public void Hoge() { Floor.this.Hoge(); Roof.this.Hoge(); } } とかできなかったっけ?
>>475 例外キャッチはどんな作業をしているかに寄るとなんども()
>>475 (1) printStackTrace
(2) RuntimeExceptionにくるんで投げ直す
(3) スレッドの生成元もしくは結果を待ってるクラスに実行結果として通知する
1はまぁ手抜きコードではよくやるが実アプリではちょっと考えもの
2はスレッドの生成元がsetUncaughtExceptionHandlerで設定したかもしれないハンドラが何か上手いこと処理してくれるかもしれない
3は、実行結果を待ってる相手がちゃんと存在してるのなら、最も適切
481 :
475 :2009/08/11(火) 14:05:59
>>479 1行ファイルから読み込んでは、addQueue(line)するって処理を書いている
threadはシグナルみたいなのを受けとるまで処理を止めないってのを書いているんだけど
while((line = br.readLine()) != null) {
createList.addQueue(line);
}
class CreateList extends Thread {
private LinkedBlockingQueue <String> lineList = new LinkedBlockingQueue<String>();
private List<テスト> testList = new ArrayList<テスト>();
@Override
public void run() {
while(true) {
try {
String line = lineList.take();
testList.add(new テスト(line));
} catch (InterruptedException ex) {}
}}
public void addQueue(String line) {
lineList.add(line);}
できなかった でも最近はabstract class以外継承したことないから気にもならなかった
Prepared用にデータベース連携部品を修正したのですけど、これで動いたのですけど 問題ないでしょうか。Connectionを呼び出し元に渡していることや、 this.pstmt = pstmt;としてクローズするためにprivate変数にセットしているんですけど、 こういうの、どうなのかなあと思います。 ------------------------- その1 public class XXMySQL_fishdb2 { private Connection con = null; private PreparedStatement pstmt = null; private ResultSet rs = null; // データベース接続 - PreparedStatement - public Connection open() { String url = "jdbc:mysql://localhost:3306/fishdb"; String user = "*******"; String pass = "*******"; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(url, user, pass); } catch (Exception e) { e.printStackTrace(); System.out.println("Exception Open Err : " + e.getMessage()); } return con; } // オブジェクトを解放 public void close() { try { if (rs != null) { rs.close(); } if (pstmt != null) { pstmt.close(); } if (con != null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); System.out.println("SQLException Close Err : " + e.getMessage()); } } // select文を実行 public ResultSet executeQuery (PreparedStatement pstmt) { if (pstmt != null) { this.pstmt = pstmt; //closeするときのためセット try { rs = pstmt.executeQuery(); } catch (SQLException e) { e.printStackTrace(); System.out.println("SQLException DML Err : " + e.getMessage()); } } return rs; }
その2 public final class FishInfo { public static FishInfo getFishInfo (String id) { FishInfo objFish = new FishInfo(); XXMySQL_fishdb2 db = new XXMySQL_fishdb2(); //Prepared使用 try { // データベースへの接続を確立 Connection con = db.open(); //部品連携 OPEN String mySql = "SELECT * FROM angel WHERE nameid = ?"; PreparedStatement pstmt = con.prepareStatement(mySql); pstmt.setString(1, id); ResultSet rs = db.executeQuery (pstmt); //部品連携 SELECT if(rs.next()){ objFish.setnameid (rs.getString ("nameid") ); objFish.setname (rs.getString ("name") ); } } catch(Exception e) { e.printStackTrace(); } finally { db.close(); //部品連携 CLOSE } return objFish; }
>>481 ループの中にcatchを入れたら受け取っても止まらないのでは
あと、スレッドが止まった以降はaddQueueを拒否する(例外を投げる)べきかと
>>482 Connectionを外に見せるのがPreparedStatementを作るためだけなら、
それもクラス内で処理した方がいいと思うよ
public ResultSet queryAngel(String nameid) throws SQLException {
pstmt = conn.createPreparedStatement(........);
pstmt.setString(.......);
return pstmt.executeQuery();
}
こんな感じで
487 :
486 :2009/08/11(火) 14:26:45
ああそうそう、Floor.this.hoge(); とかのC++みたいな呼び出し方法もあるけどこれでも駄目なのか。 言語仕様読んでみたけどずっと上にあるメソッドの場合は呼び出し方が書いてないね。 invalidate()とか適切な処理をしないでオーバーライドしてるクラスをどんどん派生したときはどうするんだろう。
それは適切な処理をしないクラスが不適切 それをサブクラス側で面倒見なきゃいけないってのは何か間違ってる ところでC++のは this->Floor::hoge() とかじゃないか Floor.this.hoge() 的な呼び方はJavaで内部クラスから外部クラスを呼ぶときの書き方
学生さんもう少し自分で調べてから質問した方が良いかも
491 :
475 :2009/08/11(火) 14:59:24
>>485 最初は、IO→読み込んだデータの処理と書いてました。
しかし、これでは遅い(IOの間にCPUが遊んでいる)のでもっと違うアルゴリズムを考えました。
考え出したアルゴリズムは「データを読み込みながら、データを処理する」というアルゴリズムです。
そのため、1行読み込んだら即座にデータを別のスレッドで処理をするというコードを書いています。
スレッドの開始→while((line = br.readLine) != null) {別のスレッドで読み込んだデータを処理する)}→スレッドの同期→処理したデータを取得
>あと、スレッドが止まった以降はaddQueueを拒否する(例外を投げる)べきかと
説明が不足していました、すいません
問題はJavaがbeansでsetterをメソッドで行うように強要してるのに肝心のオーバーライド仕様がこれじゃ、自作クラスなど気軽に作れるはずは無い。 この一行が何のことを意味してるかも理解できないようじゃJavaは諦めたほうがいいな。 Javaがライトユーザから敬遠されてC#,javascript,rubyに流れていってしまう理由はこれかもしれない。
>>491 別スレッド側で発生した例外はすべて(OutOfMemoryErrorなんかも含めてThrowableすべて)キャッチして、
最後の同期→取得のところでメインスレッド側に返すべき。
494 :
491 :2009/08/11(火) 15:10:59
>>493 >最後の同期→取得のところでメインスレッド側に返すべき。
大変申し申し訳ありませんが、簡単なコードを書いてもらないでしょうか
>>494 こんな感じで
class CreateList extends Thread {
private LinkedBlockingQueue <String> lineList = new LinkedBlockingQueue<String>();
private List<テスト> testList = new ArrayList<テスト>();
private Throwable throwable;
public void run() {
try {
while(true) {
String line = lineList.take();
if (line == null) break; // 終了用
testList.add(new テスト(line));
}
} catch (Throwable ex) { throwable = ex; }
}
public void addQueue(String line) { lineList.add(line); }
public List<テスト> getResult() throws Throwable{
lineList.add(null); // 終了用
join();
if (throwable != null) { throw throwable; }
return testList;
}
}
メイン側
while((line = br.readLine()) != null) { createList.addQueue(line); }
try {
List<テスト> testList = createList.getResult();
...
} catch (Throwable ex) { ... }
>>494 ついでにExecutorとFutureを使う方法もある
class CreateTest implements Callable<テスト> {
private String line;
public CreateTest(String line) {
this.line = line;
}
テスト call() throws Exception {
return new テスト(line);
}
}
ExecutorService executor = Executors.newSingleThreadPool();
List<Future<テスト>> futureList = new ArrayList<Future<テスト>>();
while((line = br.readLine()) != null) {
futureList.add(executor.submit(new CreateTest(line));
}
try {
for(Future<テスト> future: futureList) {
テスト test = future.get();
...... testを使って何かする .......
}
} catch (......) {
...... 例外の処理 ......
}
executor.shutdown();
497 :
494 :2009/08/11(火) 15:45:18
>>495 なるほど、こんな書き方があったのを知りませんでした
>>495 が、頭がよく見えました
念の為に一つだけ質問させてください
createList.addLine(line);した瞬間にスレッドが起動する(起動していない場合)ということでいいんですよね
>>495 疑問なのだが、これってなぜThrowableをcatchする必要があるの?
元と大して変えてないけど・・・スレッドはあらかじめ起動しておかないとだめ 496の方は勝手に起動する
>>498 処理中にOutOfMemoryErrorとかStackOverflowErrorとかでスレッドが死んだら、
そのこと(最後まで処理を正常に完了できなかった)をメイン側が知りたいだろ?
知りたくないなら別にいいが、不完全な実行結果が得られても俺は嬉しくない
警告:[unchecked] raw 型 java.util.ArrayList のメンバとしての add(E) への無検査呼び出しです。 とはどういう意味の警告なのでしょうか? コンパイルはできて、実行も問題なくできています
>>501 Java Generics でぐぐってみるよろし
504 :
497 :2009/08/11(火) 16:21:05
>>499 ありがとうございます。
大体わかったので、あとは自分で考えたいと思います
先生方はなんでこんな厨房ばかりが来るスレに常任してるんですか? そんなに仕事無いんですか?
>>502 ありがとうございました。
解決しました。
持ってた本が古かったようでした。
>>495 >lineList.add(null); // 終了用
API DOC
>BlockingQueue は null 要素を受け入れません。null の add、put、または offer が試みられると、
>実装により NullPointerException がスローされます。null は、poll オペレーションが失敗したことを示す標識値として使用されます。
>>491 自分でやろうとしている姿勢は評価できるが、パソコンの前でうじうじ弄る前に
もちょっと書籍を読んだらどうだ。
どんな機能があるかも分からないんじゃ検索もできんだろうし。
Workerスレッドなんて普通のことだし、javaでどう実装するかの
サンプル付きのがあちこちあるだろう。
>>507 おおう。それは失礼。
なんか適当に代わりの方法を考えてやってください。
といいつつ、自分で考えてみた。これでどうかな。邪道っぽいけど。 class CreateList extends Thread { private static final String EOF = new String(); ..... String line = lineList.take(); if (line == EOF) break; // 終了用 ..... lineList.add(EOF); // 終了用 .....
511 :
491 :2009/08/11(火) 17:13:34
>>508 新幹線定期が切れていて政令指定都市に移動できない
オイラの街はjavaの本を売っている所すらないのさ
定期を買ったら、買いに行くよorz
512 :
デフォルトの名無しさん :2009/08/11(火) 17:41:38
今日は珍しく大漁だな〜
新幹線定期なんて贅沢な・・・うらやましす。
>>513 新幹線使わないと、6:15分には家を出て着くのが9時ごろ
乗り換えとかいろいろ考えると、往復で4〜5時間くらいになるわけよ
住むより安いとか言われたけど、都市に住みたい
515 :
508 :2009/08/11(火) 18:24:58
516 :
デフォルトの名無しさん :2009/08/11(火) 18:28:45
大学のとき、三島から品川まで新幹線で通ってる奴が居たけどそういうレベル?w
>>516 94kmしか新幹線には乗らないけど、新幹線の駅まで13kmくらいあるよ
それに、学生だから原付で移動。冬場は更に駅で50分バスを待つわけだし
家が遠いと全然友達できないし、飲み会も誘われないよ〜orz
同じ駅から新幹線に乗る友達は、40kmくらい汽車(電車じゃない)に乗って来るよ
しかも、汽車に乗る前にも車運転して駅まで行っているみたい
その人は、片道150km(142km列車)くらいだから大変な感じだけど
もう一人、片道140km新幹線に乗っている友達もいるよ〜
ながながスマソ
518 :
デフォルトの名無しさん :2009/08/11(火) 19:00:15
確か他の小田原あたりだったかに住んでるやつは、新幹線使わずにマイカー(東名)で来てたけどね。 悪いがそういう田舎もんは「おのぼりさん」程度にしか思ってないわw 君さ、一回原宿とかいってみれば君がどれほど田舎もんなのか分かるよ。最近話題の「女装系男子」とかいるだろうし。
519 :
デフォルトの名無しさん :2009/08/11(火) 19:03:36
ここは、遠距離通勤質問・相談スレだったか
520 :
デフォルトの名無しさん :2009/08/11(火) 19:06:09
ウエルカム・ツー・TOKIOジャングル
>>520 東京行ってコンピュータに詳しくなりたいとは思うけど
往復すると新幹線だけで2万円以上かかるよ(朝・夕以外は新幹線、1本/時だし)
東京なんて中学/高校(通過)の就学旅行でしか行ったことない(笑えますね)
田舎に住んでいてもネットがあればプログラミングできるとか言っている人いるけど
そんなの大嘘で田舎はADSLすら出来ない所もある、ADSLも1Mbps以下とかある
とある友達の家は圏外で、メール出しても3週間後に返信がとか
都会に住んでいるコンピュータ好きの皆さんは恵まれてますよ
話がそれてきたので、オイラの家がどんだけ田舎かという話はやめます
田舎かどうかは単なるいいわけでしかないな
そう思うなら住んでみるといいよ 話はそれから
524 :
デフォルトの名無しさん :2009/08/11(火) 19:57:31
525 :
デフォルトの名無しさん :2009/08/11(火) 20:02:34
東京ミレナリオはやっぱり綺麗だったな・・・ そもそも田舎もんじゃおうちに帰れない時間だしな・・・
家賃考えると朝夕の苦労のほうがいいときもある 地元に遊べるところがないのが苦痛だなー
貧乏人は藁を食ええ
>>518 ちょwwwwww「女装系男子」とかキモいネーミング勝手につけて知ったかしないでくれw
お前が言いたいのはユニセックスとかモード系だろ?wwwwwwwwww
「女装系男子」って何だよwwって検索してみてビックリ!
原宿とはほど遠い「アキバ系女装男子」しか引っかからないじゃねーかwwwwwwww
まぁここはアキバ系ばかりだから許してやれよ
530 :
デフォルトの名無しさん :2009/08/11(火) 20:14:08
>>521 オラんとこもすげー山ん中だけど村役場がCATV引いてくれたんで、ケーブルモデムでバリバリ
高速インターネットが可能だぞ。(総務省か何かの補助金があるらしい)
>>530 オイラの家なんか、1.5Mbpsしかでないよ
CATVなんてないお
532 :
デフォルトの名無しさん :2009/08/11(火) 20:35:10
>>531 CATVはただ、ネットは2400円/月で使い放題.
ま、村長か村会議員に陳情することだ。
533 :
デフォルトの名無しさん :2009/08/11(火) 20:36:58
>>528 アキバだとコスプレなんだけど、今じゃ原宿の方ではコスプレの感覚がさらに進化して女装になってんだけど
R25とかTOKIOウォーカーあたりが君たちの情報源だと思ってたんだけど。
君の村はR25とか配ってないほど田舎じゃないよね?w
534 :
デフォルトの名無しさん :2009/08/11(火) 20:38:23
ま、田舎もんに話題振ってみてもこの程度かw
>>534 田舎者を馬鹿にするなら、餓死すればいいと思うよ
どうせ、いつかは外国から日本に食べ物が来なくなるわけだし
>>518 田舎者を馬鹿にしようとして、
>>528 に馬鹿にされてやんの
ただのアキバ系なんだ、キモい。こっちくんな
537 :
デフォルトの名無しさん :2009/08/11(火) 20:52:04
>>534 都会のニートにバカにされるいわれはない。
538 :
デフォルトの名無しさん :2009/08/11(火) 20:57:15
>>534 都会のキモヲタにもばかにされるいわれはない。
539 :
デフォルトの名無しさん :2009/08/11(火) 21:08:28
このスレは,とかいはといなかもののありすによってゆっくりプレイスとなりました
540 :
528 :2009/08/11(火) 21:19:51
>>533 おれ東京住みなんだがwwあまりにも
>>518 の書き込みが恥ずかしすぎて・・・ネ!
たぶん東京に憧れてるだけの人なんだろうけど。
コスプレの感覚が進化して女装とか、勝手にあなただけの持論展開しないでください><;ww
ユニセックスが「記事」として取り上げられたのは最近だけど、割と前からありますよ^^^^^
そこから察するに実際に原宿を歩いて得たわけではなく、「記事」から得た知識でしょう。
それから、
>>533 「〜んだけど〜んだけど〜んだけど」って連発されると流石にマヌケです。
まぁそれよりプログラムの話題をしてくださいよ。
関係ない話題なのに「無知さに吹いた」だけで突っ込んで申し訳なかった。
ちなみに田舎は虫が多いという事を除けば好きです^^
InputStreamの変数名はisだろ でも、お前らだったらGZIPInputStreamの変数名は何にする?
@ String[] str; A String str[]; どっちのほうが一般的な書き方?
Aは老害
533のいじめられ具合にワロタ
545 :
デフォルトの名無しさん :2009/08/11(火) 21:30:37
>>540 で、そこまで言うならミレナリオンはどうだった?
546 :
デフォルトの名無しさん :2009/08/11(火) 21:32:06
>>540 東京在住って、オレの住んでるところ知っちゃうとたぶんオシッコちびっちゃうよ。それでもいいの?w
>>542 String[] str[];って書き方もあるらしいよ
試したことないけど
知ったかした挙句叩かれて
>>546 の有様とは
「僕のパパはお偉い人だよ?だから僕はスゴイんだよ?w」と同レベルだな
田舎者の俺から見てもそれはないわ。
549 :
デフォルトの名無しさん :2009/08/11(火) 21:43:27
>>541 ぱっと考えるとgisなんだけど、使う側が、クラスの実体はどうでも
よくて、InputStreamの仕様を満たしてることだけが重要な場合は、
InputStream is = ... で受けちゃうかも。
List list = new ArrayList(); な感じで。
なんかさ、新幹線の定期を買ってさ、いつも往復3時間かけて通ってるなんて・・・なんか俺が出来そこないみたいだよな・・・
552 :
541 :2009/08/11(火) 21:46:00
>>550 やっぱり、そうだよな〜
わかった、ありがとう
553 :
デフォルトの名無しさん :2009/08/11(火) 21:46:27
>>543 ありがとう。 @でいきます。
>>542 ありがとう。 2次元配列になるんだね。
じゃあ String[][] str[][]; だと4次元だね。
>>546 ,549,553
負け犬の遠吠えにしても内容無さ杉
相当頭弱いな。夏厨失せろ
556 :
デフォルトの名無しさん :2009/08/11(火) 22:12:49
558 :
515 :2009/08/11(火) 22:40:19
>>557 「やさしいJava」のことか?
デザインパターンの本は”読む”もんじゃなく辞書的なもんだと思う。
こういう場合はどうするのがいいかな?って時に、こういう方法があって
javaではこう書ける、というのの集まりだな。
だから、”読む”感覚で最初から最後まで眺めるだけじゃ意味が無い。
先の、2chスレを扱うプログラムを作ろうとしているようなやつなら、
役に立つ部類だろう。
>>558 >>515 じゃないけど、デザインパターン読んでみるよ
>先の、2chスレを扱うプログラムを作ろうとしているようなやつなら、
昨日、オイラ以外にも2ちゃんねるのレスを扱おうとしている人が居てビックリした
なんで、windowsユーザなのにdatを取得しようと考えているかは不思議だったけど
質問です。 人狼っていうBBSを利用するような ブラウザーゲームをJava絡みで、つくるとしたらどうしたらいいんでしょうか?
つくるとしたらどうしたらいいんでしょうか?
人狼のルール見てきたけど、 Javaを使ってやるような部分はないんじゃないか?
>>563 Javaの勉強がてらにつくってみようとおもいまして・・・
でもcgiとかphp、jspのほうがよさそうな気もします・・
>>564 勉強というレベルなら、httpを使わず垂れ流し的な多人数チャットに
すりゃいいんじゃないか?
携帯でもできるようにMIDPでもやってみたいんだけど、おかしいのかな? PC側cgiのままになるのかな・・・
>>566 やりたいやりたいだけ言ってたって何にも始まらない
占い師にでも聞いて来いよ
>>566 なんにせよ、サーバー側のモジュールは必要だろ。
サーブレットで作成して、
そのクライアントをなんにするか。
とりあえず、HTMLで作ってそのうち携帯のアプリやらでも対応させたほうがよいかと。
eclipseの質問はここでもよいでしょうか?
駄目
まぁでもとりあえずここで質問します
どういたしまして
へ〜 田舎者はわざわざ新幹線つかって来るのか〜 ゴキブリみたいな執念だなw
どこの誤爆だ 時期的にコミケスレか?
うん悔しい
>>578 で、コキブリさんはどこに住んでるんですか?
フロリダ州
豊洲3丁目-5
582 :
デフォルトの名無しさん :2009/08/12(水) 07:50:15
アフガニスタン
習志野市
悔しい?
>>580 フロリダって黒人ばっかりですよね
やっぱり真っ黒い巨大ゴキブリみたいな感覚なんですか?
そんな感じ
GENERICはかなり胡散臭い 本当にウィルスかよ
>>587 一番上のhtml見てみたけど怪しそうなところは無かった気がする。
int[]などのプリミティブな配列からVectorなどの可変長配列を生成するときは 1要素ずつObjectにしてadd()するしかないのでしょうか? 一気に変換したいのですが・・・
>>590 簡単に言えばチマチマやってください。
for (int i : intArray) { list.add(i)
ありがとうございます
Vector(笑)
iアプリって難しい?
>>595 Vectorは実装されたクラスだし,1.3くらいまではCollectionを継承してなかったような気がする
つまり古い実装で最近は見なくなってきた
といっても使えないことはないんだけどね!ね!
そういえばSimpleDateFormatさんはいつになったらマトモになるの? マルチスレッドで同時に使うとアウトなんだけどー
>>595 java1.2以降なら
Vector→List、ArrayList
Hashtable→Map、HashMap
あたりに置き換えるべき。
>>596 Javaの基本ができてれば難しくないよ。
自分で作ったものが携帯で動くのはおもしろいし。
>>598 スレッドごとに作りゃいいんじゃ?
マルチスレッドで同時に使うとアウトなクラスなんて山ほどあると思う
さすがに来年は2010年だってのにVectorはないわな
>>600 スレッドごとに作っても無駄ですぅ
synchronizeして単一時間にアクセスするのは1スレッドにしないとアウト
>>600 俗に言うスレッドセーフでないオブジェクトはインスタンスを複数使うか
>>604 の様にsynchronizedで囲めばいいけど
SimpleDateFormatはインスタンス内部でスタティックフィールドが共有されているのでsynchronizedで囲んでも無駄
実装を見て判断するしかない
やべぇwww SimpleDateFormatにそんな罠があるのかよwww リリースしちまったよwwwww
これから
>>606 は時々現れる原因不明のシステムエラーに対処するようです
がんばってね!
俺のときはSimpleDateFormat#format()をWrapした,新たなクラスに置き換えた
原因不明の原因がここのおかげでわかってるんだから 「調査」という名目で仕事がサボれるじゃないかうらやましい
ヽ(`Д´)ノ
基本情報のJavaの午後問題への対策として、良い教本は何かありますか? 結城本のプログラミングレッスン(下)を考えていますが、どうでしょうか。
本の著者が紛れ込んでいるようだなあ
613 :
590 :2009/08/12(水) 17:34:11
614 :
デフォルトの名無しさん :2009/08/12(水) 18:12:52
>>601 普通にVector使ってる俺って一体....
>>614 使えるところではArrayListの方が良いのでは?
どちらの選択も、無分別と言うのはダメだろ。
>>615 にしてもVectorは使わない。
同期化したい場合は
Collectionsの
synchronizedListやらsynchronizedMap
を使うべき。
Collectionフレームワークが使えるのに
Vectorを使う理由はひとつもない。
StrigBufferについてはあまり文句いわないのに、なんでVectorだけこんな酷い仕打ちを受けるわけ?w インスタンス変数で持つときはArrayListなんかよりも安全(同期)のために良く使うけどね。 PGスタイルの違いか。
いまどきStringBuffer使ってる奴は信用しない
>>616 ,618
というか、Vectorもそのフレームワークの一員なんだが・・・
たぶん君は3流IT記事の戯言に洗脳されてんだろうけど、君ってとっても頭弱いんだね
StringBufferも使わんだろ とはいえ、Java5で追加された部分だからJava1.2での追加されている部分に対応できていないよりはマシだな
Vector使ってればスレッドセーフだ、とか思って使ってるならやめた方がいいんじゃね?
623 :
デフォルトの名無しさん :2009/08/12(水) 18:59:50
>>622 スレッドセーフってのが一体どういうのか分かってないくせにお前は死ねw
>>621 だから、synchornizedコストがうんたらとか言う理由でVector止めろというならVectorよりStringBufferの方を止めさせたほうがいいだろう。
Vectorももともとフレームワークの一員だしEnumerationとは違って否定される理由は無いな。
そんなに目くじら立てる辺りが、君って人の意見に左右されやすくて頭弱いって感じだよね。
コレクションは頻繁に使うんだからもっと骨の髄までしゃぶりつくように勉強したほうがいいんじゃないの?w
Vector(笑)
>Vectorももともとフレームワークの一員 あとから一員にしてもらったのは元々とは言わない
コレクションフレームワークを作ったときに編入されたんじゃなかったっけ
628 :
614デフォルトの名無しさん :2009/08/12(水) 19:39:14
いろいろ細かい事が議論されとるが、 おれとしては、add(),get(),iterator()が必要な場合は、 new Vector<hoge>()としてしまうわけだ。つーか勝手に手が動いてし まうんだな。昔から世話になっとるし、いまさら裏切るわけにもいかんからの う。 こうなったら死ぬまでVectorを使い続けてやるぞ。
Vectorはベクトル?、ベクター?
べくたーに一票!
>>628 残念ながらVectorだけではスレッドセーフにはならないのです。
同期が必要な一連の操作を synchronized(list) のブロックに入れてあげてください。
632 :
>>628 デフォルトの名無しさん :2009/08/12(水) 20:07:35
>>631 だれもVectorだけでスレッドセーフとはいっとらんぞ。
ただわしは、Vectorが好きといっただけだ。
JavaAPIにもVectorのIteratorはフェイルファスト書いてある。
正規表現というのは、java用の正規表現や他言語の正規表現とかが あるものなのでしょうか。それとも共通のものなのでしょうか。
>>633 grepとかsedとかperlとかいろいろ派生があります
全量子がなかったり不思議なのもあります
むしろVectorだのArrayListだの言っている前に受ける型をList<T>にしろよばかぁ!
デザインパターンの解説を読んでみたけど、ふーんって感じだった
636 :
デフォルトの名無しさん :2009/08/12(水) 21:13:24
なあ、もまえら、暇なやつ教えてくれ。 先輩がさActionServletは触っちゃだめだって言うくせにAjaxでどうにかしろとかいうんだよ。 どうしろっていうんだ?
まあ人によるだろうね 古くからやってる人はArrayListよりVectorのほうが使い勝手が良いと思ってる人も多いかも 簡単に変換できるしね
>>635 「ふーん。こんなん当たり前じゃん」
なら、そーゆーものだ。
みんなが思ってたことを共通認識としたことに価値がある。
「ふーん。こんなんいつ使うの?」
なら、実践不足。
もっとたくさんコード組むとありがたみがわかるよ。
>>605 APIのドキュメントにはスレッド毎に作ればいいって書いてあるし、
問題になる静的フィールドもあるように見えないんだけど、
具体的にはどの静的フィールドが問題なの?
>>639 ぱっと見、NumberFormat のキャッシュがあるから、そこかなぁ。
でも、キャッシュから取り出した値を clone でコピーしてるし、さてはて。
>こうなったら死ぬまでVectorを使い続けてやるぞ。 こういう奴がチームにいると最悪だよな
内部コーディングルールでVectorの使用禁止+使用箇所の修正させてやった ざまぁみろ
>>642 お前は禁止される側だろ
地位的にwww
んだと 俺は偉いんだぞ
>>643 605じゃないけど。
SimpleDateFormatの内部でstaticなフィールドを持ってる。
ClassA {
private SimpleDateFormat sdfA = new SimpleDateFormat();
ClassB {
private SimpleDateFormat sdfB = new SimpleDateFormat();
ってあるとして、
sdfA、sdfBにアクセスするときに、
それぞれsynchronizedに囲ってもだめってこと。
ClassAのsdfAとClassBのsdfBの内部で同じものが使われてるから。
対策としてはSimpleDateFormat使用禁止にして、
それをラップしたクラスを共通で作って、
必ずそれ使えとか。
CSVファイルからマスタデータを読み込んで、staticなListに格納したら、 コードレビューでNGが出ました。 理由を聞いても、staticでマスタデータなんかもたせるなと、言われただけです。 なぜ、だめなのでしょうか。
静的メソッドってどういうときに使うのですか?
クラスにメソッドが必要なとき
>>648 SimpleDateFormatのソース見た?
private static Hashtable<String,String[]> cachedLocaleData
private static Hashtable<Locale,NumberFormat> cachedNumberFormatData
この辺。
654 :
640 :2009/08/13(木) 01:20:53
>>653 横槍失礼。
キャッシュミス時の多重生成の可能性は有るものの
生成されるデータ自体は仮に同一であれば、問題なく、
キャッシュされているインスタンスの使用に関しても、
可変クラスの NumberFormat が複製されているため問題ないと思えるのです。
private void initialize 内にて、以下のように。
numberFormat = cachedNumberFormatData.get(loc);
/* (略)キャッシュミス時の新規作成と追加。 */
numberFormat = (NumberFormat) numberFormat.clone();
ここの clone があればスレッド互換[by IBM dW]で問題ないと思ったのですが、どうでしょ。
>>642 >>648 >>654 どうやら勘違いのようです。
申し訳ない。
インスタンスが違うなら大丈夫なようで。
まとめると、
クラスのフィールドとしてSimpleDateFormatのインスタンスをもって、
そこに複数のスレッドから同時にアクセスがあるようだとアウト。
>>646 の例だと、
sdfAとsdfBは互いに無関係。
ClassAにて複数のスレッドからsdfAにアクセスあると怪しい。
変な情報流して申し訳ない。
privateだが・・・ 大丈夫かよここの回答者
全然駄目駄目ですがな。
>>656 はやとちりだと思うが。
別に
>>655 は"直接"sdfAにアクセスとは言ってない。
class A {
private SimpleDateFormat sdfA = new SimpleDateFormat();
public String format(Date date) {
return sdfA.format(date);
}
:
}
普通に「スレッドセーフでない」なら十分危なく見えるな。
ベクターと聞いて
MessageFormatクラスなどで、1.5からサポートされた printf("%.4s", str) のように表示文字を4文字にしたいとかはどうやるんでしょうか。
イベントリスナーの実装についてたずねたいのですが。 イベントリスナーの実装については、次の方法があると思いますが、 使い分けはどうしたらよいでしょうか。 @ クラス自身にイベントリスナーインターフェースを実装する。 A 外部クラスを作成する。 B 内部クラスを作成する。 C ○○listener listener=new ○○listener(){ @override public hogePerfomed(hogeEvent e){} };
>>663 状況次第と後は気分。
ほとんどの場合は4で済ます
幾つかのリスナーをまとめて1つの機能を作ったり(例:MouseListener/MouseMotionListener)、なんらかの状態を持つ(例:描画処理)場合はクラスを独立。
内部か外部かはクラスが小さいかなら内部、でかいなら外部。
1はまずやらない
ここ3日ほど考えているけど、1行書き込みのスレッド版がどうしてもわからないわ 1行読み込みは助けてもらったから、なんとかなったけど
>>662 スペース詰めなら
printf("%4s", str);
ゼロ詰めなら
一回Integerくらいに変換して
printf("%04d", new Integer(str));
>>662 System.out.print(str.substring(0, 4));
え? 違う?
おもろねー
ずーと気になっていたんだけど、スレッドのnotifyって何て読む?
他に読みようがあるのか
>>666 ,667
Javadoc読んでみたんですけど出来ないみたいです。
guiのテキストフィールドからユーザが指定したフォーマットを受け取って処理させたいんですが
dateなどはフォーマット{data, long}があるんですがテクスト{text, substring, 2, 5}とかは無いみたいなんで無理なんでしょうか。
自作する気力は無いんです・・・
だから型変換すればいいじゃん
673 :
デフォルトの名無しさん :2009/08/13(木) 12:30:29
俺のところでも動いた 色がなんかおかしいけど しかしIEはなぜ拡張子を勝手に変えるんだ
エスパーしよう。 java コマンドに -jar オプションは付けたか?
-jarオプションですか 少し調べてみます。ありがとうございます。
てめぇ少し調べただけで-jarの奥深さや醍醐味がわかるつもりでいんのか ふざけんなよごるぁ
そういうつもりで書いたんじゃないんですけど… 不快な気分にさせてしまったなら申し訳ないです
Javaアプリケーションで、try〜catch〜finallyを使用するときに、 tryの内側で、String str = "obon" を書いて、finallyの内側で strを使おうとするとstrが定義されていないということでエラーに なります。try〜catch〜finallyはそれぞれメソッドと同じように、 外側でString str などを定義しておかないといけないのでしょうか。
683 :
682 :2009/08/13(木) 14:23:04
>>681 どんな場合でも、 { 〜 } があるときは、その外からは中の変数は見えない
685 :
デフォルトの名無しさん :2009/08/13(木) 14:37:08
この糞暑さのせいで頭ん中が腐っちまうよな
たとえばSTRUTSフレームワークを使って開発したとして、 出来上がったあともフレームワーク上での利用になると思うんですけど、 もしも、STRUTSから他のフレームワークに変えるとか、もうフレームワーク 使わないようになったとか、そういうときに、今のフレームワークに 依存しないように作り変えるのは大変なような気がするんですけど、 どうなっているんでしょうか。
大変でしょうね がんばるしかないと思います
他のフレームワークに変える必要はないし
根本的に勘違いしているな
691 :
デフォルトの名無しさん :2009/08/13(木) 16:43:23
Javaを独習し始めたものですが 教本の初っ端からつまづいてしまいました。 コンパイルですが ’javac’は、内部コマンド外部コマンド、 操作可能なプログラムまたは、バッチ ファイルとして認識されていません。 となって、コンパイルできません。 まことに初歩ですが、ご教示お願いします。
パスが通って無いんだろ ググって自分で設定してみてくれ それができないならプログラム辞める方がオススメ
694 :
デフォルトの名無しさん :2009/08/13(木) 16:50:39
俺を馬鹿にするのは構わないが質問者まで馬鹿にしないように
String→Readerに変換する方法はないですか?
StringReaderというクラスがあるので、それを使う
いえいえ^^
>>699 こういうカスみたいな質問だけしゃしゃり出てくる死ね(笑)
>>699 馬鹿が
俺は「いえいえ^^」だけを言いに来ているだけで回答すらしていない
703 :
デフォルトの名無しさん :2009/08/13(木) 17:29:48
?
JavaってFileとか明示的にcloseしないと何か問題起こることありますか?
特に無いから安心して続けな
ここで質問きたかwwww
709 :
デフォルトの名無しさん :2009/08/13(木) 17:46:56
糞熱いともうグルグルだよな
710 :
デフォルトの名無しさん :2009/08/13(木) 17:51:44
Javaやってる連中ってのはこんなのばっかだ。
本当に下らない質問をさせていただきます System.out.println(this); System.out.println();でthisを入れることはないと思いますが、 hogeのインスタンスをprintlnに渡しているとうことでいいのですか? Hoge hoge = new Hoge(); hoge.test(); public class Hoge { public test() { system.out.println(this); }
713はJavaDocの意味を知らないに1,000,000ペソ
715 :
デフォルトの名無しさん :2009/08/13(木) 18:38:34
717 :
デフォルトの名無しさん :2009/08/13(木) 19:03:14
>>715 学歴なし乙
中学出たって?あれは学歴に含まれんよ
学歴コンプレックス持ってる者同士の争いは醜いったらありゃしない。
ぶっちゃけ俺よりスキルある奴はいないだろうなwwwwww
いえいえあなたにはかないません
722 :
デフォルトの名無しさん :2009/08/13(木) 19:33:50
他の板で質問させて頂きましたが、御教示ないようなので、いったん打ち切らせて頂き、あらためてこちらで質問させて頂きます。 javaにはperlのcpanやphpのピアーのようなモジュールを集めてあるサイトはないのでしょうか? スレ違いですがjavaに詳しい方はC言語にも詳しい方も多いと思いますので、CやC++のモジュールを集めたサイトもお教え頂ければ幸いです。
Javaに詳しい方はエロゲにも詳しいと思いますので この夏お勧めのエロゲを教えてください
724 :
デフォルトの名無しさん :2009/08/13(木) 19:43:28
糞あちーな 何とかならんのかこの暑さ
>>722 > javaにはperlのcpanやphpのピアーのようなモジュールを集めてあるサイトはないのでしょうか?
俺は今まで見たこと無い
>>725 追加
ってかcpanってモジュール集めてるだけなの?
あれってモジュール"管理"も含めてるんじゃなかったっけ
スレ違い。
728 :
デフォルトの名無しさん :2009/08/13(木) 20:13:17
>>725 ありがとうございます。
やっぱり見かけませんよね。
734 :
712 :2009/08/13(木) 22:30:35
Eclipse重すぎて使えないのだが、軽くて扱いやすいツールってないかな
java.netにホストされてる連中もたまには思い出してあげてください
同じクラス内で、インスタンスメソッドからインスタンスメソッドを呼ぶとthisが自動的に補われると習いました。 ということは、クラスメソッドを呼ぶと、自動的にクラス名が補われるのですか? 具体的には、 Class Hoge{ static void meth01(){} void meth02(){ meth01(); } } この場合、meth01();の呼び出しは、コンパイラが自動的に、Hoge.meth01();としてくれているのですか?
>>737 Yes.
>>735 好きなエディタとプロンプトでどうぞ。
高々10年前に戻るだけですから慣れれば快適ですよ。
>>737 そんなyouに問題です
以下のクラスのmainメソッドを呼び出した結果はどうなる
class X {
public static final void method_1() {}
public final void method_2() {}
public static void main(String[] args) {
X x = new X();
x.method1();
}
}
1.コンパイルできない
2.実行できるが例外が発生する
3.Xクラスのスタティックメソッド method_1 が正常に実行される
740 :
737 :2009/08/14(金) 02:37:38
>>738 ありがとうございます。すっきりしました。
でも個人的には、プログラマが明示的にthisやHogeを書かなければいけない仕様の方がスマートだと思うんですがどうなんでしょう。
コンパイラはチェックだけしてくれた方が、コードも分かりやすいし間違いも減りそう。
>>739 インスタンスに対してstaticメソッドを呼んでるので、推奨されないけど実行可能ってことで3が答えでしょうか。finalが気になりますがw
理解できないくせに文句だけ言うやつは氏ね
>>740 言語によってはthisを強制してる言語もある。
まぁJavaは良くも悪くも無駄を省いた言語だからね。
>>743 JavaはC/C++に合わせただけだよ、普及のために
初期構想時のJavaはもっと別物だった
javascriptやってると全部this付ける癖が
フォーカスが自分以外にある状態でキーが押されているかどうかを見ることは不可能でしょうか? NumLockなどの状態を見るToolkit.getLockingKeyStateのように Zキーが押されている状態かどうかを見たいのです。
>>746 CかなんかでDLL作って、
JNIで呼び出すしかないんじゃないか?
>>746 出来るかどうかわからんけど、
一番上のFrameにでもListenerを追加しておいて、それから教えてもらえば?
>>746 repaint()時にrequestFocusするか、全コンポーネントの
キーイベント受け取るしかないんじゃないか。
>>747 Cはほとんど触ったことがないので分かりません
これを気にCにも手を出すべきでしょうか
>>748 一番上のFrameとはどこを指すのでしょうか。私の言葉足らずでした。
連打支援ソフトをイメージしてもらえると分かるかと。Robotで一定時間ごとにクリック要求を出す。
すると自分以外がフォーカスを持ち続けるので終了用のキーを入力しても
連打ソフト側で入力を検知できなくて困っている。ということでした。
>>749 requestFocusを使ってみましたがどうもうまくいかないですね。
上記のようにフォーカスを常に他へ投げているので連打ソフト側で入力検知できる時間がわずかなのか、
そもそもフォーカスの奪取に失敗しているのか。
全コンポーネントのキーイベントを受け取るにしてもJava以外のソフトへ投げたフォーカスを会得することは可能なのでしょうか
751 :
デフォルトの名無しさん :2009/08/14(金) 11:31:16
ググレカスうざい
これはウザいな。 なんでだろう。
丁寧に書いているように見えてなんか偉そうな雰囲気だからだと思われる
つぎからつぎへとあとだしするからかな
いや違う違う 丁寧に書いてるようで「面倒だから丸投げ」って感じが漂ってるからウザイ
756 :
デフォルトの名無しさん :2009/08/14(金) 12:40:41
>>750 お前さ、ウザイから死んだら?
糞あちーの嫌だろ
InterruptedExceptionはsleep()をすると発生しますが この例外はスレッドをストップさせた時以外には、発生しないと考えてもよいのでしょうか?
758 :
デフォルトの名無しさん :2009/08/14(金) 14:03:26
>>757 スレッドに割り込みをかけるのはどんなのがあるか調べろ
>>750 つまり自分の作ったJavaアプリケーションに、
フォーカスがないときでもキーイベントを取得したい。
ってことだよな?
だったら、
>>747 の言うとおりDLL作ってグローバルフックするしかない。
自分にフォーカスがないときに、
キーイベントは取得できないから。
761 :
757 :2009/08/14(金) 14:38:47
参考書でtry、catchを学びましたが、なぜ必要なのかわかりません。 try〜catchの代わりに、if文で処理を書いてはいけないのでしょうか?
763 :
デフォルトの名無しさん :2009/08/14(金) 15:05:26
>>762 低能向けに分かりやすく言えば
RuntimeExceptionでも学んでろ
まぁ通常はキャッチすることは少ないが、ifとの違いは猿でもわかるだろう
猿にはわかんねーよ
>>762 ファイルから1文字読み込むごとにif文で毎回エラーチェックをする方がいいというわけですね
C/C++ならそりゃ俺もそうするが、正直あれは面倒い
>>763 ifとtry、catchにはそれなりの違いがあるっていうことでしょうか。
RuntimeExceptionについて勉強しながら、少しずつ理解していきたいと思います。
ご丁寧にありがとうございました!
>>765 tryならどこかに一度記述すれば済むんですかねぇ。
手持ちの参考書では例外について10ページぐらいしか説明がないので
詳しく書かれた本を探してみます。
ありがとうございました。
try-catchが言語エンジンにビルトインされたif-elseだと言えなくも無いところが難
10ページあれば十分でしょ あとは読むだけでなく、実際に動かしてるのかだな
threadはrun()の中身が終れば終了だよね?
うん
こうしてまたバグにまみれた製品が一つ世に出回るのであった
おまいら貴重なお盆休みに回答乙
catchは割り込みだろう
778 :
デフォルトの名無しさん :2009/08/14(金) 16:57:52
>>777 全く違う
初心者は黙ってた方が賢く見えるよ
※ただしイケメンに限る
俺は大丈夫だけどこのスレの大半を占めるブサメンはどう生きろと・・・
781 :
デフォルトの名無しさん :2009/08/14(金) 17:26:55
頭部を除いてイケメンな俺登場
と思ってるのは君だけさ
784 :
デフォルトの名無しさん :2009/08/14(金) 17:35:04
やっと出てきたイケメンからたずねたいことがあるが、 Javaで縦書きするには、AttributedCharacterIterator のTransformAttributeで左に90度回転させて、TextLayout を作った後に、TextLayoutを右に90度回転させて表示するみたいな ダサい方法しかないの?
ifで事足りるならなぜtry~catchがあるのか考えた方がいいね よほどのバカでない限り、forでもwhileでも同じでしょとはまず考えないはず
787 :
デフォルトの名無しさん :2009/08/14(金) 18:00:47
ごめん 俺は馬鹿だったよ〜
788 :
デフォルトの名無しさん :2009/08/14(金) 18:01:18
どうしようもねぇ糞スレに成り下がってるな
793 :
デフォルトの名無しさん :2009/08/14(金) 19:21:23
クソっぷりな流れにワロタw
795 :
デフォルトの名無しさん :2009/08/14(金) 19:44:25
暑いんだからさ、お前らむさくるしいんだよ 糞が沸騰したらどうすんだ?
796 :
デフォルトの名無しさん :2009/08/14(金) 19:46:19
孤独なんだね
798 :
デフォルトの名無しさん :2009/08/14(金) 20:24:40
お前ゲロ臭いぞ
お前ら 酔ってるだろ
私ったら罪な女ね・・・
今月からJavaの勉強始めて、委譲というものを勉強してるんだが、これってインターフェイスのことか?
中々いいところ突いてくるねダンナ
質問する時ぐらい敬語使えよ
やだよ
キモイ
>>802 委譲はインタフェースのことじゃないし、
ClassLoaderも全然関係ない。
>>802 処理を他のクラスに任せること。
技術的には正確には、自分自身(this)を委譲先のメソッドに渡さないと委譲とは言わないらしい。
継承は一般にカプセル化を壊すために、継承よりも委譲の方が好ましいとされる。
しかし、委譲はコードの記述量が多くなるため、
必要に応じて、継承から委譲へリファクタリングするのが望ましいと言えるだろうたぶん
>ClassLoaderも全然関係ない。 委譲しまくってるだろ。
コードの記述量が多くったってeclipseが自動生成してくれるから全然へっちゃら
そんなこと言うおまえは怠け者 一度テキストエディタで素の状態からシコシコやってみるといい
帰れ老害。
>>814 なんでわざわざ面倒くさいことやる必要あるんだ?
>>814 いまどきIDEを使ってないあなたを世界遺産に登録する。
818 :
デフォルトの名無しさん :2009/08/15(土) 10:05:19
いまでもエクリプスなんか使ってる奴は世の中の悪害か低学歴派遣
キャンプのときライター使うなとか言うのかな
じゃあIDE何使ってんの
C++Builder
どういうジョークだ。
はいはい、vimですかemacsですか?w
>>825 ググッたらどちらも昭和のテクノロジーだな。
一応擁護しておけば、RubyだのPythonだの使うならばエディタでも十分
828 :
デフォルトの名無しさん :2009/08/15(土) 10:44:39
お前ゲロ臭いぞ
低学歴派遣乙
むしょくおつ
あのー 今NetBeansつかってますが、ecllipseに変えたほうがいいですか?
中々渋いところついてくるねダンナ
先の展開が読めるなw
もうダメだこのスレ
住人が削除依頼するレスを決めて要請したらどうだろう。酷ければアク禁までいけるかも
待ってくれ、それは困る、謝るから
838 :
デフォルトの名無しさん :2009/08/15(土) 13:27:35
自分用にviライクなeclipseプラグイン作ってるんだけど公開したら需要あるかな?
841 :
デフォルトの名無しさん :2009/08/15(土) 13:40:22
会話をしているようで話が成立していない これがオブジェクト指向でいう再利用性である. 最近では、Twitterで会話の断片を自動投稿するスクリプトが流行っているが、 このスレではスクリプトではなく人が行うという、極めて原始的(Traditional)な方法で行われている. では今後も乞うご期待
ついったーbotは結構楽しいよ 作ってる方はね
JavaのシステムAからあるC言語で作られたシステムBに接続する要件があり、 JavaからJNIで通信を行う中間プログラム(C言語)を経由して、システムBに接続しようと考えています。 JNIを使用することでオーバーヘッドがかかるのなら、既存のシステムBを改修し、 SOAPで通信をすることも考えています。 JNIを使用するときのオーバーヘッドってどのくらいなのでしょうか? かなりトランザクション数は多いシステムです。
>>844 大事なことが省略されているぞい
> 中間プログラム(C言語)
の様に
# システムBに接続(方法は?)する要件
# JNIを使用することでオーバーヘッド(時間/データ量?)がかかるのなら
# かなりトランザクション数(何の?通信とどの程度かかわるの)
って説明入れないでだれが答えられる
>>844 JNIのオーバーヘッドを気にして、さらにオーバーヘッドが大きいSOAPにするという発想はどこからくるのか?
トランザクションもどこでどのように発生するのか不明
まともに検討できるSE探した方がいい
タイプセーフなenumのタイプセーフとはどういう意味ですか?
ググれ
enumの中に記述された識別子が,唯一の型を持っているという感じ 詳しくはぐぐる
851 :
デフォルトの名無しさん :2009/08/15(土) 15:00:14
>>692 >>693 さん、ありがとうございました jdkがインストールされていないことが原因とわかりました。jreではだめなんですね。 ところが最初の問題を解決できたと思ったら10ものエラーメッセージが 自分で対処してみますが、わからなかったらまた質問させてください。
public Abstract class Element<P extends Element,C Extends Element> implements Iterable{ public P getParent(){ ・・・・ } public C getChildAt(int idx){ ・・・・ } public void add(C child){ ・・・・ } public Iterator<C> iterator(){ ・・・ } } みたいな木構造をもつクラス(描画オブジェクト)を作成したいと思うのですが、子オブジェクトを格納するには 何を使ったらBestでしょうか。Vector,ArrayList・・などコレクションフレームワークのメンバーが多いの でどれを使っていいか解りません。
>>852 これってParent関係を除けばList<T>っぽいんだが…
とりあえずLinkedListでいいとおもうよ
補足ですが、Javaで帳票設計ソフトを開発しようとしています。 それぞれのノードは、帳票全体、ページ、レイヤー、グループ、 表、テキスト、罫線を表し、描画drawメゾッドを実装して自身 を描画します。描画順は、実装したListの順番です。
全然関係ねえワロタ
>>854 なん・・・だと・・・
じゃあ順序木を作ったほうがいいんでないかと思うが,
Javaに順序木の実装があったかなぁ…
順序木あった java.util.TreeMap あったにはあったが使い勝手が悪そう 要素の位置の特定が少なく,走査が主になるならやっぱりLinkedListでいいかな チューニングは後からでもできるし
またまた補足ですが。 子をもつElementの描画ルーチンは次のようになると思います。 public void draw(Graphics g){ if (!isVisible) return; for(C child:this) child.draw(g); ここに自身の描画 } ちなみに、マルチスレッドでは使用しない予定です。なんでもいいと いえば何でもいいと思いますが、ものが描画なので、速度とメモリの 点からベストなものを教えていただければと思います。
それなら当然B-Treeを自分で実装するしかないだろ。 Javaで用意されているのばかり使っていつまでも口あんぐり開けて怠けているとスキルの上達はないからね。
最終的にwindowsアプリケーション(exeファイル)を作りたいのですが、望洋さんの明解Javaを終えたところ、アプレットの知識がありません。 先述の目標を見据えたアプレットに関して良い本教えてください。
本の著者の出入りが目立つな
>>859 Tree構造自体は、852で実装しているつもりですが、お尋ねしたいのは
子オブジェクトを格納するコレクションは何が一番かということです。
たとえば子オブジェクトをVectorに格納するとすると。 public Abstract class Element<P extends Element,C Extends Element> implements Iterable{ private Vector<C> children; private P parent; public P getParent(){ return parent } public C getChildAt(int idx){ return children.get(idx); } public void add(C child){ children.add(child); } public Iterator<C> iterator(){ children.iterator(); } } となるわけで、木構造自体はElementクラスで実装されています。
Vector<笑>
自分で実装してるつもりになってるのが痛い
>>866 実装という表現がいけなかったと思いますが、Elementくらすは
木構造をとっていると思いますが何か?
Vector<笑> これ面白すぎるw
>>852 描画とデータ構造が一緒なのか?
まず破綻するだろうな
>>868 Vectorはあくまで例示です。862でのVectorの代わりでベストの
ものは何かということがお尋ねの趣旨です。
>>869 描画とデータ構造が同一でも破綻はしないと
思いますが。どうしてでしょうか?
SVGなども描画とデータ構造は一致していた
かと記憶していますが?
>>870 857も書いてるけどLinkedListでいいんじゃないの?
>>870 見る限りはSwingっぽいがもう少し基礎的なこと勉強してから出直したほうがいい
そんな描画ロジックはありえん
あとマルチスレッドで処理するのは普通
オチは糞アプリを作ってSwingは使えないとかそんなところだな
>>857 >>872 ありがとうございます。
>>870 そんな 描画処理はありえんとは、どこをさしていってらっしゃるの
でしょうか。以前作成したソフトはこのロジックで動いていますが、
あなたのおっしゃる基本的なことを教えてほしいものです。
ていうかswingがカオスになってるのが糞だろ
877 :
デフォルトの名無しさん :2009/08/15(土) 17:33:36
>>864 それはさいきこうぞうといってきこうぞうとはいわないざこ
実装するなら描画コンポーネントと帳票?モデルは別にするのがセオリーだな これで作成されていたとかこわいこわい クリックしてから描画終わるまでなにも受け付けないソフトな予感
誤解してらっしゃるようですが。Swingで実際描画する際は、表示用の JComponentのサブクラスにrootElementをもたせて、 public void paintComponent(Graphics g){ rootElement.draw(g); } とすれば何の問題もなく描画できると思いますが。なお、この際、拡大 や縮小表示などもありますので、g.create()してAffineTransform をする必要がありますが、それは省略しています。
880 :
デフォルトの名無しさん :2009/08/15(土) 17:39:50
>>878 オープンソースのドローソフトでJDrafterていうのが
あるんですが、ソースを解析するとデータモデルと描画
モデルが完全に同一です。あなたのおっしゃるような
症状はありません。
あなたは、いつの時代のパソコンを使ってらっしゃるの
のですか?
まさかPC-8801とかじゃないでしょうね。
淋しい素人同士の下らない言い争いは飽きた
883 :
デフォルトの名無しさん :2009/08/15(土) 17:57:36
JDrafterがどうしたって?w おっさんww
basic最強
LinkedList <うんこ>
教えて欲しいんだか、自分の糞技術を自慢したいのだか、どっちだ? どっちにせよカエレ
887 :
デフォルトの名無しさん :2009/08/15(土) 18:12:32
JaneeとかJDrafterとかは実用かどうかは別として作者のセンスはいいと思うよ。 センスがないと、いくらスキルを上げても糞を量産するだけだし。
888 :
デフォルトの名無しさん :2009/08/15(土) 18:17:04
javaなのはj2cだった 糞の相手したら俺まで鼻糞になりそうだった
盆の風に中てられて死ねばいいのにお前ら。
ここのスレの流れ、 質問→自分の知識をひけらかして質問者をばかに→逆に論破→罵倒の嵐 何とさびしいのでしょう。お盆というのに他にやることないのでしょうか。
糞という言葉が多いスレだね。 品がないか、変態的なのか、どっちか。
ここで質問した私がばかでした。 自分で試してみて最良なもの探します。 真剣にお答えいただいた皆様どうもありがとうございました。
全然初心者に優しくねえよなー 知ったかと底辺土方の罵り合いしかしてない
もしかして「タダ」で教えてもらおうとしてるでしょ?
>知ったかと底辺土方の罵り合いしかしてない なるほど。土方土方と言ってる人かな。 最初は普通に質問してた人が罵倒されて荒らし変貌していくんだね。
896 :
デフォルトの名無しさん :2009/08/15(土) 18:59:05
>もしかして「タダ」で教えてもらおうとしてるでしょ? 文句あるなら、スレ廃止しなよ 初心者歓迎などと書くなよ! 歓迎しないなら歓迎しないと書けよ タコ
先達はあらまほしきことなり でもこのスレには先達がいません もれなくクズ
まともに聞きたいなら2chはねーよなw ブログにでも書いとけ
javaアプレットは何故敬遠されているのですか? Yahoo gamesなどもJavaアプレットですが全く不満の無い操作性を実現しているように感じます。 そもそもJavaアプレットを否定したところでFlashなどで代わりが利くのでしょうか?(サーバとの通信とか)
もはやJavaは悪い意味で枯れた技術
まともに聞きたいならgooより2chにきまっている a1とa2が同じ型の配列で a1=a2; こうするとハードリンクみたいになりますか? この後、a1を変更するとa2の内容も変わってしまいますよね? b1とb2が同じ型の配列で b1[4]=b2[5]; や b1[4][7]=b2[5][0]; をするとディープコピーみたいになりますか? 多次元配列のディープコピーは、1次元目をループさせて b1[0]=b2[0]; b1[1]=b2[1]; ... こうするだけでよいですよね? この後、b1を変更してもb2の内容も変わらないですよね?
中々深いところ突いてくるねダンナ
906 :
デフォルトの名無しさん :2009/08/15(土) 19:51:04
SEX<NHK>[]=new SEX<NHK>[10]; みたいなのができないんだけど。 解決策教えてください。
>この後、a1を変更するとa2の内容も変わってしまいますよね? 変わらないよね
>>907 SEX<NHK>[] sex = (SEX<NHK>[]) ( new SEX[10]);
Jawaはワシが作った。 まだ2種か3種ぐらいしかバーションを公開していない時、ワシは JawaはOSに依存せず安全なプログラミング言語である と寝言を言った。 ワシは目を開いたまま寝てしまう癖がある。 寝言とはいえ間違った情報を黙って見過ごしていた自分は今地獄で後悔している。 正直なところ現在では、いやもうずっと何年も前から、JawaはOSに依存しないが、 Jawaアプレットはコンパイルする人が過去の全てのVMに対応したソースを 書かなくてはならないというアセンブラをはるかに越える開発時間を要するもの となっていた。 そこでプログラマは手を抜いて、クライアント側にVMのバージョンを限定させて 特定のVMに対してのみ動作するプログラムを作るようになった。 Write once, run anywhere. ワシの寝言だ。 Write once, debug everywhere. これが現実。 ワシは嘘をついたわけではない。 その寝言の内容は当時は間違っていなかったのだから。 今となっては安全性もありやしない。 サンドバッグ?バカじゃないのか?ワシは反対したのだが金に溺れた若い技術者が 少ない知識でCOMと連携するシステムをVMに組みこむことを許してしまった。 当時は100% Pure Jawaのみだった。だから安全であるということに間違いはなかった。 ワシは嘘をついたわけではない。 ワシがバグを作ったわけではない。プログラマが悪いのだ。 全てのVMに対応したソースを書かないプログラマが悪いのだ。
>>909 ありがとうございます。
やってみます!!
>この後、a1を変更するとa2の内容も変わってしまいますよね? Canonicalizationによるものでハードリンクという解釈でもまあよかろ
913 :
デフォルトの名無しさん :2009/08/15(土) 20:27:12
>>910 お盆に入るとさ、いままで安かったスイカが2倍以上の値段に跳ね上がるよね
サーブレットも終わったな。 一生懸命ソース書いてもサーバのVMのバージョンが変わったらもう動かない。
脅してるつもりか? 調子こいてるとお前のIP抜くぞ
919 :
デフォルトの名無しさん :2009/08/15(土) 20:37:40
>>916 どうやるの?!どうやるの!!
おちえて〜♪
まぁアプレットとかSwingを批判する奴は大抵自分で使ったこと無い奴だけどね
荒らしっぽいレスの中で以上のものに含まれていないのが
>>914 ですね。
通報しときます。
923 :
デフォルトの名無しさん :2009/08/15(土) 20:49:04
>>921 乙
劣等感が強いとこういうリスト作るのに時間かけちゃうんだよね〜
>>915 全てのVMに対応してないソース書くのが悪い
925 :
デフォルトの名無しさん :2009/08/15(土) 21:04:46
>>914 ,917,918
おまえはできそこない
おまえは初心者じゃなくてただのガラクタだ
SunですらJDK1.2以前とJDK1.3以降は全く別のものであるとか JavaとJava 2を区別しろと
Swingが醜過ぎてGTKがピカソに見える
Swingの悪口言う奴は使ったこと無い奴
import java.awt.*;
Swing<笑>
>>902 単にやるやつがいないだけ。JREのインストールという前提さえクリアできるなら、選択肢として悪いもんではない。
まぁ今時たかがブラウザ上で動くゲームのためにクライアントにインストールを強制するって時点で時代遅れだよね。 Flashもインストール必要だけど、広まりすぎてインストールしなきゃ見れないサイトがたくさんあるから例外という感じ。理不尽だが仕方ない。シェアがモノを言わせてる業界なのだ。
[注意] Javaアプレットは、Flashに取って代わられています。 Javaアプレットの代わりに Flash を使ってください。
Java2はJ/Directを抹消するためにだな・・・
アプレットとFlashじゃ全く分野が違うだろ 無知が誇らしげに語ってて馬鹿みたい
アプレットの嫌いなところは画面が立ち上がるまでに 口上が長い。そうは言っても以外や使っているサイトは多い。 ブラウザでアプレット使用不可にしてネット徘徊してみるとわかる。
ブラウザで動くアプレットってJavaアプレット以外に存在する?
JavaからCをJNIで呼んだとき、Cから返却できる戻り値って1つだけなのでしょうか。 また、Cでエラーが発生したときは、Javaにはどうエラーを返すのが一般的なのでしょうか?
JAVAとJAVA関連は、下位互換が弱いが 嫌がらせなのかな。
>>937 マジレスしてやるとアプレット以前にブラウザにプラグイン、テーブルレンダリング、埋め込みスクリプト、スタイルシートこれら全てを始めて実装したのはViolaWWWだ。
>>938 activexとかM$の戦略をわすれないであげてください
PCメモリも4ギガが標準になっているがeclipse程度の重さのソフトで メモリが何ギガになったらページングが発生しなくなるんだろう
ページファイル切ってしまえばいいじゃん あれはOSが勝手にやっちゃうんだし
俺の読みではMSWINDOWSは凋落が始まっており 新OSはGOOGLEが発表しそうな気がしている。
もうLinuxのディストリビューションが増えるのはいやだお(;ω; CentOSなんてしねってかしんだし(がっしぼか
>>939 適当なクラスをnewして値をたくさん詰めて返せばよい
引数で受け取ったオブジェクトの値を書き換えるという方法もある
エラーは戻り値で示してもいいし例外を投げてもいいし
>>945 切れる訳ないだろう。本当に必要な場合あるのに。
稼動しているすべてのソフトが消費している動的メモリを
人間が判断できないだろうが。
そういえばお家PCがWinXP32bitなのに6Gのメモリを搭載しました はみ出た部分はもちろんIEのキャッシュフォルダです
>>949 俺切ってるよ
+---仮想メモリ----
|ページング ファイルは、Windows が RAM のように使用するハード ディスク
|にある領域です。
|
| すべてのドライブの総ページング ファイル サイズ: 0 MB
....
かれこれ一年くらい
6Gといえば、20年足らず昔には6000万円だったな。
>>947 そうじゃない。逆に考えるんだ。
NetbookでLinuxやるならGOOGLE GNU/LINUX + CHROMEだけで済む世界が待っている。
メモリ+キャッシュバッファだけの回転体のないPCの出現を 待っている。
>>953 前提にも結論にもLinuxが詰んでてワロタ
なんで正統派BSDより亜種のLINUXが人気でたのか。
画面が黒いか明るいかの違いじゃね
>>956 ぶっちゃけ、古参が幅を利かせているプロジェクトより、新天地の方に参加したい。
JavaからC++を呼んで、メモリアクセス違反とかでJavaプロセス自体が死んでしまうことってよくありますか?
Webを征するにはシェアよりも下位互換 下位互換を捨てたJavaはWebでは見捨てられている 安心してバージョンアップできるのはFlashぐらい 悪炉鳩も下位互換はちゃんとなってるけどこれは最新にはしたくない 悪炉鳩は駄作だけど下位互換がちゃんとなってるから普及してるよ
>>960 いやだからほとんど動くって
1.5と1.6なんて数年間開いてるのに動くんだぜ
962 :
デフォルトの名無しさん :2009/08/16(日) 01:17:52
960氏の作品が動いてくれないんだろう
adobeは糞未満 まで読んだ
964 :
デフォルトの名無しさん :2009/08/16(日) 01:26:52
何が互換だアホかw flash中学生は死ね
>>960 > JavaはWebでは見捨てられている
このWebってどの技術を指してるんだろうや
いやわからない
966 :
デフォルトの名無しさん :2009/08/16(日) 01:29:05
>>956 オレはLINUXハッカーなんかよりBSDウイザードの方を信じるけどな
アプレットはまともな技術だと思うが色々とタイミングが悪かった。 一昔前に馬鹿みたいに流行ったのが逆効果になってる。 イケてるサイト作るにはアプレット使うべし、みたいな風潮が広まった時期があって、 でもそういう流行には必ずしばらくすると批判が巻き起こり、必要以上に忌み嫌われることがある。
だいたい正しくバックアップできるJAVA製バックアップソフト だいたい正しくメールを送受信するJAVA製メールクライアント だいたい正しく入出金できるJAVA製ウェブマネーシステム
BSDライセンスの方がマジ便利
>>959 アクセス違反とかをすれば普通に死ぬけど、
そんなことがよくあるようなプログラムは使い物にならん
国内でもJavaでの開発が多くなっているから 資産的にもかなりあるから もはや後戻りは出来ないのではないかな。 COBOLみたいになるかも。
COBOL使いの気持ちを理解するためにはJAVAの習得が近道
974 :
デフォルトの名無しさん :2009/08/16(日) 03:13:14
これはいいことをきいた
975 :
デフォルトの名無しさん :2009/08/16(日) 03:39:32
>>839 eclipseが既に廃れてからじゃ無理
977 :
デフォルトの名無しさん :2009/08/16(日) 03:58:32
スイングやらなきゃeclipseで十分じゃねえの?
いまやeclipseプラグインでチャットツールがある時代だぞ
eclipseは素晴らしいと思う
980 :
デフォルトの名無しさん :2009/08/16(日) 04:09:29
perlやruby、pythonにくらべて、javaは格段に難しい言語だと思うのですが、 私がバカだからでしょうか? 皆様もjavaは難しいと思われるでしょうか?
rubyが出来るのにjavaができないのはよくわからんな
982 :
デフォルトの名無しさん :2009/08/16(日) 04:15:03
java以外はちょっとしか触ってないからわからん 型の意識の有無が違うのか?
983 :
980 :2009/08/16(日) 04:37:19
>>981 、982
ありがとうございます。
データーベースのMYSQLから検索結果を書き出すにしても、
perlなら割と簡単に出来るのに、
javaだとtomcatが必要で、tomcat動かすのにXML設定しないといけないとか
(いまここで挫折)
Importだけで10行ぐらい書かないといけないのです。
importは皆様どこから探してくるのでしょう?
mysqlのパッケージとかクラスとか
mysqlでの例外処理とか
質問に纏まりがない
>>983 パッケージと(=クラスとかリソースがまとめられたもの)をプロジェクトのライブラリに突っ込むと、
importは必要に応じてeclipseが勝手に書いてくれます
例外処理もかってにeclipseが提案してくれます
書かなくてもいい言語からすると「めんどくさい」けれど、暗黙の了解が少ないので後で被害が少ないです
てかMySQLインスコしてMySQLのJDBCドライバダウンロードすれば環境整うのになぜTomcat?
987 :
983 :2009/08/16(日) 05:08:18
>>986 ありがとうございます。
eclipseがやってくれるのですか!
webでアパッチのもとでjava動かすにはtomcatが必要という固定観念があるのですが、いらないのですか。
webでアパッチなんて初耳だぞ!
989 :
983 :2009/08/16(日) 05:26:43
>>988 ありがとうございます。
あれ? webで
apache + perl
apache + php
とか使いません?
webという言葉が間違ってます?
サーバー?
990 :
デフォルトの名無しさん :2009/08/16(日) 05:28:56
javaでwebったらまぁtomcatだわな アパッチもありがちありがち ウェブロジックはtomcatのカスタム品だったかのう
991 :
デフォルトの名無しさん :2009/08/16(日) 05:31:04
>>989 まあ、最初はtomcat通さずにDB繋げてやってみたらどうだい
1.tomcatなしでDBアクセス
2.DBアクセスなしでtomcatでjavaを動かす
3.tomcatでjavaでDBアクセス!
4.アパッチとtomcat連携させて!!!!!!
こんな調子でよぉ
992 :
983、987 :2009/08/16(日) 05:33:22
いやTomcatはApacheに連携して使うほうがセキュリティが高い。
994 :
983、987 :2009/08/16(日) 05:35:46
>>991 ありがとうございます。
勉強してしてやってみます。
つまずいたらまたよろしくお願いします。
995 :
デフォルトの名無しさん :2009/08/16(日) 05:37:01
>>993 勉強になりました。ありがとうございます。
というか何を質問しているのかわからん
梅。 逆だろ。トム猫がウェブロジの簡易版。
998 :
デフォルトの名無しさん :2009/08/16(日) 05:57:26
>>997 同じじゃねーか
tomcat→富士通カスタム→機能こってりweblogic
次スレないね
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。