★★Java質問・相談スレッド142★★
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/11/19(金) 03:05:30JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/ [板をp2で開く]
Webプログラミング http://pc11.2ch.net/php/ [板をp2で開く]
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
(p)ttp://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド141★★
(p)http://hibari.2ch.net/test/read.cgi/tech/1286354820/
次スレは>>950あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
(p)http://www.wikiroom.com/java/
0685デフォルトの名無しさん
2011/01/08(土) 18:10:32気分で決める
だけど
> もしString[]を返すメソッドも欲しくなった場合を考えると
そんな無駄なことまで考える必要はない
実際にそのメソッドが欲しくなってから考えればいいことだ
0686デフォルトの名無しさん
2011/01/08(土) 18:32:56受け取った側がList<String>からString[]に変換するとコピーが1回ふえること
になりますよね?性能面でのデメリットが有るように思います.
>>685
String[]を返すメソッドが欲しくなってから追加した場合は、
List<String> getNames();
String[] getNameArray();
な感じで統一感が失われてなんか格好良く無い気がします.
つまり野暮だけど,メソッド名に型名を付けるのがベター気がしてきました.
(2) List<String> getNameList();
(2') String[] getNameArray();
そもそもJavaのシグニチャには返り値の型は含まれないので,メソッド名の命
名規則に統一感を出す為にはメソッド名に型名を書くのが良いのではないでしょ
うか?
0687デフォルトの名無しさん
2011/01/08(土) 18:39:37String getName();
は違和感を感じませんが,本当は違和感を感じなければならないメソッドでは
ないかという気がしてきました.よく考えてみるとこれはNameという概念は
Stringであるという設計上の了解が前提にあります.
もし,Nameという型があるならば,
Name getName();
も違和感を感じません.これはきっと正しいです.
そう考えれば今となっては
String getNameString();
は冗長には見えないのではないでしょうか?
つまり,メソッド名には返り値の型名を付けるのが設計上妥当だと言えるので
は?と思うのですがどうでしょうか.
0688デフォルトの名無しさん
2011/01/08(土) 18:51:270689デフォルトの名無しさん
2011/01/08(土) 19:09:40ライブラリだと困るじゃん
0690デフォルトの名無しさん
2011/01/08(土) 19:13:220691デフォルトの名無しさん
2011/01/08(土) 20:38:58String getName();
Name getName();
を混在させたければ、"Name"のところを工夫しろ
0692デフォルトの名無しさん
2011/01/08(土) 20:39:15すいません説明が足りなかったので少し加えさせてください
01|public abstract class ManyMethods
02|{
03| // final が付いていないメソッド宣言たくさん、抽象メソッドたくさん
04|}
05|
06|public class Concrete extends ManyMethods
07|{
08| // ManyMethods の public protected メソッドを組み合わせて使って
09| // 新しい機能を提供するメソッド get() を加えたいんだけど
10| // もしかしたら ManyMethods#get() という名前が 非 final で 宣言されてるかも
11| // オーバーライドしたら挙動が変わってめちゃくちゃ
12| // ManyMethods はメソッド多くて調べるの大変
12| // ライブラリのVerUPで ManyMethods#get() が加えられるかもしれないし
13| // 名前が重複したらチェックできたらいいな
14| public int get(){} // オーバーライドしたくないメソッド
15|}
という意味です
”オーバーライドしていること保障してくれる”アノテーションがあるのなら
逆の”オーバーライドしていないことを保障してくれる”アノテーションも
あるのかなと思って質問しました
正直ライブラリの構造があまり良くないというのもあるのですが;;
命名規約を変えるか、継承ではなく集約で実装したほうがよさそうですね・・
どうもでした
0693デフォルトの名無しさん
2011/01/08(土) 21:15:45名前をtypoってオーバライドしそこなうのは
親クラスを確認しないで継承してオーバライドしてしまうアホよりも
救済する価値が高い
0694デフォルトの名無しさん
2011/01/08(土) 21:30:140695デフォルトの名無しさん
2011/01/08(土) 21:31:29反変と下限境界(? super T)
この2つの組み合わせは別物ですか?
0696デフォルトの名無しさん
2011/01/08(土) 21:39:55ワンポイントで使うためで手抜きをするなら配列で
そこそこちゃんと作るつもりならListにする。
性能面の効率をなんとかかすめ取ることまで考えるなら、
引数にindexを渡して個々の値を所得するメソッドとサイズを返すメソッドを用意する。
配列は言語的にどうあがいても可変なので
フィールドから取り出したり格納するときに防御的コピーしなければならないのが確定
また、言語的に配列はジェネリクスと相性が悪い。
0697デフォルトの名無しさん
2011/01/08(土) 22:13:11継承関係にないクラスが大量にある場合は、あまりメリットがないような気がするのですが
0698デフォルトの名無しさん
2011/01/08(土) 22:15:530699697
2011/01/08(土) 22:29:07そうだったんだ
業務ではvisual studioを使っているんだけど、単体テストツールを使ったことがないんだ
だから、ちょっとjunitを使うとどんなメリットがあるか、わかってないんだわwww
0700デフォルトの名無しさん
2011/01/08(土) 22:34:33まず、自分が作ったクラスや関数のそれぞれについてテストコードを書いとく
特に、内部的に大きな変更を加えたようなケースで、過去のコードが全部期待通りに動くかを
まとめてテスト出来るのは便利
0701697
2011/01/08(土) 22:37:11Test Firstって考え方ですか
うちの会社でERPのカスタマイズしてるんだけど、
単体テストツール使っていなから普通の会社では使っているのかなって疑問があるわ
参考になりました。ありがとうございます
0702デフォルトの名無しさん
2011/01/08(土) 22:37:40だから.NETのアプリってクソばっかなんだな。
0703デフォルトの名無しさん
2011/01/08(土) 22:42:25MSの癖にJavaをサポートしてるのか?
エセJavaについてはシラネー
0704デフォルトの名無しさん
2011/01/08(土) 22:47:130705デフォルトの名無しさん
2011/01/08(土) 22:50:11うちの会社は田舎にある会社だから、社員がダメダメな他人ばっかりなんだよ
C#使っているのに、NUnitの存在すら誰も知らないし
そして、俺なんか未だにVB6/SQL Server200で開発してるしさ
0706デフォルトの名無しさん
2011/01/08(土) 23:00:11既存のプロジェクト+JUnit用の後付けテストコードって方法もあるから
テストファーストとはちょっと違うような。
どっちかっつーと自動テストか
0707デフォルトの名無しさん
2011/01/08(土) 23:40:35vimユーザなのでemacsキーバインドにはしたくないです
0708デフォルトの名無しさん
2011/01/09(日) 05:52:20個別にファイル消したのが悪いのかな
0709デフォルトの名無しさん
2011/01/09(日) 05:55:08その前にやったことが原因かもしれない。
0710デフォルトの名無しさん
2011/01/09(日) 13:55:46たとえばcom.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificatesです。
0711デフォルトの名無しさん
2011/01/09(日) 14:40:450712デフォルトの名無しさん
2011/01/09(日) 14:49:000713デフォルトの名無しさん
2011/01/09(日) 16:33:07プログラムの最初に
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.ImageObserver;
とあったのですが、これらってどういう意味ですか?
普段なら
import java.awt.*;
import java.awt.event.*;
と、これだけなのでこの二つの意味はわかるのですけど・・・
0714デフォルトの名無しさん
2011/01/09(日) 17:05:58* の意味がわかってないとか?
0715デフォルトの名無しさん
2011/01/09(日) 19:01:37それじゃ
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.ImageObserver;
これを
import java.awt.*;
import java.awt.event.*;
と置き換えることはできますか?
0716デフォルトの名無しさん
2011/01/09(日) 19:04:07が java.awt.* でも java.event.* でもないから無理だな
java.awt.image.* も付けないと
0717デフォルトの名無しさん
2011/01/09(日) 20:51:37import java.awt.*;
import java.awt.event.*;
java.awt.image.*
にしたら
class,interface,またはenumがないっていうエラーが出た・・・
0718デフォルトの名無しさん
2011/01/09(日) 21:01:55C#/C++は自由度が高すぎて、いろいろと考えるから疲れる
0719デフォルトの名無しさん
2011/01/09(日) 22:28:43× java.awt.image.*
○ import java.awt.image.*;
たぶん吊りなんだろうなー
0720デフォルトの名無しさん
2011/01/10(月) 00:31:40なんとかエラーが消えました。
ありがとうございます、でも今度はきちんと動作しなくなったけど・・・
0721デフォルトの名無しさん
2011/01/10(月) 03:34:12isを付けると思いますが、これのアクセサメソッド名はget(set)IsFirstになるのでしょうか?
0722デフォルトの名無しさん
2011/01/10(月) 03:37:50setFirst(boolean)か
setFirst()
resetFirst()
のどちらかにすることが多い
0723デフォルトの名無しさん
2011/01/10(月) 03:38:430724デフォルトの名無しさん
2011/01/10(月) 04:11:550725デフォルトの名無しさん
2011/01/10(月) 05:01:41動かしたい
これの通りにinput.jsp output.jsp etcのファイル作ったのに何故か動かない
http://www.atmarkit.co.jp/fjava/rensai3/struts02/struts02_1.html
ひょっとしてstrutsってeclipseとかで自動生成するものなのか?
0726デフォルトの名無しさん
2011/01/10(月) 07:15:22以前のバージョンとメニューが違う項目に移動してたりして使えないんだけど
その辺はメニューかたっぱしから開いて探すしかないの?
0727デフォルトの名無しさん
2011/01/10(月) 07:35:45パースペクティブがJavaになってないとかそんなんじゃね。
>>725
普通はblankプロジェクトから作る
まあ今更Struts1も無いと思うけどな
0728デフォルトの名無しさん
2011/01/10(月) 10:00:32お願いします。
0729デフォルトの名無しさん
2011/01/10(月) 10:02:460730デフォルトの名無しさん
2011/01/10(月) 11:02:23http://web.archive.org/web/20050218022640/http://www.netgene.co.jp/java/documents.html
0731デフォルトの名無しさん
2011/01/10(月) 11:53:20池袋のジュンク堂とか、椅子が置いてあって、JavaVMの本を座って読めるよ。
洋書も豊富にあるし。
0732デフォルトの名無しさん
2011/01/10(月) 11:56:520733デフォルトの名無しさん
2011/01/10(月) 11:58:250734デフォルトの名無しさん
2011/01/10(月) 12:01:58アメリカ辺りでは普通らしい。日本と流通のしくみが違うかららしいが。
0735デフォルトの名無しさん
2011/01/10(月) 12:02:20nunitって糞だろ
0736デフォルトの名無しさん
2011/01/10(月) 12:07:25見てるのはコード中のコメント
0737デフォルトの名無しさん
2011/01/10(月) 13:52:270738デフォルトの名無しさん
2011/01/10(月) 13:54:350739デフォルトの名無しさん
2011/01/10(月) 13:54:390740デフォルトの名無しさん
2011/01/10(月) 14:16:52普段はprivateなフィールドなんかにアクセスする訳なんてありえないと思います
結局、リフレクションは何に使われているんですか?
0741デフォルトの名無しさん
2011/01/10(月) 14:36:460742デフォルトの名無しさん
2011/01/10(月) 14:38:510743デフォルトの名無しさん
2011/01/10(月) 15:14:43プライベートフィールドにアクセスするだけの目的じゃないからな。
XMLに記述されたクラスのインスタンスの生成とか。
jspファイルに記述されたメソッドの
呼び出しとか。
プライベートフィールドをいじったのは、
.Netだけど、DBのコネクションが隠蔽されたがゆえに、
トランザクションを貼ることごできなくて、
それを回避するために使ったこと位かな。
0745デフォルトの名無しさん
2011/01/10(月) 16:43:19前にdao層の切り替え(ベンダごと)に使ったよ。
ベンダごとでsqlなりロジックなり捌き方をかえる必要があったから。
0746デフォルトの名無しさん
2011/01/10(月) 17:36:31beanからbeanとかmapに丸ごとコピーする関数を作る時とか
0747デフォルトの名無しさん
2011/01/10(月) 21:30:14別に池袋、梅田に限った話じゃないんじゃ
0748デフォルトの名無しさん
2011/01/11(火) 22:22:46おいしそうな標準ライブラリありますか。
0749デフォルトの名無しさん
2011/01/11(火) 22:33:440750デフォルトの名無しさん
2011/01/11(火) 23:09:300751デフォルトの名無しさん
2011/01/11(火) 23:37:12jbossやglassfishのようなコンテナは必須なのでしょうか?
例えばswingアプリケーションでhibernateを使いたい場合は
jbossも含めて配布する必要があるのでしょうか。
0752751
2011/01/12(水) 00:14:050753デフォルトの名無しさん
2011/01/12(水) 01:09:260754デフォルトの名無しさん
2011/01/12(水) 18:54:040755デフォルトの名無しさん
2011/01/12(水) 19:31:22簡単な四則演算プログラムを作りたい場合どういった手段を取ればよいのでしょうか。
理想として
入力となるテキストファイルは
1 + 2
出力されるテキストファイルは
3
となるようにしたいのですが・・。
そもそもmapreduceでやろうとしてるのが間違いなんでしょうか・・
どなたかご教示願います。
0756デフォルトの名無しさん
2011/01/12(水) 20:34:080757デフォルトの名無しさん
2011/01/12(水) 20:37:170758デフォルトの名無しさん
2011/01/12(水) 20:56:03とりあえず簡単なコンパイラ製作の本を読んで構文解析
構文解析できたら数式の評価はinterpreterパターンでも使えば簡単
0759デフォルトの名無しさん
2011/01/12(水) 21:03:40クラス1個あたりメソッド5〜10個と仮定すると、メソッド50〜100個ぐらいの規模でしょ。
JUnit使ってテスト書く練習するにはちょうどいい規模じゃね?
0760デフォルトの名無しさん
2011/01/12(水) 21:04:03レスどうもありがとうございます。
interpreterパターンググってみたら希望が見えてきました。ほんとに助かりました!頑張ります
0762デフォルトの名無しさん
2011/01/12(水) 22:30:39orgとかnetとかありますが、自分のパッケージをどうすればいいのか分かりません。
今作っているのは個人製作のアプリです。
0763デフォルトの名無しさん
2011/01/12(水) 22:59:09javaの場合はリポジトリに何を使っているのでしょうか?
0764デフォルトの名無しさん
2011/01/12(水) 23:06:29俺は自分の借りてるレンサバ用サブドメインの逆順を使ってる (jp.ne.xxxx)
ソースフォージとかにプロジェクト登録すれば、あれ使ってもいいんじゃないかと思う (jp.sourceforge.xxxx)
このようなサービスもある→ http://www.java-conf.gr.jp/wg_bof/package/about.html
そんなこと全然関係なしに好き勝手に付ける人もいる
0765デフォルトの名無しさん
2011/01/12(水) 23:08:24普通どっちもsubversion。vssは残念なプロジェクト。
0766デフォルトの名無しさん
2011/01/12(水) 23:10:59CVSでもSubversionでもgitでもmercurialでも好きなものをどうぞ
0767デフォルトの名無しさん
2011/01/12(水) 23:21:26少数開発ならSVNでもいい
0768デフォルトの名無しさん
2011/01/12(水) 23:43:01その残念なvss好きが多くて
とても困ってる。。
0769デフォルトの名無しさん
2011/01/12(水) 23:50:44好きなんじゃなくて老害がそれしか知らないとかそんなんじゃないの。
他を知った上で、あれが好きってのは信じられないわ。
0770デフォルトの名無しさん
2011/01/13(木) 00:31:28svnとかも触ってみてもらったり
説明したりもしたけど、vssに慣れてるから。って
言われるんだ。
まぁ、確かに結構古い人達(20年ランナーもいる)だけどね。
でもBTS使いたいからsvnに慣れてもらうけど。。。
0771デフォルトの名無しさん
2011/01/13(木) 01:35:240772デフォルトの名無しさん
2011/01/13(木) 07:57:110773デフォルトの名無しさん
2011/01/13(木) 10:26:03List<T> f(MYCLASS c){
List<T> result = new ArrayList<T>();
//cを使ってに追加する処理は省略
//nullチェックは省略
result.addAll(f(c.left));
result.addAll(f(c.right));
}
別メソッドを作って
List<T> g(MYCLASS c){
List<T> result = new ArrayList<T>();
return gimpl(c,result);
}
List<T> gimpl(MYCLASS c,List<T> result){
//cを使ってに追加する処理は省略
//nullチェックは省略
result.addAll(f(c.left));
result.addAll(f(c.right));
}
こうするのとでは速度的にはどちらが良いのでしょうか?
0774デフォルトの名無しさん
2011/01/13(木) 10:29:17List<T> gimpl(MYCLASS c,List<T> result){
//cを使ってresultに追加する処理は省略
//nullチェックは省略
result.addAll(gimpl(c.left));
result.addAll(gimpl(c.right));
}
0775デフォルトの名無しさん
2011/01/13(木) 10:37:36正しいのはこうじゃないですか
List<T> g(MYCLASS c){
List<T> result = new ArrayList<T>();
gimpl(c, result);
return result;
}
void gimpl(MYCLASS c, List<T> result){
//cを使ってに追加する処理は省略
//nullチェックは省略
gimpl(c.left, result);
gimpl(c.right, result);
}
0776デフォルトの名無しさん
2011/01/13(木) 10:48:05言いたいことを把握して頂いてありがとうございます。
質問したいことを別の形で言うと、
ArrayListを何度もnewすることのコスト増と
関数引数が増えてしまうことのコスト増では
どちらが大きくなるのかなというところです
0777デフォルトの名無しさん
2011/01/13(木) 10:52:15XP SP3、Firefox 3.6.13って環境で
http://www.dreamvisor.com/
このサイトにアクセスすると、通常表示されるはずの右側にある、銘柄名、現在値、前日比って部分が表示されません。
Javaのコンソールを開くと
java.io.EOFException
at java.util.zip.GZIPInputStream.readUByte(Unknown Source)
at java.util.zip.GZIPInputStream.readUShort(Unknown Source)
at java.util.zip.GZIPInputStream.readHeader(Unknown Source)
at java.util.zip.GZIPInputStream.<init>(Unknown Source)
at java.util.zip.GZIPInputStream.<init>(Unknown Source)
at com.dreamvisor.Chart.ChartData.loadData(Chart.java)
at com.dreamvisor.Chart.Chart.loadData(Chart.java)
at com.dreamvisor.Chart.Chart.run(Chart.java)
at java.lang.Thread.run(Unknown Source)
ってエラーみたいな物があるのですが、これの解決方法を教えてほしいです。
IEだと正常に表示されます。Firefoxをセーフモードで起動して観覧しても表示されませんのでアドオンなどのせいでは無いと思います。
他にはセキュリティソフトのON、OFFなども試しました。
0778デフォルトの名無しさん
2011/01/13(木) 10:55:54一般論でいってArrayListの生成とコンストラクタ呼び出しのコストに比べれば
メソッド引数が1個増えるのにかかる処理時間増加分の方がコスト安いと思うが。
0779デフォルトの名無しさん
2011/01/13(木) 11:05:16>そもそもmapreduceでやろうとしてるのが間違いなんでしょうか・・
そこじゃない。
hadoopってどんなところで使われているかわかってる?
大量のデータを分散して効率よく処理するためのツールで、
あなたの例を利用すると、
1+2+…って感じで、+で区切られた数字が収められた1TByteのテキストを、
10台のマシンで処理しようとするときに、各ノードにデータを分散させて処理させて、
その結果を集めてくるまでをやってくるしくみ。
構文解析とかそういうのは全くhadoopとmapreduceには関係ない。
0780デフォルトの名無しさん
2011/01/13(木) 11:07:31サイトの管理者に問題を報告して解決を依頼してください
0781デフォルトの名無しさん
2011/01/13(木) 11:08:56java.io.EOFException
End Of File例外ってのがでてる。
データ送る側のデータがおかしいんじゃないかな。
素直にIEつかってなさい。
0782デフォルトの名無しさん
2011/01/13(木) 11:28:52>>781
最初Firefoxのスレで質問したんですが
他の人は正常に表示されてるみたいです。
ですので自分の環境がおかしいと思うんでが・・・。
0783デフォルトの名無しさん
2011/01/13(木) 11:31:28Windowsの再インストールから始めろ。
0784デフォルトの名無しさん
2011/01/13(木) 13:24:35ここは開発者のためのスレッドであり板なので
PC初心者板あたりで聞いたほうがいいよ
■ このスレッドは過去ログ倉庫に格納されています