1 名前:デフォルトの名無しさん [2007/06/27(水) 07:23:27 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド102【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1180419689/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 次スレは>>980 あたりで。
949 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:41:37 ] >>948 java.lang.reflect.Field
950 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:42:49 ] >>948 private で宣言されたメンバは継承されない getter 用意してアクセスしろ
951 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 16:02:25 ] >>949 ありがとうございます 1.4でも使えますか?
952 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 16:08:39 ] 継承はされるだろ
953 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 16:22:11 ] >>952 java.sun.com/docs/books/jls/third_edition/html/classes.html#8.2 > Members of a class that are declared private are not inherited by subclasses of that class. > Only members of a class that are declared protected or public are inherited by subclasses > declared in a package other than the one in which the class is declared. 継承されてたら言語仕様に反する。
954 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 16:33:06 ] >>951 1.4でも使えるけど、セキュリティマネージャが許可しない場合は使えない。 例えばアプレットとかだと、Field#setAccessible() が許可されないはず。
955 名前:デフォルトの名無しさん [2007/07/26(木) 18:01:23 ] JAVAさんってC#くんが嫌いなんですか?
956 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 18:12:42 ] 普通設計段階でprotectedにするだろ。そういうの。 >>955 ゲイツ君がpure javaさんを嫌いで古臭いjavaさんの実行モデルを元に「・・・頼むよ君」と呼んできたのがC#くん。
957 名前:デフォルトの名無しさん [2007/07/26(木) 18:33:30 ] >>938 なんですが もう一度質問します。アプレットのメインクラスの中にある 描画処理・・・・たとえば↓ public void paint(Graphics g){ //描画処理 } を別のクラスに作って描画処理を丸々引き渡したいのですが 別のクラスから描画処理をやろうとするとウィンドウに描画処理が反映されません。 メインクラスからだと反映されるのですが・・・。 描画処理をほかのクラスに引き渡すにはどうしたらいいですか? たびたび質問してしまって申し訳ありません。
958 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 18:49:04 ] paintの引数のGraphics gを使えば、同じクラスだろうが別のクラスだろうが関係無くちゃんと描画されるハズ。 使ってるつもりなのに描画されないなら、多分つもりなだけで実際には使われて無いんだろう。 問題のコードをどっかにうpした方が回答がつきやすいと思うよ。
959 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:08:29 ] INT型の変数が2147483647を超えるとマイナスになってしまいますが、これを防ぐにはどうしたらいいものでしょうか
960 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:11:50 ] long
961 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:16:38 ] >>957 ソース
962 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:31:25 ] >>960 わかりました。long使ってみます ありがとうございました
963 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:41:33 ] すみません・・・ long b = Integer.parseInt(line); このようにlineを取り込むとlongでも小数点以下がなくなってしまいます longで取り込むにはどうしたらいいのでしょうか
964 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:48:59 ] longもintも整数を保持する型 doubleは小数を保持する型 ってかlongに変えたんならInteger.parseInt()使うなよ long用にはLong.parseLong()がある doubleを使う場合はDouble.parseDouble()とかもある これらを実行してどうなるか試してごらん
965 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 20:05:07 ] なるほど いろいろ種類があるんですね おかげさまで何とか動くようになりました!ありがとうございました
966 名前:デフォルトの名無しさん [2007/07/26(木) 20:10:25 ] >>958 できました ちょっとしたミスでした どもです^^;
967 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 20:42:31 ] >>947 親クラスの非staticなメンバに直接アクセスするような インナークラスだとstaticクラスじゃ無理。 たとえば、Iterableを実装するようなクラスがそれにあたる。 >>945 のケースだとOuterのthisを要求しているからstaticじゃ面倒だね。 そうじゃない場合、ただの別クラスがたまたまインナークラスになっている場合、 staticにしないとnewするのにいちいち、 new Outer().new Inner(); とかいうわからないコードを書かないといけないハメになる。 まあ、内部に非staticクラスしのばせるのもいいけど、 メソッド内にクラス定義書くのも乙だと思うけどな。かなり嫌われるけど。
968 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 21:00:58 ] JUnitをさわりだしたんだけど、これって基本的にpublicな関数・変数のみを 対象にするって感じでいい? 本当はprivateな関数のテストもしたいし、privateな変数にアクセスして チェックもしたいんだけど。 それともprivateを使わないで全部protectedにしてるとか?
969 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 21:16:31 ] >>968 JUnitは単なるツール どんなテストを行うかは別の問題
970 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 21:17:16 ] >>968 (1)リスク駆動で。気になったところからチェックする。 単純な getter や setter などトリビアルなものに対するテストを考えるくらいなら、 もっとやるべきことがあるはずだ、たぶん (2)protected にするくらいなら、パッケージプライベートで (3)どうせなら、テストファーストがお勧め テストを書こうとするだけで、モジュールの独立性や使い勝手などが 設計にフィードバックされる
971 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 21:59:18 ] >>956 わたしもprotectedにするべきだと思うんですが 提供されているソースをみるとそうなってなかったんですね
972 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:51:39 ] サーブレットについて質問。 コンテナに登録されているロール名の一覧を取得する 方法はない? あるロール名が登録されているかどうかを判別する だけでもいい。 コンテナはGlassfish v2 Beta 3だが、JEE汎用の方法が 嬉しい。
973 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:53:26 ] publicなり、protectedのテストがきちんとかかれていれば、privateメソッドもテストされるんでない? jcoverageとか使ってみれば?
974 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:33:53 ] for文が上手く動いてくれないです while(true){}でやるとちゃんと動くですが、どんな条件を入れても動いてくれません 他にもfor文とかの繰り返しはたくさんあるのですが、これだけ動いてくれません ■java 2 SDK SE v1.4.2_14 ■WinXP Home for文の中にprintlnを書いても全く表示されませんでした。 何が原因なのでしょうか? ttp://up.spawn.jp/file/up36584.txt
975 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:43:11 ] (´・ω・`)自己解決しました
976 名前:デフォルトの名無しさん [2007/07/27(金) 06:26:15 ] Java(Struts)で、10分に一回、あるテーブルのデータをチェックするという プログラムを作るにはどうすればよいのでしょうか? ずっと、そのチェックをはしらせときたいのです。
977 名前:968 mailto:sage [2007/07/27(金) 07:48:59 ] レスどーも >>969 一般的にどんな感じでテストしてるか知りたい。 >>970 JUnitは単体テストなので実装依存(ソースにべったり)のテストコードを 作るのか、あるいは外部から見える範囲内(内部での細かい動作まではテストしない) なのかを知りたいところ。 リスク駆動と言うのであれば、やはりprivateな変数・オブジェクトレベルでも チェックしたいかなーと思ったんだけど、普通はそこまではしないもんなのかな。 クラスや関数はパッケージローカルでいいとは思うけど。 >>973 とりあえずjcoverage見てみたけどよくわからんw IDEと連動しにくいツールは手を出しにくいかも。
978 名前:968 mailto:sage [2007/07/27(金) 07:51:55 ] ちなみに今はnetbeans使用
979 名前:968 mailto:sage [2007/07/27(金) 08:00:03 ] なんかこんなのあるな journal.mycom.co.jp/news/2007/07/20/006/index.html
980 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 08:47:09 ] 次スレ立てました。 【初心者】Java質問・相談スレッド104【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1185493592/
981 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 09:55:44 ] >>976 cron
982 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 10:33:24 ] Eclipseならプラグインがあったんだが。 >>979 ちょっと試してみたが、なかなか面白そうなツール。 要するに、テスト対象のコードをいじって、テストがそれを検出できるかを調べるツール。 カバレッジとはまた別の視点で単体テスト品質を計測するようだ。
983 名前:デフォルトの名無しさん [2007/07/27(金) 10:51:34 ] 文字コード変換について質問です。 開発環境の文字コードはEUCなのですが、 String sample= "さんぷる"; String sjSample = new String( sample.getBytes( "SJIS" ), "SJIS" ); 上の処理でSJISに変換されるんでしょうか? 変換された事を確認することってできないんでしょうか?
984 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 10:55:46 ] >>983 > 上の処理でSJISに変換されるんでしょうか? 一瞬だけ。 > 変換された事を確認することってできないんでしょうか? sample.getBytes("SJIS") の戻り値を確認。
985 名前:デフォルトの名無しさん [2007/07/27(金) 11:36:56 ] >>984 >一瞬だけ。 プログラム実行中は変換されたままですよね? >sample.getBytes("SJIS") の戻り値を確認。 戻り値を確認してみたら [B@ed0338 でした。 変換されたのはなんとなくわかりますけど、こういうもんですか?
986 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:43:53 ] >>985 > プログラム実行中は変換されたままですよね? no。すぐにGC可能状態になる。 > 戻り値を確認してみたら [B@ed0338 でした。 toString()が確認に使えるか、もチェックしてから使え。 sample.getBytes("SJIS") で戻ってきた配列の中身を確認しろ。
987 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:44:28 ] >>983 ,985 ソースコードを EUC で書いても、String は Unicode です getBytes("SJIS") で SJIS に変換されるけど、String に戻したらまた Unicode です
988 名前:デフォルトの名無しさん [2007/07/27(金) 12:33:10 ] >>986 配列の中身まではみていませんでした。 確認したら数値が入っていたので調べてみます。 >987 内部コードってやつですか・・・SJISで扱えるのはgetByte("SJIS")の戻り値だけってことですね。 すいません、質問を変えさせてください。 URLConnectionを使って相手先に複数のパラメータを送ろうとしているのですが、 日本語を扱うパラメータはSJISに変換することになっています。 この変換が上手くいかず、今はEUCで送ってしまっている状態です。 日本語パラメータをSJISで送るにはどうすればいいんでしょうか? SJISに変換した文字列を送ろうと思って最初の質問をしていました。
989 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:49:59 ] >>988 java.net.URLEncoder.encode("文字列", "SJIS");
990 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 15:02:02 ] 無料ホームページスペースを使って、JAVAアプリケットをおいてJAVAアプリケットから誰でもそのホーム ページのFTPに入ってパスワードを入れて ファイルを書き換えることはしてもいいんですか?
991 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 16:12:31 ] 規約嫁としか
992 名前:968 mailto:sage [2007/07/27(金) 16:35:58 ] JAVAアプリケット関係ない つーかJAVAアプリケットて何?w
993 名前:968 mailto:sage [2007/07/27(金) 16:37:02 ] あ、名前消すの忘れてたw
994 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:45:49 ] >>992 インストロールみたいなものじゃないの?
995 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:59:24 ] >SJISに変換することになっています。 分かりづらい地味な嫌がらせだな。せめてUTF-8にしてやればいいのにw >>990 鯖の規則読んで出来るか確認してjavaアプレットから どうやってFTP叩くかまで出来てからのご来場をお待ちしております。 じゃなきゃエスパー待ちになるぞ。
996 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 19:37:43 ] synchronized 指定されたメソッド呼び出しをしたら、 オブジェクトにたいしてロックが入るの? それともメソッドだけ?? class Hoge { public synchronized int hoge(){...} ... } Hoge hoge.hoge(); ↑ こうやったときに 別のスレッドからはhoge()だけ呼び出しできないのか、 それともhogeに対するアクセスは全部ロック解除待ちになるの?
997 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:40:28 ] >>996 hoge
998 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:40:39 ] synchronizedメソッドはsynchronized(this){}と同じ意味だった気がする だからhogeの他のsychronizedメソッドもロックされるな
999 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:44:21 ] メソッドは呼び出しできないけどオブジェクトにはアクセスできたと思う オブジェクトをロックする方法は別にあったはずだし
1000 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:45:07 ] ガチでか 勘違いしてたぜ(´ー`;)
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。