08/07/22 19:57:08
eclipseとは別で起動しているjavaに以下のデバッグオプションをつけ、eclipseからリモートデバッグできました。
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
通常リモートデバッグができれば、デバッグ中(変更対象にはブレークで止まっていない)にソースを変更し、
再度変更クラスに処理が入ると、変更が反映されるはずなのですが、反映されません。
何か設定ややり方が間違えているでしょうか?
JDK1.6です。
458:kokoro
08/07/22 20:00:59
はじめまして。java初めてなんです。
[課題]①1の倍数の和、2の倍数の和、3の倍数の和。
②たて10個、横10個の正方形を作る。色は交互にする。
緑、赤、緑、赤・・・・
赤、緑、赤、緑・・・・
緑、赤、緑、赤・・・
[期限]今週中ぐらい
[バージョン]java アップレット
[補足]for文と、if-else文を使って。
お願いします。
459:デフォルトの名無しさん
08/07/22 20:08:10
丸投げはここじゃねーよ
460:デフォルトの名無しさん
08/07/22 20:09:35
間違えました・・・
461:455
08/07/22 20:31:03
>>456
すみません、インポート部分ってどこですか?
462:デフォルトの名無しさん
08/07/22 20:34:01
TextSS
463:デフォルトの名無しさん
08/07/22 21:00:22
>>451
public DigitalWorldClock(String str)
{
this(str, str.lastIndexOf('.'));
}
private DigitalWorldClock(String str, int index)
{
super(
str.substring(0, index),
Float.parseFloat(str.substring(index+1))
);
}
464:463
08/07/22 21:16:33
コンストラクタが衝突してた 南無
465:デフォルトの名無しさん
08/07/22 21:27:54
>>457
即時更新不可のオプションでも入れているのでは?
466:デフォルトの名無しさん
08/07/22 21:46:46
>>461
読んで字のごとくimport部分だ
467:デフォルトの名無しさん
08/07/22 21:54:28
>>457
そんなことせんでも1.6ならclassファイル上書きで勝手に更新してくれるべ
468:455
08/07/22 22:09:33
>>466
import java.util.*;
import java.awt.*;
import java.io.*;
こういうことですか??
469:デフォルトの名無しさん
08/07/22 22:15:02
どこでシンボルが見つけられないんだ?
470:455
08/07/22 22:25:01
>>469
URLリンク(rg550.hp.infoseek.co.jp)
↑のclass DigitalWorldClock extends AbstractWorldClockの
private DigitalWorldClock(String c, float o) { super(c,o); }
と
public class Ex5dの
list.add(new DigitalWorldClock(str));
です
471:デフォルトの名無しさん
08/07/22 22:26:30
>>469
全部アップさせたほうがいいよ。
宿題スレで挙がってた奴だろ?
DigitalWorldClockがAbstractWorldClockのサブクラスで、
AbstractWorldClockがAbstractClockのサブクラスとか言う構成だったはず。
472:デフォルトの名無しさん
08/07/22 22:30:10
クラス設計おかしくないか?
Clockインターフェースを作ってWorldClockをextendsしてAbstractWorldClockを実装だろ。
473:デフォルトの名無しさん
08/07/22 22:33:01
言い忘れたがAbstractWorldClockが見つからないからコンパイルエラーが出てる。
AbstractWorldClockを用意してインポートしろ。
474:デフォルトの名無しさん
08/07/22 22:34:56
>>470
前に挙がってた
abstract class AbstractWorldClock extends AbstractClock
を見るに、
public AbstractWorldClock()
public AbstractWorldClock(String c, int o)
しか無い。
AbstractClockは未詳のままだが、要するに該当のsuperコンストラクタは無いのだろう。
定義されているのは、
public DigitalWorldClock createInstance(String str) {
だから、
DigitalWorldClock(str)
も存在しない。
475:デフォルトの名無しさん
08/07/22 22:44:49
結論、講師が屑
476:デフォルトの名無しさん
08/07/22 22:47:58
>>475
講義の途中の課題だからな、javaの全機能使うというより、abstractとかのコマなんだろ。
477:455
08/07/22 22:48:47
>>471->>474
言及いただいたとおり最近宿題スレでもお聞きした問題の続きです
教えていただいておいて恐縮ですが、正直さっぱりわかりません・・・
DigitalWorldClock(str) は使わないということですか??
AbstractClockは
URLリンク(rg550.hp.infoseek.co.jp)
ですが・・・
478:デフォルトの名無しさん
08/07/22 22:59:56
>>477
>>451でFloat.parseFloatが出てきたあたりでおかしくなったんだろ。
intで受けるコンストラクタしかないんだから、intにしとけばいい。
list.add(new DigitalWorldClock(str));
は、
list.add(DigitalWorldClock.createInstance(str));
というところ?
public DigitalWorldClock createInstance(String str)
を
public static DigitalWorldClock createInstance(String str)
にしとくのかな。
479:デフォルトの名無しさん
08/07/22 23:53:39
abstract教えてんのかファクトリメソッド教えてんのか分からんな。
480:455
08/07/22 23:57:15
>>478
ありがとうございます
Float.parseFloatは、ほかの課題からそのまま使ったのでそのままにしてました
教えていただいたところを変えてみましたが、
シンボルを見つけられません。
シンボル: コンストラクタ AbstractWorldClock(java.lang.String,float)
場所 : AbstractWorldClock の クラス
private DigitalWorldClock(String c, float o) { super(c,o); }
というエラーと、
static でない 変数 c を static コンテキストから参照することはできません
static でない 変数 o を static コンテキストから参照することはできません
というエラーが出てコンパイルが通りません。
>>451のファイルを書き換えたのですが、それじゃダメだったんでしょうか・・・?
481:デフォルトの名無しさん
08/07/23 00:05:03
>>479
そもそも、>>470のmainに文字列を引数にしたコンストラクタが出てこないし、
もう課題からそれてなにをやるべきかわからなくなっているのでは?
482:デフォルトの名無しさん
08/07/23 00:14:11
>>480
>private DigitalWorldClock(String c, float o) { super(c,o); }
上位クラスにfloatを引数にしたのコンストラクタが無いんだから、floatを使ってるのが間違いなんでしょ。
上位クラスにあわせてintに書き換える。
>static でない 変数 c を static コンテキストから参照することはできません
>static でない 変数 o を static コンテキストから参照することはできません
cとoはsuperに任せて設定させたいという主旨のはずだから、
String c = str.substring(0, index);
int o = Integer.parseInt(str.substring(index+1));
とか。
483:デフォルトの名無しさん
08/07/23 00:40:38
java言語で
(自分でキーボードで入力する)12+13*13/11-99=
みたいな電卓プログラムを作りたいのですが、調べても見つからず、まったくわかりません。
計算順位は*、/、+、ーでやりたいと思ってます。=で計算結果を出力です。
どなたか教えていただけませんか?
484:455
08/07/23 00:42:04
>>482
floatだとダメなんですね。
扱うデータに小数点ついてたので、ついてなきゃだめだと思ってました。
>static でない 変数 c を static コンテキストから参照することはできません
意味がわかりました、ありがとうございました。
それで、何度も何度もすいません、コンパイルは通ったけど実行できませんでした。
Exception in thread "main" java.lang.NumberFormatException: For input string: "+0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at DigitalWorldClock.createInstance(Ex5d.java:29)
at Ex5d.main(Ex5d.java:47)
こういうエラーが出るので調べたら「アプリケーションが文字列を数値型に変換しようとしたとき、文字列の形式が正しくない場合にスローされます」とありました
読み込むデータに、小数、正の数、負の数、ゼロ、があるのですが、それが問題なのでしょうか?
でもFloatにするんだとダメですよね・・・
485:デフォルトの名無しさん
08/07/23 00:54:55
>>484
1.+0と言う表記を使わない
2.parseFloatで数値化してから(int)でキャスト
3.先頭の+記号を除外するコードを書く
いくらでも方法はあるのでは。
486:デフォルトの名無しさん
08/07/23 00:55:47
>>483
Javaではけっこう手間がかかる
方針としてはたぶんこんな感じ
1.与えられた式を後置記法に変換する
2.左から式を読んでいく。数値だったらスタックに積み、
演算子だったら積んであった数値をスタックから出して計算する
ちょっと複雑。詳しくは「後置記法」あたりで検索してみては
他にはJavaと連携できる別の動的言語を呼び出して、evalに通すとかって方法も無いではない
487:483
08/07/23 01:04:25
>>486
ありがとうございます。とりあえずやってます!
488:455
08/07/23 01:38:36
>>458
ありがとうございます、2でやってみたらとりあえず動きました!
本当にありがとうございました!
489:デフォルトの名無しさん
08/07/23 04:07:22
>>483
逆ポーランド記法 RPNでググレ
490:デフォルトの名無しさん
08/07/23 05:00:26
カッコに対応しなくていいなら、逆ポーランド使わなくとも2-passで、
1. 左から順に取り出して、乗除算だけ計算
2. 左から順に取り出して、残った加減算を計算
でいいじゃん
491:デフォルトの名無しさん
08/07/23 07:53:34
JavaCC
492:デフォルトの名無しさん
08/07/23 10:06:00
URLリンク(www.google.co.jp)
Googleで計算してHTMLをパースして答えを取り出すのはどう?
493:デフォルトの名無しさん
08/07/23 10:36:12
グローバルフィールドとしてのオブジェクトの参照は何バイトくらい使用しているのでしょうか?
例を示すと下のような感じです。
class Hoge{
Hage h; // これのサイズ
}
class Hage{
}
特にメモリ云々を気にしている訳ではないのですが気になったので質問させていただきました。
494:デフォルトの名無しさん
08/07/23 12:27:52
>>493
調べたわけではないが内部的にはレジスタ長かポインタの大きさかな。
h に格納されるオブジェクトがヒープをどれだけ食ってるかは知らない。
495:デフォルトの名無しさん
08/07/23 12:52:39
オブジェクトヘッダの推定量なら、ちょっと古いけど
URLリンク(groups.yahoo.co.jp)
あたりが参考になるかも?
496:デフォルトの名無しさん
08/07/23 14:06:52
プロファイル取った方が確実
497:デフォルトの名無しさん
08/07/23 18:41:53
最近SwingのJTableからMySQLのTableの更新、追加、削除をするよう、それぞれプログラムを書いてみました。
お伺いしたいのですが、みなさんはこんな用途にSwingは使われますか?
なにかもっとデータベースのプログラムの用途に向いたものがありそうな気もして、ご質問させてもらいます。
498:デフォルトの名無しさん
08/07/23 20:26:02
・JavaDocの書き方について
自分で作ったクラスにつけるJavaDocの書き方に定石ってありますか?
英語でなら以下のサイトにあるのですが、その日本語版があれば教えていただきたい。
Requirements for Writing Java API Specifications
URLリンク(java.sun.com)
499:デフォルトの名無しさん
08/07/23 20:44:23
JavaDocの書き方
・忘れんな
・日本語でおk
・メンテ汁
くらいじゃね
500:デフォルトの名無しさん
08/07/23 22:09:39
言語が違っても書く内容は同じでいいでしょ
501:デフォルトの名無しさん
08/07/23 23:18:18
int A = 123;
と定義して、Aが数値型かどうか判断するとき
どうすればいいですか?
502:デフォルトの名無しさん
08/07/23 23:20:11
Javaでそれを判断しなければならない状況があるのか?
503:デフォルトの名無しさん
08/07/23 23:22:45
>>501
こうか?
public class Test{
static boolean isNumber(Object o) {
return o instanceof Number;
}
public static void main(String[] args) {
int A = 123;
System.out.println(isNumber(A));
}
}
504:デフォルトの名無しさん
08/07/23 23:29:24
>503
ありがとうございます!!
解決しました。
isNumberを使えばよいのですね。
結構ググッたけど見つけられませんでした。
505:デフォルトの名無しさん
08/07/23 23:31:06
なんともはや
506:デフォルトの名無しさん
08/07/23 23:32:22
503氏は見やすいように分離しただけで、
処理のキモはinstanceof演算子ね
507:デフォルトの名無しさん
08/07/23 23:36:05
ああ、そうですね><
isNumberは自作ですね。
instanceofは知ってたんですが、こういう
使い方は気づきませんでした。
508:501
08/07/23 23:46:52
さっきの続きですが、
インスタンスを生成せずに型を調べる方法はありますか?
509:デフォルトの名無しさん
08/07/23 23:52:24
>>508
ない。
インスタンス生成せずに型を調べたいケースってのも思いつかんが。
510:デフォルトの名無しさん
08/07/23 23:53:02
>>508
いったい何をしたいんだ。
そんなことが必要になる状況は、ふつうないぞ。
511:デフォルトの名無しさん
08/07/23 23:53:03
>503のってAをボクシングでIntegerに変換してからinstanceofしているわけで、なんか違うんじゃね?
512:デフォルトの名無しさん
08/07/23 23:53:56
プログラマが知っておくべきことだろそれは
513:デフォルトの名無しさん
08/07/23 23:54:41
>>508ね
514:デフォルトの名無しさん
08/07/23 23:55:47
あれだ、Eclipseでも使えってのが回答か?
515:508
08/07/23 23:56:33
具体例をあげると、
コンソールなどから入力された値が、文字なのか数値なのかを
判定したいんですけどこのような場合はどうすればよいでしょうか?
516:デフォルトの名無しさん
08/07/23 23:58:58
すみません。コンソールからの入力は確実にString型なので例が悪かったです。
コンソールから入力された値が本当にString型なのか確認したいときは
どうすればよいでしょうか?
517:デフォルトの名無しさん
08/07/23 23:59:36
>>515
それは「値の型」を調べたいんじゃなくて、コンソールから来た「文字
列」が数字を表現したものかどうかを調べたい、ってこと。
518:デフォルトの名無しさん
08/07/23 23:59:38
String str = input();
if(input.match("[0-9]+")) {
System.out.println("数字です");
}
519:デフォルトの名無しさん
08/07/24 00:00:29
>516
戻り値がStringな時点でString以外はねーよ
520:デフォルトの名無しさん
08/07/24 00:02:32
>>517
はい。そういうことです。
確かに書き方が悪かったです。
みなさん、申し訳ないです。
>>518
なるほど。ありがとうございます。
それのことです!!
521:デフォルトの名無しさん
08/07/24 00:03:04
ていうか自分でパーサ書けよ。それくらい
522:デフォルトの名無しさん
08/07/24 00:04:37
>>519
確かにそうなんですけど、無意味ですがやらなければならないんです。
523:デフォルトの名無しさん
08/07/24 00:13:10
数値型かチェックした後に数値に変換するんだろうから、
変換ロジックと互換性のある検査ロジック使わないと駄目だよ。
例えば、Integer.parseIntでとNumberFormat.parseでは受け入れる文字列に違いがあるよ。
524:デフォルトの名無しさん
08/07/24 00:23:21
なるほど。参考になりました。
アドバイスを考慮してコーディングを進めていきます。
525:デフォルトの名無しさん
08/07/24 00:26:43
>>520
それは「書き方が悪い」んじゃない。その2つは全く違う概念だ。
526:デフォルトの名無しさん
08/07/24 00:36:03
そうですね。アドバイスを頂く過程で気づきました。
最初は、オブジェクトの型を調べなければならないと思っていました。
でも実は型を調べるのではなく、String型の中身が数値なのか文字なのか
ということを調べることだったんですね。
527:デフォルトの名無しさん
08/07/24 00:39:12
要するに自分が何したいか分かってないと
528:デフォルトの名無しさん
08/07/24 00:44:41
そうですね。分かったつもりになっていました。
以後気をつけなければならないな、と思います。
529:デフォルトの名無しさん
08/07/24 08:10:49
そういう時に例外使うんじゃないの?
530:デフォルトの名無しさん
08/07/24 08:31:51
genericsの質問です。
自己参照する型はどう書くのでしょうか?
つまり、
void someMethod( java.util.List<X> x ) {
x.add( x );
x = x.get( 0 );
}
がエラー/警告を吐かないようにするためにはXに何を書けばいいのでしょうか?
531:デフォルトの名無しさん
08/07/24 09:00:54
これでどうよ
<X extends List<X>> void someMethod(X x) {
x.add(x);
x = x.get(0);
}
532:デフォルトの名無しさん
08/07/24 10:45:30
javaソースからjavadocの要素を取り出してエクセルに出力するツールを作成したいのですが、
エクセルはPoiを使用する予定ですが、javaソースからjavadocの要素を取得するAPIが分かりません。
標準API問わず、何か便利jarかAPIありますでしょうか?
533:デフォルトの名無しさん
08/07/24 10:59:04
doclet API 使えば?
534:デフォルトの名無しさん
08/07/24 11:36:26
画像を読み込みたくて
BufferedImage img = ImageIO.read(new File("aaa.jpg"));
を書いたのですが、コマンドプロンプトからは実行し読み込めるのですが、
Eclipseのデフォルトパッケージに入れたものからは読み込めません。
絶対パスで指定すればできるのですが、相対パスで書くにはどうすればいいでしょうか。
535:デフォルトの名無しさん
08/07/24 12:14:31
相対パスってのはカレントディレクトリが基準なんだが、カレントディレクトリがどこかは確認したか?
System.out.println(System.getProperty("user.dir"));
536:デフォルトの名無しさん
08/07/24 12:23:34
>>535
解決しました。
ソースのフォルダに画像が入っていたため読み込まれなかったようです。
また、コマンドプロンプトで実行したときはカレントディレクトリが
ソースのフォルダになるため読み込めたようです。
ありがとうございました。
537:デフォルトの名無しさん
08/07/24 15:07:54
外部コマンド(exe)を実行するために下記のような
ソースを書いているのですが
連続する2つ以上のスペースが一つにまとめられてしまいます。
Runtime.getRuntime().exec(strCmd);
これを正常に実行するにはどうしたらよいでしょうか?
よろしくお願いいたします。
538:デフォルトの名無しさん
08/07/24 15:49:31
>>537
strCmd の中身がどんなときまとめられて、
まとめられることでどんな影響があるのさ
539:デフォルトの名無しさん
08/07/24 15:59:12
>>538
すみません。事故解決しました。
String strCmd[] = new String[3];
strCmd[0] = "hoge.exe";
strCmd[1] = "hoge1";
strCmd[2] = "hoge2";
Runtime.getRuntime().exec(strCmd);
としたらOKでした。
540:デフォルトの名無しさん
08/07/24 21:17:10
>>483 >>492
import java.io.*;
import java.net.*;
public class CalcClient {
public static void main(String[] args) throws IOException {
String answer = calc("12+13*13/11-99= ");
System.out.println(answer);
}
public static String calc(String target) throws IOException {
URL url = new URL("URLリンク(www.google.com)" + URLEncoder.encode(target, "utf-8"));
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
conn.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String response = "";
for (String line; (line = br.readLine()) != null; ) response += line;
br.close();
conn.disconnect();
return response.replaceAll("^.*?(<h2 class=r>.*?<b>.*=\\s*(\\S+?)\\s*</b></h2>).*?$", "$2");
}
}
541:デフォルトの名無しさん
08/07/24 23:07:52
定期的に上がるネタだな
542:デフォルトの名無しさん
08/07/25 00:04:20
質問させてください
今度、業務でJavaでGUI作ることになりました
会社から勉強しとけと言われているのですが、ここだけは読んでおけというウェブページ(できれば日本語)もしくは書籍はありますか?
ちなみにSE6使うそうです
当方のスキルはJava関係だとSE6使ってwebアプリのロジックとservletまわり書いていました
よろしくお願いいたします
543:デフォルトの名無しさん
08/07/25 00:09:33
Tutorialは一通り読んだ方がいいですね。
というかそれ読んで、自分でこなしたらそれだけで基礎知識としては十分だと思います。
544:デフォルトの名無しさん
08/07/25 00:37:17
質問させてください
Eclipseだけはあるのですが、JDKは絶対に必要ですか?教えて下さい
545:デフォルトの名無しさん
08/07/25 00:38:17
eclipseスレへいけ
546:デフォルトの名無しさん
08/07/25 14:51:49
POI(HSSF)で、特定のセルにドロップダウンリストを
作りたいのですが作り方がわかりません。
そもそも作れるのかどうかも模索中なのですが・・・。
テンプレートファイル側でドロップダウンリストを
用意していたのですが、読み込ませた後でそのまま
出力したら、ドロップダウンリストが無効(消滅)
していたので、対応してないのかな?とは思って
いるのですが・・・
稚拙な質問で申し訳ありませんが、どなたか救いの手を・・・
547:デフォルトの名無しさん
08/07/25 14:59:06
質問というか意見を伺いたいのですが、
Swingでアプリケーションのフォームを作成する場合に
Model-View-Presenterパターンを適用したとすると、
TableModelはM/V/Pいずれの所有物とすべきですか?
548:デフォルトの名無しさん
08/07/25 15:04:15
モデル
549:デフォルトの名無しさん
08/07/25 15:13:46
何とかパターンが2重構造になってると思えばわかりやすいかもね。
狭い目で見るとモデルで広い目で見ると別のグループに入ってる。
550:デフォルトの名無しさん
08/07/25 16:04:57
モデルとJTableを繋ぐアダプタってあたりでどう
それってプレゼンタかな
setValueというイベント(?)も来るし
551:デフォルトの名無しさん
08/07/25 22:11:41
>>547のModel-View-Presenterパターンって、
Model-View-Controlerパターンと別物?
ちょい気になったので教えて。
552:デフォルトの名無しさん
08/07/25 22:36:46
Presentation-Service-Persistence と混ざっているんじゃね?
553:デフォルトの名無しさん
08/07/25 22:48:22
>>551
ぐぐってみたが、別物っぽい。ただ、数分眺めただけなので、すぱっと違いのわかるページは見付けてないんだけど。
554:デフォルトの名無しさん
08/07/26 05:34:54
Modelの更新通知の責務がControlerにあるMVCじゃね?
555:デフォルトの名無しさん
08/07/26 08:25:07
mainのみのシングルスレッドでウェイトをかけるには、どうしたらいいのでしょうか
マルチスレッド化してしまうのも考えたのですが
556:デフォルトの名無しさん
08/07/26 10:49:26
5秒待つとかそういうことか?
それなららばThread.sleep(5000);
557:デフォルトの名無しさん
08/07/26 11:13:35
mainに書こうとするとThread.sleepじゃ駄目じゃなかったか?
自身のスレッド取得してsleepとかだった気がする・・忘れた・・
558:デフォルトの名無しさん
08/07/26 12:35:48
javamailでhotmailへ送信ができません。
Properties props = System.getProperties();
// SMTPサーバーのアドレスを指定
props.put("mail.host","hotmail.com");
Session session=Session.getDefaultInstance(props,null);
MimeMessage mimeMessage=new MimeMessage(session);
// 送信元メールアドレスと送信者名を指定
mimeMessage.setFrom(new InternetAddress("asde@hotmail.com","七誌","iso-2022-jp"));
// 送信先メールアドレスを指定
mimeMessage.setRecipients(Message.RecipientType.TO,"hogehoge@hotmail.com");
// メールのタイトルを指定
mimeMessage.setSubject("Hello World JavaMail","iso-2022-jp");
// メールの内容を指定
mimeMessage.setText("testtest","iso-2022-jp");
// メールの形式を指定
mimeMessage.setHeader("Content-Type","text/html");
// 送信日付を指定
mimeMessage.setSentDate(Calendar.getInstance().getTime());
// 送信します
Transport.send(mimeMessage);
ご教授お願いします
559:デフォルトの名無しさん
08/07/26 14:19:32
stacktraceでおk
560:デフォルトの名無しさん
08/07/26 15:46:36
String を int に変換するのってどうしたらいいんですか?
561:デフォルトの名無しさん
08/07/26 15:56:19
>>560
入門書1冊やってから出直してこい
562:デフォルトの名無しさん
08/07/26 16:34:00
やさしいjavaにはそんな方法書いてなかったきがする。あれはダメだ
563:デフォルトの名無しさん
08/07/26 17:04:30
やさしい(ところだけ)Javaだからな
564:デフォルトの名無しさん
08/07/26 20:05:07
Stringからintは文字入力当たりで乗ってそうな気がするが・・
565:デフォルトの名無しさん
08/07/26 22:39:18
教育は国家の土台なのに。
これじゃ砂上の楼閣だ。
566:デフォルトの名無しさん
08/07/26 23:05:00
やさしいjavaもやさしいC++も書いてあることかわらないからな
567:デフォルトの名無しさん
08/07/26 23:32:40
どんな頭してんだよw
568:デフォルトの名無しさん
08/07/27 00:16:27
プログラム言語Javaを読んでて、finalがスレッドで特別な意味を持つ、って感じの説明の意味が分からん。
あるスレッドでStringをクラスのstaticフィールドに書き込んで、その後に別のスレッドからそのフィールドを
見ても、書き込んだ値が見えることが保証されない。でも、finalにすれば保証される。
不変オブジェクトだから同期が必要ない、と言うのはプログラマの誤解だ。
みたいなことが書いてあったが、値を変えない見るだけの変数なら、同期なんて必要ないし、
普通、他の言語でも同期なんてしないよな?ちがうのか?
569:デフォルトの名無しさん
08/07/27 00:21:01
>>568
値を変えないで見るだけ、というのは初期値の0から変えない場合に限る
他のスレッドからは、変更する前の値である初期値の0が見える場合がありうる
URLリンク(www.ibm.com)
URLリンク(www.ibm.com)
570:デフォルトの名無しさん
08/07/27 00:49:43
>>568
そう簡単な話じゃないってこったw
571:kptdEsCUpYdeJPfdZFS
08/07/27 00:52:28
hQS1UB <a href="URLリンク(ejrfsnyjpyid.com)">ejrfsnyjpyid</a>, [url=URLリンク(fyhfhnswsdjf.com) [link=URLリンク(mevudxopwjek.com) URLリンク(jwqpsqacgcmw.com)
572:デフォルトの名無しさん
08/07/27 01:19:57
あるスレッドで書き込んだものが別のスレッドで見えるのが保証されるのは
何らかの方法で同期化された場合だけ
573:デフォルトの名無しさん
08/07/27 02:10:13
Javaでファイルの移動を実行させる場合には、みなさんは、どのメソッドを使ってますか?
(コピーではなく移動)
574:デフォルトの名無しさん
08/07/27 02:12:13
File#renameTo()
575:デフォルトの名無しさん
08/07/27 02:12:53
>560
URLリンク(www.nextindex.net)
StringをvalueOf()でInteger型にして、
Integer型からparseInt()でint型にする
576:デフォルトの名無しさん
08/07/27 02:13:13
File#renameTo
577:デフォルトの名無しさん
08/07/27 02:18:06
>>574
import java.io.*;
public class TestRenameToDir{
public static void main(String[] args)throws IOException{
File f = new File("a\\");
f.renameTo(new File("b\\"));
}
}
こんな感じで書いてみたけど、フォルダ"a"の中身は移動してくれません・・
578:デフォルトの名無しさん
08/07/27 02:28:24
>>575
Integer#parseInt(String) で String から int に出来るだろw
あと、Integer から int は parseInt() ではなく intValue()
579:デフォルトの名無しさん
08/07/27 07:01:20
>>558
MessageID は設定しなくていいのか?
他のところ(yahoo とか infoseek とか)には送れている?
Outbound Port 25 Blocking な ISP かどうかは確認した?
Hotmail 側でなんらかの受信遮断処置(Sender ID/SPFとか)をしていないか確認した?
580:デフォルトの名無しさん
08/07/27 08:52:03
>>573
カットアンドペーストをやりたいってこと?
バイトストリームで新しいファイルに全て書き写して
元のファイルをFile#delite()で消すのは?
581:デフォルトの名無しさん
08/07/27 10:32:35
>>577
それだとaの中身をbに移動じゃなくて、aをbにリネームだな。
582:デフォルトの名無しさん
08/07/27 11:48:34
流れぶったぎってすいません。
とりあえずJAVAの絵本を読んたので、これからJAVAを始めたいのですが
初心者から中級者あたりまで、大人の階段を一気にかけのぼれるような
本を教えてくださいませんか。
だいたい三冊~四冊くらい買う予算は用意してます。
初級者→できる初級者→職場にいても舌打ちされない程度の雑用兼初心者→飯に誘ってもらえる程度の中級者
という段階を踏みたいです。
単純に、みなさんが昔参考にした本を、赤ちゃんレベルから順番に教えていただければいいかな、と。
583:デフォルトの名無しさん
08/07/27 11:53:56
「本で勉強しました」っていうのは軒並み使えないので
とりあえず何か作れ。
584:デフォルトの名無しさん
08/07/27 11:56:25
>>577
「ファイルの」移動だと言っとろーが。
a\c.txt
b\
で a の中身を b に移動させたいのなら
new File("a\\c.txt").renameTo(new File("b\\c.txt"));
にしないといけないんじゃないか。
585:デフォルトの名無しさん
08/07/27 11:59:20
おまいら、今日は日曜なのに仕事してんの?
586:デフォルトの名無しさん
08/07/27 12:00:19
>>583
ありがとうございます。
本だけ読んでも、童貞のエロ孔明にすぎないですもんね。
でも、今の僕は「ハーイー」しか言えないイクラちゃん状態なんです。
せめて人間の言葉がしゃべれるレベルになるには、何か本を読まないとダメかなと。
587:デフォルトの名無しさん
08/07/27 12:07:03
>>582
「三冊~四冊」読んだだけで「飯に誘ってもらえる程度の中級者」になれたら苦労せんわw
本を読んで理解するのも新しいことをするには必要だが、>>583 が言うように自分で作ってみたり、
誰かが作ったものを読んで、どうしてそうなってるのかとかどうしたらより良くなるのかとか考えろ。
そういうことで「階段を登れる」もんだと思うぞ。
588:デフォルトの名無しさん
08/07/27 12:07:09
>>582
入門書が終わって一通り言語仕様を理解しても、困ったことにそれだけじゃ足りない
オブジェクト指向や周辺技術についての理解が必要
本はもちろん有用だが、コードを読み書きしないとダメ
一冊だけ。「Effective Java」どちらかというと中級者向けになるんだろうか
しばらくすると第二版が出るらしい
入門書はよく分からん。ただ「独習Java」は勧めない
589:デフォルトの名無しさん
08/07/27 12:15:17
>>585
ここは仕事場だったのかw 完全に遊びに来てるぞww
590:デフォルトの名無しさん
08/07/27 12:16:30
>>587
そうですね。考えが甘かったス。
>>588
ありがとうございます。
その本を買って、わけのわからなさに打ちのめされてみたいと思います。
やっぱりコードの読み書きが大事なんですね。
サンプルの多そうな本を買ってみます。
591:デフォルトの名無しさん
08/07/27 12:25:32
>>588
俺は独習Javaやったんだけど、わかりやすくて入門書としては良いと思うんだが。
なぜお勧めできないの?
592:デフォルトの名無しさん
08/07/27 12:29:55
>>589
休日出勤の息抜きにカキコしてるの?
593:デフォルトの名無しさん
08/07/27 12:35:22
>>582
2冊目としては
・Sun認定資格 SJC-Pの教科書
ついでに資格もとれるかも
・JavaプログラマのためのUML
UMLやOOPに関する知識がざっくり得られる。
・Effective Java
Java言語独特の作法、やってはいけない事を教えてくれる。
「独習Java」は俺もお勧めできない。
594:デフォルトの名無しさん
08/07/27 12:40:02
>>593
ちなみにお勧めできない理由を教えていただけると嬉しいです
595:デフォルトの名無しさん
08/07/27 12:41:57
>>591
いきなりオブジェクト指向とは云々と書かれてて頭を抱えた記憶があるのと、
使われているクラスが全体的に古い感じがする(VectorとかStringBufferとか)
JDK5.0以降の構文拡張に関連する記述が少ない
・・・・と書いてて気づいたが、もう第4版が出てたのか。そっちは確認してない
596:デフォルトの名無しさん
08/07/27 13:08:31
>>595
なるほど。ありがとう。
597:デフォルトの名無しさん
08/07/27 13:11:59
>>595
StringBufferではいけないの?
598:デフォルトの名無しさん
08/07/27 13:15:48
独習Javaは今となっては古いんだわ、1.4もしくはもっとふるいのがベースだから。
少し遠回りしてもOKならば、俺は勧めるよ。
あれをやり込めばかなりの量のコードを書くことになるからね。
その後、1.5に対応するために、開発者ノートシリーズ「Java1.5 Tiger」ってのをお勧め
599:デフォルトの名無しさん
08/07/27 13:23:04
>>597
今ならStringBuilderがある。違いは同期化の有無
600:デフォルトの名無しさん
08/07/27 13:27:36
>>599
StringBuilderが同期がないんでしょ?
601:デフォルトの名無しさん
08/07/27 13:27:52
>>593
ありがとうございます。
早速アマゾンで検索したのですが
■Sun認定資格 SJC-Pの教科書
これはありませんでした。正式名称でしょうか。
また、こういう初心者から入りやすい教科書系の本は、自分に必要だと思いましたので
この本以外の教科書系で良いものがありましたら、よろしくお願いします。
■JavaプログラマのためのUML
似たような名前の本が二冊ありました。ソフトバンクから出ているほうでいいのでしょうか?
カットシステム社から出ている本も評価が高いようです。
すいません。
602:デフォルトの名無しさん
08/07/27 13:28:42
>>597
別に問題はない。ただ速度を求めるなら StringBuilder ってだけ。
最近は CPU も早いんだし、StringBuffer でもいいけどね。
603:デフォルトの名無しさん
08/07/27 13:32:27
>>598
「Java 5.0 Tiger」だな
604:デフォルトの名無しさん
08/07/27 13:38:47
>>601
SUN教科書Javaプログラマ(SJC-P) (SUN教科書)
URLリンク(www.amazon.co.jp)
JavaプログラマのためのUML
URLリンク(www.amazon.co.jp)
どちらもAmazonの評価は極めて低いようだ・・・
まあいろいろな人の意見を参考にしてくだされ
605:デフォルトの名無しさん
08/07/27 13:41:34
今まで質問してる人と別人ですけど
俺も本で勉強してて「10日で覚えるJAVA入門」と
「トレーニグドリルJAVA」と「JAVA入門の入門」を買って
基礎の基礎から勉強したいから読んでるんですけど
挙げられた本買ってこようと思います
606:デフォルトの名無しさん
08/07/27 15:12:43
独習javaは演習問題の解答がついてないからうんこ
607:デフォルトの名無しさん
08/07/27 15:40:33
>>604
SUN教科書Javaプログラマ(SJC-P) (SUN教科書)を購入することにしました。
評価が低くしているは「初心者向けである」という点らしいので、
逆に初心者の僕には持って来いですね。ありがとうございます。
UMLの本は、もう一冊のほうを買うことにしました。
608:デフォルトの名無しさん
08/07/27 16:51:17
大人の階段上る君はまだシンデレラさ
609:デフォルトの名無しさん
08/07/27 17:02:40
Javaをやってる時点でお子様
610:デフォルトの名無しさん
08/07/27 17:08:32
Javaを馬鹿にするやつはJava言語規定を読んだことがないんだろうな
611:デフォルトの名無しさん
08/07/27 17:55:14
>>584
なるほど。
ということはjavaではディレクトリの移動は出来ない?
612:デフォルトの名無しさん
08/07/27 17:58:36
URLリンク(item.rakuten.co.jp)
これ使ってるよ
613:デフォルトの名無しさん
08/07/27 18:10:50
>>611
ツッコんでいいやら呆れていいやら。
ディレクトリの移動と言っている動作が
「ディレクトリの中身を全て別のディレクトリに移す」
ことで、出来ないと言ってるのが
「File(を示す何か)クラスのrenameTo()のように一発で出来るものが無い」
という意味なら、Javaの標準APIでは無いかもしれない。
が、「javaで」出来ないのかといえば、数行~数十行のメソッドを書けば出来るだろうし、
標準ではない Jakarta 等にはあるかもしれない。
614:デフォルトの名無しさん
08/07/27 18:17:16
ディレクトリの移動ってったって、
HDD上での位置は変わらないけど、
そこにどういうパスでアクセスするかって
だけの話だからなぁ。
パス情報を変えればいいだけの話。
615:デフォルトの名無しさん
08/07/27 18:26:35
こんなかんじで、ディレクトリ下のファイル一覧を作成しないと、ディレクトリ単位の移動はできない?
import java.io.*;
public class FileTest{
static FileWriter fw ;
public static void main(String[] args)throws IOException{
System.out.println("どのディレクトリのファイル一覧を作成しますか? Directory?");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
fw = new FileWriter("list.txt");
File f = new File(br.readLine());
File files[]= f.listFiles();
fileShow(files);
fw.close();
}
public static void fileShow(File files[]){
for (int i=0;i<files.length;i++){
if (files[i].isFile()){
try{
fw.write(files[i].getAbsolutePath()+"\n");
}catch(IOException e){System.out.println("書き込みエラーです");}
}
else if(files[i].isDirectory()){fileShow(getDirectory(files[i]));}
}
}
public static File[] getDirectory(File file){ return file.listFiles(); }
}
616:デフォルトの名無しさん
08/07/27 19:00:25
>>615
ディレクトリ自体のリネームはこんなじゃね?
new File("hoge\\").renameTo(new File("hogehoge\\"));
617:デフォルトの名無しさん
08/07/27 19:21:36
>>615
java フォルダ 移動でググるとこんなとこが一番最初にでたぞ
URLリンク(tids30.seesaa.net)
618:デフォルトの名無しさん
08/07/27 19:40:31
>>617
上書きは個別に判断しなくちゃならないな
619:デフォルトの名無しさん
08/07/27 20:26:13
>>617
いまのバージョンのJDKじゃコンパイルできないね。
何が原因なのだろう
620:デフォルトの名無しさん
08/07/27 20:40:43
>>619
単にclassやimport java.io.*; を省略してるだけ
621:デフォルトの名無しさん
08/07/27 20:51:31
>>620
ありがとうございます
622:デフォルトの名無しさん
08/07/27 20:56:59
javax.scriptで使えるJavaScriptのDOMでXPath使える?
xpath使いたくてチンコギンギンにしてるんだけど
623:デフォルトの名無しさん
08/07/27 23:11:01
そもそもDOMつかえね
624:デフォルトの名無しさん
08/07/28 02:54:31
踏み台に使えるよ
625:デフォルトの名無しさん
08/07/28 15:57:50
アクセスレベルで、public、protected、privateはよく解かるのですが、
パッケージアクセスの使用すべきポイントがわかりません。
本来どのようなときに使うべきものなのでしょうか?
626:デフォルトの名無しさん
08/07/28 15:59:18
他のパッケージに見せたくないクラスやメソッドに。
627:デフォルトの名無しさん
08/07/28 16:00:45
>>625
すみません。言葉不足でした。
パッケージ内でアクセスが可能なのはわかっているのですが、
クラス配置・クラス設計で考えたときに、パッケージアクセスを使用した方がいいクラス間関係ってどういったものがあるかが知りたいです。
628:デフォルトの名無しさん
08/07/28 16:14:50
同じパッケージのクラスにはアクセスさせたいけど、それ以外にはアクセスさせたくない場合。
パッケージ共通で必要だけどパッケージ外では見せてもしょうがないものに使えばいいんじゃね?
パッケージは何かの機能を実現するクラスの集合だから、パッケージ外部に公開する機能を補助するために、
パッケージ内部にだけ必要なようなものが存在することはあるんじゃない?
629:デフォルトの名無しさん
08/07/28 16:16:49
例えば・・・・・・・、テキストエディタのコンポーネントを作るとする
たぶん TextEditor クラス本体以外にも、LineBuffer とか UndoBuffer とか色々なクラスが必要に違いないが、
これらはエディタの実装のために必要なだけであって、使うだけの人は触らないだろうし触ってもあんまり意味ないと思われる
これらテキストエディタ関連のクラスは全部 com.example.myname.texteditor だとかいったパッケージに入れ、
TextEditor や TextEditorEventListener だとかいった使う人用のクラスやインタフェイスだけ public にしといて、
LineBuffer とか UndoBuffer とかいった内部実装用のクラスはパッケージアクセスにしとけば、
外から見てすっきりするし、勝手に内部構造を触られてややこしいことになったりもしない
630:デフォルトの名無しさん
08/07/28 16:32:57
protectedがパッケージスコープも持つのに迷ってしまう人は多いね。
631:デフォルトの名無しさん
08/07/28 17:00:47
protected は基本的に継承用だろ。
632:デフォルトの名無しさん
08/07/28 17:02:07
Eclipse3.2.0をインストールして、言語パックNLpack1-eclipse-SDK-3.2.1-win32も上書きして
メニュー等IDE自体は日本語になったのですが、IDEの[ヘルプ]→ダイナミックヘルプから見れるJavadocが英語のままです。
ここのダイナミックヘルプを日本語にしたい場合はどうしたらよいのでしょうか?
633:デフォルトの名無しさん
08/07/28 17:19:04
protectedはパッケージ外から継承されたとき用で、
パッケージ内は基本的にスコープなど気にせずに
みんなパッケージスコープを使えっていうのが本来の設計思想。
メンバーのデフォルトスコープがパッケージスコープなのがその証拠。
パッケージ、モジュール、ユニット、ライブラリ呼び方はいろいろだが、
その範囲内は適当にという言語は多いからそれに倣ったのだと思う。
例えばdelphiはprivateがユニットスコープだった。
ただ、javaの利用者がアバウトな使い方を良しとしなかったのでそういった使い方は余りされていない。
みんな一生懸命privateと書いている。
634:デフォルトの名無しさん
08/07/28 17:24:12
>>632
mergedoc
635:デフォルトの名無しさん
08/07/28 17:28:50
>メンバーのデフォルトスコープがパッケージスコープなのがその証拠。
ってのはどーなんだろね?
単に新しい予約語考えるのが面倒だった、
既存の予約語 例えば package でパッケージプライベートにしても良かったけど
予約語に複数の意味持たせるのは汚いからあまりやりたくなかった、
とかも考えられるけど。
636:デフォルトの名無しさん
08/07/28 17:42:53
>予約語に複数の意味
それはすでに final がやっちゃってるような・・・
637:デフォルトの名無しさん
08/07/28 17:45:34
>>636
複数の使い方があるだけでいいなら class もあるし。
638:デフォルトの名無しさん
08/07/28 18:07:05
>>634
あの、MergeDocの解説の通りにやってみましたが
ポップアップしか日本語になりません・・・
URLリンク(www.itmedia.co.jp)
639:デフォルトの名無しさん
08/07/28 18:08:00
デフォルトでは右のほうに出るヘルプビューのjavadocを日本語で見たいです。
640:デフォルトの名無しさん
08/07/28 18:56:53
なぜjavaはカレントディレクトリを移動できない(させない)のでしょうか?
641:デフォルトの名無しさん
08/07/28 19:02:55
カレントディレクトリなんて、ユーザがコマンドラインで指定したファイル名を解釈するとき以外、何に使うんだ?
642:デフォルトの名無しさん
08/07/28 19:27:08
いまやWebのほとんどはjavaが絡んでいるって聞きますが、
具体的にWebでのJavaって何をさしているのですか?
JavaによるWeb開発をしようと本屋に立ち寄ったはいいけど、
なにやら環境が沢山あり過ぎて何に手を出すべきか迷ってしまいます。
一般にWenでのJava=JSPの本を買うのが普通なんですか?(+DBMS)
643:デフォルトの名無しさん
08/07/28 19:32:23
>いまやWebのほとんどはjavaが絡んでいるって聞きますが
その統計にjavascriptが混じってることは間違いない。
644:デフォルトの名無しさん
08/07/28 19:34:09
> いまやWebのほとんどはjavaが絡んでいるって聞きますが、
そんなことないw
645:デフォルトの名無しさん
08/07/28 19:38:26
Webっていってもただのホームページとかでなく、
業務で利用するようなWebシステムです。
646:デフォルトの名無しさん
08/07/28 19:38:33
絡んでるってのはつまり
サーバー上でJavaが動くって事じゃないか
動かしてるかどうかは無関係に
647:デフォルトの名無しさん
08/07/28 19:39:53
すくなくとも、JavaScript本は買わないほうがいい
仕事じゃ使わない。
648:デフォルトの名無しさん
08/07/28 19:43:15
使うよ
649:デフォルトの名無しさん
08/07/28 19:46:42
使うこともある程度
最近は
650:デフォルトの名無しさん
08/07/28 19:54:01
仕事によるだろjk
651:デフォルトの名無しさん
08/07/28 19:55:50
Tomcatが主流
652:デフォルトの名無しさん
08/07/28 20:06:57
JAVAにまつわる専門用語が氾濫しているが
Webは儲からないのでやめたほうがいい
653:デフォルトの名無しさん
08/07/28 20:08:18
>>645
社内業務システムなんかだとASP.NETも多いぞ。
654:デフォルトの名無しさん
08/07/28 20:13:58
社内業務システムはACCESSとEXCELだろJK
655:デフォルトの名無しさん
08/07/28 20:41:49
Beanがお勧め
656:デフォルトの名無しさん
08/07/28 21:10:16
学校でとりあえずjavaの基礎を習ったのですが、
そこではjavacでコンパイル、コマンドプロンプトからクラスファイルを
指定して実行したのですが、これがjavaの基本なのでしょうか?
exeファイルを作って直接実行、ということは出来ないのですか?
657:デフォルトの名無しさん
08/07/28 21:15:29
>>656
run anywhereじゃなくなるから、exe化はJavaの思想とは違う。
不可能じゃないけどね。
658:デフォルトの名無しさん
08/07/28 21:21:09
exeの変わりにjarと起動用のバッチファイルを生成するプログラムを作ったことがあるよ。
裏でant呼んでコンパイルして最後に*,classを消してしまうプログラムなのだけどわりと重宝した。
659:デフォルトの名無しさん
08/07/28 21:33:27
exeにするのはjavaの思想に反しているのは分かりますが…
となると、実行には常にコマンドプロンプト等が必要ということですか?
660:デフォルトの名無しさん
08/07/28 21:35:25
だからjarファイルにすればダブルクリックで実行できるって
661:デフォルトの名無しさん
08/07/28 21:59:24
Windowsのアプリが作りたいなら素直にC#にいったほうがいいと思うが
Javaとたいして変わらないから
662:デフォルトの名無しさん
08/07/28 22:18:26
C#の将来性は?
結局VC++が増加しそう
663:デフォルトの名無しさん
08/07/28 22:19:38
学校で習いたてならそういう感想を持つだろうけど実際の開発でjavacは使わないから安心していい。
664:デフォルトの名無しさん
08/07/28 22:21:01
>>662
それをJavaスレで聞いてどーすんだ?
665:デフォルトの名無しさん
08/07/28 22:25:18
>>663
?
なにを使うの?
666:デフォルトの名無しさん
08/07/28 22:26:10
>>662
Google Code Jamの言語別統計をみると、C++とJavaが人気のようだけど。
667:デフォルトの名無しさん
08/07/28 22:28:04
くそ、こんなときにIDが表示されれば・・・
668:デフォルトの名無しさん
08/07/28 22:31:06
>>665
apache ant
IDEのeclipseやnetbeansもこれを中で使ってる。
669:デフォルトの名無しさん
08/07/28 22:33:07
>>666
世界ではなく日本国内では?
670:658
08/07/28 22:39:28
でてきた。こんなのです。学習用には重宝した。
//++@ sample
//++m local.test.Hello
//++ local/test/Hello.java
package local.test;
public class Hello {
public static void main(String [] args) {
new Hello2().hi();
}
}
//++ local/test/Hello2.java
package local.test;
public class Hello2 {
public void hi() {
System.out.println("hello world !");
}
}
//++
以上をsample.txtに保存、コンパイルでsample.jarとsample.batを作って実行。
C:\>trj sample.txt
C:\>sample
hello world !
671:デフォルトの名無しさん
08/07/28 22:42:32
>>668
Antはコンパイラと言うわけではないのでは・・・
672:デフォルトの名無しさん
08/07/28 22:47:05
>>670
良く分からないが、それこそ、Antでするようなこと?
673:デフォルトの名無しさん
08/07/28 22:57:23
>>672
そのプログラムは
ディレクトリ掘ってjavaファイル配置してbuild,xml作ってantを呼び出す。
jarだけ元のディレクトリにコピーして作業用のディレクトリを削除。
antはコンパイラというよりmakeユーティリティ。
makeと違ってjavacそのものではなくjavaのランタイムの中にある
コンパイル用のモジュールやjarを作るためのモジュールを呼び出す。
674:デフォルトの名無しさん
08/07/28 22:58:40
.NETやJAVAってどんどんいろんな物取りこんでんだな、
JAVAは
JRubyでRubyが
JythonでPythonが
.netは
ASP、Visual Basic、Visual C#、Visual C++、Visual J#
等が動くようになってる。
時代の流れは速いな・・・
これからプログラミングするには覚えるの多すぎるな
最近の若い世代は覚える技術が多すぎて可愛そうだわ
675:デフォルトの名無しさん
08/07/28 22:59:54
IronPythonやIronRubyもあるでよ
676:デフォルトの名無しさん
08/07/28 23:28:58
Javaは配列とオブジェクトは参照渡しということですが
class Hoge{
public int x;
Hoge(int t){x=t;}
}
public class Cui{
public static void main(String[] args)
{
Hoge A=new Hoge(7);
Hoge B=new Hoge(999);
change(A,B);
System.out.println(A.x +" , "+B.x);
}
public static void change(Hoge A, Hoge B){A=B;}
}
上の表示結果は「7 , 999」でchange内をA.x=B.xにすると「999 , 999」になる、
というのがどういうことなのかイマイチ分かりません。
参照渡しなら元のAはBのオブジェクトが指す所を指すようになって
A=Bで「999 , 999」になるように思えたのですが、どうしてでしょうか?
677:デフォルトの名無しさん
08/07/28 23:31:46
参照渡しをしているわけではありません。
参照を値渡ししてるだけです。
678:デフォルトの名無しさん
08/07/28 23:33:49
メソッドですでに参照として受け取ってるから。
mainメソッド内で持っている、あるオブジェクトへの参照Aと、メソッドで受け取った参照は、参照先は同じでも、別物。
だから、上の例ではchangeで確かにAの指す先はBとしてあるが、mainメソッド内の参照には影響がない。
679:デフォルトの名無しさん
08/07/28 23:38:08
オブジェクトの参照も「値」で、その値をコピーして渡してる感じ で、いいんだっけ?
680:デフォルトの名無しさん
08/07/28 23:57:48
main内の
Hoge A=new Hoge(7);
これでAが指してるアドレスが仮に0x1110~0x1120だとすると、
change(Hoge A , Hoge B)でのAは別のアドレス(仮に0x2220~0x2230)を指していて、
その中身が0x1110~0x1120に入っているものと同じになるってことでしょうか?
681:デフォルトの名無しさん
08/07/29 00:02:26
A の指してる先は同じ
しかし A 自体は別々
682:デフォルトの名無しさん
08/07/29 00:03:17
それはクローンだな。
オブジェクトの実体:0x1100~0x1200
main内のA:0x2000-0x2010(実体の格納先など)
change内A:0x2300-0x2310(同上)
アドレスで書くとかえって分かりにくくなるかもね。
サイズなんか適当だから。
683:デフォルトの名無しさん
08/07/29 00:11:41
代入前
------------ -Hoge--
| main の A |---> | x = 7 |
------------ -------
| main の B |-----↑-----
------------ | ↓
| change の A |------ -Hoge---
------------ | x = 999 |
| change の B |--------> --------
------------
A=B 代入後
------------ -Hoge--
| main の A |---> | x = 7 |
------------ -------
| main の B |------------
------------ ↓
| change の A |--------> -Hoge---
------------ | x = 999 |
| change の B |--------> --------
------------
mainのAは何も変わらない
684:デフォルトの名無しさん
08/07/29 00:26:35
ああなるほど!
参照ではなく参照を値渡しているって「指している矢印」がもうひとつ出来るイメージですね!
皆さんのおかげでやっと理解することが出来ました。
こんな時間にも関わらずもの凄く分かりやすい説明をして頂いて本当にありがとうございます!
685:デフォルトの名無しさん
08/07/29 02:36:46
Javaの変数は、
プリミティブに対しては値そのものが入るけど、
オブジェクトに対してはそのオブジェクトへの参照が入る
メソッドは、それらの値渡しをする
686:デフォルトの名無しさん
08/07/29 08:33:20
javaでは参照渡しはないのですか
687:デフォルトの名無しさん
08/07/29 08:37:54
ないです
688:デフォルトの名無しさん
08/07/29 09:17:58
プリミティブ以外は参照わたしじゃなかったのかい?
689:デフォルトの名無しさん
08/07/29 09:22:21
>>688
いいえ。参照の値渡しです。
690:デフォルトの名無しさん
08/07/29 10:05:49
メタには参照渡しだけど、メタじゃ済まない部分が顔を出す。
691:デフォルトの名無しさん
08/07/29 19:16:07
ここで聞いて良いものか微妙かもしれませんが、こういうのってどうやって作るのでしょうか?
URLリンク(www.nicovideo.jp)
692:デフォルトの名無しさん
08/07/29 19:30:56
すみません、バケットソートをカウントじゃなく
二次元配列で作ったらものすごく処理が遅くなったんですけどどうしてでしょうか?
693:デフォルトの名無しさん
08/07/29 19:39:34
>>691
普通にタグ出力しまくるだけでおk
694:デフォルトの名無しさん
08/07/29 19:46:03
>>692
それだけだと作り方が悪いとしかいえない。
695:デフォルトの名無しさん
08/07/29 19:52:39
>>691
画像読み込んで1pxづつ見ていくだけ
色取得も出来るし簡単だよ。
多分ものすごいHTMLのソースになってるんだろうけど・・
696:デフォルトの名無しさん
08/07/29 19:56:33
>>694
2次元配列のプログラム思い出しながら書いてみました。
だいたいこんな感じです。
maxはバケットソートを使って並び変えたい要数の最大値です。
max++;
sort_array.length=tail
int[][] bucket=new int[max][tail];
for(int i=0 ; i<tail; i++){
int m=0;
while(bucket[sort_array[i]][m]<=1){
m++;
{
bucket[sort_arrray[i]][m]=sort_array[i]
}
for(int i=1; i>tail; i++){
while(bucket[i][m]<=1){
sort_array[i]=bucket[i][m]
m++:
}
}
697:デフォルトの名無しさん
08/07/29 20:00:18
すみません、一個目のwhileのとこ「<」と「>」間違えてました
while(bucket[sort_array[i]][m]>=1){
m++;
}
698:デフォルトの名無しさん
08/07/29 20:04:41
バケットソートの高速性は要素数に比例する量の処理で済むところだ
そのコードのように二重ループにすると要素数の二乗に比例する量の処理が必要になる
大雑把に言ってバブルソートと同じ計算量
699:デフォルトの名無しさん
08/07/29 20:28:17
どうしようもない質問かと思いますが
コンストラクタというのはインスタンスを作成するのに使う
クラスの特殊なメソッドのようなものという認識で良いのでしょうか?
700:デフォルトの名無しさん
08/07/29 20:39:30
うん
701:デフォルトの名無しさん
08/07/29 20:47:06
>>700
ありがとうございます
コンストラクタの作成と書いてあったので混乱しました
「クラスのコンストラクタを使ってインスタンスを作成する」
と脳内変換しておきます
702:デフォルトの名無しさん
08/07/29 22:16:58
>>693,>>695
レスありがとうございます!
1px取得してその色の■をhtmlの方でmarginとpaddingを0にして
ひたすら敷き詰めていけば出来るものなのかな?
ちょっとその方向で今から作ってみようと思います。
703:デフォルトの名無しさん
08/07/29 22:18:11
>>701
コンストラクタの作成は、コンストラクタの定義を書くということだと思うが
704:デフォルトの名無しさん
08/07/29 22:26:23
>>702
ちょっとやってみたけど単純にテキストじゃないっぽい?
ブラウザにもよるかもしれないけれど、テキストでやると、属性値が変わる部分でずれる部分があるから、テーブルでやってみたらきれいにできた。
public static void encode(BufferedImage input,PrintStream writer,String pxStr,int width,int height){
BufferedImage out = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
out.getGraphics().drawImage(input, 0, 0,width,height, null);
writer.println("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
for (int i = 0; i < height; i++) {
writer.println(" <tr>");
for (int j = 0; j < width; j++) {
int rgb = out.getRGB(j, i);
writer.printf(" <td style=\"background:#%06X\">",rgb&0xFFFFFF);
writer.print(pxStr);
writer.println("</td>");
}
writer.println(" <tr>");
}
writer.println("</table>");
}
pxStrはテーブル内の文字列。全角スペース*2くらいがちょうどいいかも
拡大縮小は今回ほんとに最低限の実装だけどw
705:デフォルトの名無しさん
08/07/30 00:09:35
>>701
文脈が解らんけど、
複数のコンストラクタを定義できるし、そのときは「コンストラクタを作成する」という。
706:デフォルトの名無しさん
08/07/30 00:13:33
質問させてください
現在、jdk6でgui開発を行っています
サイズを指定しないJFrameの上にサイズを指定したJPanelを載せて、JFrame#pack()を行い、大きさを整えようとしたのですが、なぜか、小さくなってしまいます。
JPanelはsetSizeで800*600とかにしているのですが、実行するとせんべいみたいな形になってしまいます
なぜなんでしょ?
また、せんべいみたいな形になったwindowを広げるとJPanelは800*600なのに、それを超えてJFrameの大きさと同じ大きさまで拡大してしまいます
これも、なぜなんでしょ?
解決方法や実装の常識的な方法があれば、教えてください
707:デフォルトの名無しさん
08/07/30 00:15:10
>>706
setPreferredSize(Dimension)
708:デフォルトの名無しさん
08/07/30 01:11:11
Swingのソース見れば分かるがsetPreferredSize()はかなり無視されてるぞw
709:デフォルトの名無しさん
08/07/30 01:28:20
>>708
夏だな
710:デフォルトの名無しさん
08/07/30 02:00:47
>>706
サイズも含めて望みのレイアウトになるようなレイアウトマネージャを使う。
そしてそのレイアウトマネージャがレイアウトに利用するコンポーネントのプロパティを正しく設定する。
711:デフォルトの名無しさん
08/07/30 02:07:25
>>710
ベスト回答
712:デフォルトの名無しさん
08/07/30 09:45:20
以下の方法でurlクラスロードできません。
URL[] url = {new URL("file:///C:/…/classes")};
new URLClassLoader(url).loadClass("/jp/co/…/Xxx")); → ClassNotFoundException
new URLClassLoader(url).loadClass("/jp/co/…/Xxx.class")); → ClassNotFoundException
実際のディレクトリ
クラスパス → C:\…\classes
クラス → C:\…\classes\jp\co\…\Xxx.class
713:デフォルトの名無しさん
08/07/30 10:08:26
>>712
> new URLClassLoader(url).loadClass("/jp/co/…/Xxx")); → ClassNotFoundException
new URLClassLoader(url).loadClass("jp.co.….Xxx"));
loadClass する時のクラス名はバイナリ名らしいので
packagename.classname$innerclassname みたいに
パッケージ及びトップレベルクラスまでは '.' で繋いでいい。
714:デフォルトの名無しさん
08/07/30 15:13:44
質問です。
JAVAのstaticメソッド内に宣言したローカル変数は
ヒープに領域を取られるのでしょうか?
配列などのオブジェクト宣言時は領域を取られるとあったのですが、
変数はオブジェクトではありませんよね?
715:デフォルトの名無しさん
08/07/30 15:28:55
フリーの日本語で音声合成ができるライブラリってありますか?
716:デフォルトの名無しさん
08/07/30 15:34:19
javaでボタンなどのコンポーネントを追加するときは、
getContentPaneでコンテナを取得して、
そのコンテナに対してコンポーネントを追加すると思います。
そこで、質問なのですが、コンテナを複数個作成することはできるのでしょうか。
目的は、複数のコンテナを複数の画面とみなし、
メニューなどから必要に応じて表示するコンテナを切り替えることです。
717:デフォルトの名無しさん
08/07/30 15:52:09
>>716
CardLayout使うとか、JLayeredPane使うとかじゃだめ?
718:デフォルトの名無しさん
08/07/30 15:55:01
>>717
ありがとうございます。早速、調べてみます。
719:デフォルトの名無しさん
08/07/30 16:37:41
質問です。
JAVAのstaticメソッド内に宣言したローカル変数は
ヒープに領域を取られるのでしょうか?
配列などのオブジェクト宣言時は領域を取られるとあったのですが、
変数はオブジェクトではありませんよね?
720:デフォルトの名無しさん
08/07/30 16:40:12
>>719
メンバだろうがstaticだろうがローカル変数はスタックじゃね?
721:デフォルトの名無しさん
08/07/30 16:44:07
標準ライブラリってどうやって見るんですか?
722:デフォルトの名無しさん
08/07/30 16:46:23
>>714
staticか否かにかかわらず、ローカル変数は「ローカル変数テーブル」
に置かれる。(で、ローカル変数テーブルは通常はスタック上に置かれる)
でも、ローカル変数が指す先はヒープ上かもしれない。
例:
static void foo() {
Foo f = new Foor();
// f はローカル変数テーブルに領域が取られるが、fが指すオブジェクトはヒープ
>>719
同じことを二度も書かなくていいよ。
723:デフォルトの名無しさん
08/07/30 16:52:33
これで二度書けば解答がもらえると認識した。
724:デフォルトの名無しさん
08/07/30 16:52:43
>>721
URLリンク(java.sun.com)
725:デフォルトの名無しさん
08/07/30 17:29:48
enterflagってどうゆう関数?
726:デフォルトの名無しさん
08/07/30 21:10:33
書いた奴に聞け
727:デフォルトの名無しさん
08/07/30 21:56:32
ディレクトリ階層を取得してくれるライブラリはありませんか?
シンボリックリンクとかあって、単純に再帰かけると無限ループ入るんで、
誰かが提供したライブラリを使ってプログラミングがしたい。
読み込んで、ノードがサイズとか名前とか更新日時とかを持った木構造にしてくれればいい。
728:デフォルトの名無しさん
08/07/30 21:59:21
winのlnkファイルもあるしな。
まああれは解析されてるがディレクトリツリーの取得ぐらい自分で書け。
729:デフォルトの名無しさん
08/07/30 23:11:43
>>728
すごくだるいです・・・
他人が書いたライブラリを使った方が正確です。
730:デフォルトの名無しさん
08/07/31 00:47:38
>>729
ならそのまま延々待ってろw
731:デフォルトの名無しさん
08/07/31 01:18:13
Javaで、Excelのデータを読むときは、poiを使用するけど
もし、Javaで、OpenOfficeOrgのドキュメントのデータを読むときは
何を使用されていますか?
732:デフォルトの名無しさん
08/07/31 06:06:04
for文について質問です。
int i;
for(i=-3;i<3;i++);
といった始めにiを-3としておいて-3≦i≦3の計算をさせることはできますか?
733:デフォルトの名無しさん
08/07/31 07:42:47
kwsk
734:デフォルトの名無しさん
08/07/31 07:43:11
>>731
POI
>>732
聞く前に試せ
735:デフォルトの名無しさん
08/07/31 08:26:36
>>732
それだと-3≦i<3の範囲になっちゃうけど
736:デフォルトの名無しさん
08/07/31 10:05:49
springなどのDIってのは、結局のところJDKのProxyで割り込みかけてるってのが正体ですか?
737:デフォルトの名無しさん
08/07/31 14:17:39
public void paint(Graphics g){
g.setColor(Color.green);
g.fillArc(30,30,150,100,90,250);
}
アプレットに表示した後、数秒待機してこの図形を消したいのですが、
図形を消す命令というのはありますか?
738:デフォルトの名無しさん
08/07/31 14:18:59
clear
739:デフォルトの名無しさん
08/07/31 14:27:22
>>738
よろしかったら記述方法のヒントを頂けないでしょうか?
g.clearではだめだったので… orz
740:デフォルトの名無しさん
08/07/31 14:42:40
private bool display = true;
void 数秒後に発動するタイマーのハンドラー() {
display = false;
画面の再描画指示 repaint() でいいんだっけ?
}
public void paint(Graphics g){
if (display) {
g.setColor(Color.green);
g.fillArc(30,30,150,100,90,250);
}
}
741:デフォルトの名無しさん
08/07/31 15:20:50
解決しました、ありがとうございました。
742:デフォルトの名無しさん
08/07/31 19:59:56
JFrameのウィンドウを何らかの処理をした後、自動でHIDE_ON_CLOSEの状態に
したいのですがどうすればいいんでしょうか?
743:デフォルトの名無しさん
08/07/31 20:03:14
setVisible(false)
744:デフォルトの名無しさん
08/07/31 21:55:41
jspとかサーブレットやるときはほぼ確実にコンテナにトムキャットを使いますけど、
実際に現場でもトムキャット(+アパッチ連携)が使われてるんでしょうか?
それともグラスフィッシュとかでしょうか?
745:デフォルトの名無しさん
08/07/31 22:05:44
使いたいものを使えよ
746:デフォルトの名無しさん
08/07/31 22:31:29
WebSphereやWebLogicのようなメーカーものも強いな
747:デフォルトの名無しさん
08/07/31 23:36:26
Tomcatのみで運用だけはない、そのくらいかと
748:デフォルトの名無しさん
08/07/31 23:47:46
gr3というゲームがあるんですけど、
Javaのなんというプログラム(ファイル?)で開いていいのかわからず、
起動できません。
教えてください。
749:デフォルトの名無しさん
08/08/01 01:01:16
JavaでPostgresにデータ追加する方法教えてー。
・データベース名
「userdb」
・テーブル名
「user」
列名 型 制約
id varchar(10) 主キー
name varchar(50) NOT NULL
address varchar(50) なし
追加するデータ
「add.txt」の内容
001,太郎,taro@test.ne.jp
002,花子,hanako@test.ne.jp
003,次郎,jiro@test.ne.jp
750:デフォルトの名無しさん
08/08/01 01:12:27
jdbcでぐぐれ
751:デフォルトの名無しさん
08/08/01 09:46:23
共通の定数クラスやユーティリティークラスをみんなで更新しているので、cvsのマージが大変です。
皆さんはこのような時どうされます。
定数クラスを各自作成し、最後にリファクタリングで1つにまとめコミットし、その他は破棄でやってます。
自分ではなかなかだなと思っています。
752:デフォルトの名無しさん
08/08/01 10:03:45
このint aをマルチスレッドで扱うとき、synchronizedブロックで囲って排他したほうがいいでしょうか。
オブジェクトの捜査ならその中でいろいろやるけど1行だけの更新なら必要ないと思うのですが。
753:デフォルトの名無しさん
08/08/01 10:24:21
>>751
git でも mercurial でもなんでも使えよ。
>>752
更新する場所がソース上で1行だろうがなんだろうが、そこを通るスレッドが複数
存在するならガードする必要があるのはあたりまえだろボケ。
754:デフォルトの名無しさん
08/08/01 11:01:48
>>751
共通部分は一人で作る
755:デフォルトの名無しさん
08/08/01 11:27:45
>>753
要は、intのデータバイト更新しかかり中に別スレッドが読んじゃうからということですか?
756:デフォルトの名無しさん
08/08/01 11:34:16
2つのスレッドが同時に更新したら・・・とか
同期しないと別スレッドの更新した値が更新されて見えないことがあるよ・・・とか
757:デフォルトの名無しさん
08/08/01 12:02:08
>>756
その、同時に更新したらという懸念はわかるけど、同時に更新したらどうなるの?
データはめちゃくちゃになる、ということ?
758:デフォルトの名無しさん
08/08/01 12:13:03
>>757
銀行口座の例とか教科書に載ってなかったか?
javaじゃないけど
URLリンク(www.atmarkit.co.jp)
759:デフォルトの名無しさん
08/08/01 12:50:46
5年ぐらいJavaいじってなくて、そろそろまたいじろうかと思ってるんですけど
Web系の場合、何で遊ぶのが一番仕事の役に立ちそうですか?
Tomcat+Struts2あたり?
宗教戦争っぽくなりそうですけど、目安を知りたいので教えてください
760:デフォルトの名無しさん
08/08/01 13:45:59
金融系で開発する場合の開発環境はEclipseが多いですか?
761:デフォルトの名無しさん
08/08/01 14:01:52
事実上EclipseなのだがWebSphere Studioを使ってるよ
762:デフォルトの名無しさん
08/08/01 14:25:39
JavaアプレットってSwingやAWTのことですか?
現在、Javaアプレットに代わって利用されているJava技術は何ですか?(FLASH等多言語は除く)
763:デフォルトの名無しさん
08/08/01 14:27:33
java web start (jnlp)
764:デフォルトの名無しさん
08/08/01 19:36:19
java開発ソフト(URLリンク(java.sun.com)の2番目)をインストールして
コンパイルしようとしたのですがjavacが認識されず出来ません
どうすればよいですか
初歩的ですみません
765:デフォルトの名無しさん
08/08/01 19:43:06
環境変数設定してないのかな
766:デフォルトの名無しさん
08/08/01 19:46:53
>>764
URLリンク(java.sun.com)
の4.を行わない場合、javacをフルパスで起動する必要がある。
767:デフォルトの名無しさん
08/08/01 20:45:40
jnlpの実装がRIのjwsしかないってのがな。
ブラウザが実装してくれればいいのに
768:デフォルトの名無しさん
08/08/01 23:45:24
>>764
bin フォルダの中に javac.exe はあるぽ?
769:デフォルトの名無しさん
08/08/01 23:48:48
webアプリのビジネス層のインターフェースの設計について質問。
下のように、似たようなシグネチャのメソッドを持つインターフェースを
数種類だけ作ってアプリ全体で使い回そうとしてるんだけどこれって普通ですか?
コントローラからはビジネス層へのアクセスは必ずこれらを呼ぶようにしていますが、
もっと賢いやり方があれば教えてください。
public interface hogeLogic {
void execute (object o)
}
public interface hogeLogicReturningObject {
Object execute (object o)
}
public interface hogeLogicReturningList {
List execute (object o)
}
770:デフォルトの名無しさん
08/08/01 23:52:06
public interface hogeLogic<T> {
T execute(Object o);
}
771:デフォルトの名無しさん
08/08/01 23:57:02
>>770
これは別ですか?
public interface hogeLogic {
void execute ()
}
あとjdk1.4だと>>769以外に何かありますか
772:デフォルトの名無しさん
08/08/02 00:14:01
いまさら1.4かよ。Java7出たらEOLだけどいいのか?
773:デフォルトの名無しさん
08/08/02 00:30:21
java.lang.Void
774:デフォルトの名無しさん
08/08/02 00:40:30
java.lang.ZOID
775:デフォルトの名無しさん
08/08/02 00:50:29
新規案件で1.4とかもあるぜ、もうアホかと
776:デフォルトの名無しさん
08/08/02 00:53:46
>>772
Sunが金払う顧客にはサポート続けるって言ってなかったっけ?
777:デフォルトの名無しさん
08/08/02 01:08:25
>>769
そのパターンでは、静的型付の利点を生かせないよね。
778:764
08/08/02 06:23:37
>>766
設定してみましたが変化がありませんでした
>>768
ありません><
779:デフォルトの名無しさん
08/08/02 09:18:28
>>769
インターフェイスを使うのは必要として、
ビジネス層の中身によるがObjectまで抽象化すると逆にメリットがなくなる。
もう少し具象化した型別にインターフェイスを用意したほうがよいと思うよ。
780:デフォルトの名無しさん
08/08/02 14:51:22
>>777
>>779
なるほど。確かにタイプセーフじゃないんで
>>769はこれはこれでどうしたものか、と思いました。
参考までに1.5だと全部下ので
片が付くと思ったのですが、あってますか?
public interface hogeLogic<T, E> {
T execute(E commandParameterObj);
}
781:デフォルトの名無しさん
08/08/02 17:17:05
java.awt.Color.whilteとjava.awt.Color.WHITEは何の違いがあってどう使い分けるのよ
782:デフォルトの名無しさん
08/08/02 17:53:46
定数は大文字アンスコで書くのがルール
後はわかるな?
783:デフォルトの名無しさん
08/08/02 19:59:32
>>759
だれかたのむ
784:デフォルトの名無しさん
08/08/02 21:13:53
>>759
Web+仕事が前提だと、未だにStruts1がぶっちぎり。
Struts2はその他大勢とどんぐりの背比べ状態。
それでもあえてStruts1以外を選ぶなら、Wicketあたりをお勧めしておく。
785:デフォルトの名無しさん
08/08/02 22:40:36
Swingの経験はあるけどWebは初めてって人には、却ってWicketの方が分かりやすいかも。
786:デフォルトの名無しさん
08/08/02 23:17:34
>>782
いや、わからん・・・・
定数と同名のpublic変数フィールドがなぜ定義されてて、
どうやって使い分けるのか
検討もつきません。まじで。
787:デフォルトの名無しさん
08/08/02 23:33:47
>>786
つ 導入されたバージョン: 1.4
788:デフォルトの名無しさん
08/08/03 01:07:46
APIドキュメントの読み方や利用方法がいまいち分からないのですが
丁寧に解説している本ってありますか?
いま持っている本はドキュメントの使い方の説明はほとんどされてません。
789:デフォルトの名無しさん
08/08/03 01:13:28
>>786
1.4以前に定義された小文字の変数名だと命名規約に反する。
それで大文字を導入したが小文字の方を消すと以前作ったコードがコンパイルできなくなる。
>>788
辞典みたいなもん。
790:デフォルトの名無しさん
08/08/03 01:16:20
とくにAWTやSwingのドキュが意味不明です
791:デフォルトの名無しさん
08/08/03 01:19:22
GUIプログラミングの基礎を勉強すればいい
792:デフォルトの名無しさん
08/08/03 01:24:03
誰か>>780の件、たのむ
>ビジネス層の中身によるがObjectまで抽象化すると逆にメリットがなくなる。
メリットって?
793:デフォルトの名無しさん
08/08/03 03:39:15
>>792
よくわからんがコントローラー層から実行するメソッドごとに、
インタフェース作ることにならんかい?
極端な例だけど、
あるひとつのドメインに対して、
CRUDごとにインタフェース作るより、
まとめてインタフェース定義するほうが自然だよ。
794:デフォルトの名無しさん
08/08/03 03:44:33
>>792
ビジネス層でObject受け取ってうれしいか?
結局ダウンキャストしなきゃいけないじゃん。
795:デフォルトの名無しさん
08/08/03 15:52:03
JTableのsetAutoCreateRowSorterにtrueを指定した場合、
テーブルのカラムを押したときにソートができるようになります。
ところが、このソートの仕方がおかしいのです。
たとえば、次のような値は
8 1
14 -> 8
1 14
となるように思えますが、実際には
8 1
14 -> 14
1 8
のようになってしまいます。
DefaultTableModel.addRowにはIntegerオブジェクトを渡しているのに、
数学上での大小を区別してくれません。
どうすれば、よいでしょうか。
796:デフォルトの名無しさん
08/08/03 16:07:40
795です。
スペースがうまく入っていないので補足します。
言いたいことは、1,8,14という並び方になってほしいのに、
1,14,8という並び方になってしまうということです。
797:デフォルトの名無しさん
08/08/03 16:20:44
文字列として比較しているからだろ
798:デフォルトの名無しさん
08/08/03 16:24:27
>>3
DOSの本嫁
799:デフォルトの名無しさん
08/08/03 16:27:48
>>796
URLリンク(guijava.180r.com)
800:デフォルトの名無しさん
08/08/03 16:31:34
バイト配列→文字列の変換をするメソッドを書きたいです。
ぐぐってみたところ、以下2つのメソッドが引っかかったのですが
どちらを使うべきでしょうか?
asHex2()のif文は必要なのでしょうか。
public static String asHex(byte b[]) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
sb.append(Integer.toHexString((int) b[i] & 0xff));
}
return sb.toString();
}
public static String asHex2(byte b[]) {
StringBuffer sb = new StringBuffer(b.length * 2);
for (int index = 0; index < b.length; index++) {
int bt = b[index] & 0xff;
if (bt < 0x10) {
sb.append("0");
}
sb.append(Integer.toHexString(bt));
}
return sb.toString();
}
801:デフォルトの名無しさん
08/08/03 16:31:59
ピンズが皆浮いてるw
802:デフォルトの名無しさん
08/08/03 16:32:53
誤爆った
803:デフォルトの名無しさん
08/08/03 16:48:44
>>799
すごすぎる...
正にどんぴしゃのコードです。
ありがとうございます。
ちなみに、
「シリアライズ可能クラス は long 型の static final serialVersionUID フィールドを宣言していません。」
という警告が出たのですが、これは何を意味しているのでしょうか。
動作の方は、至って正常です。
804:デフォルトの名無しさん
08/08/03 17:46:03
ググレ、カス
805:デフォルトの名無しさん
08/08/03 19:47:13
質問スレで回答がなかったので、こちらにも投稿させてください
mvel 勉強してるんですが、macro が分かりません。
URLリンク(mvel.codehaus.org)
mvel の macro とは何するものなんでしょうか?
どういったことを意図して作られた機能なのでしょう?
サンプルを実行しても理解できませんでした。
ただの文字列置換ではないですよね…
806:デフォルトの名無しさん
08/08/03 20:35:42
>>769
>>777,779 に賛成。
そもそも、何故そのようにまとめる必要があるのか?
そのまとめ方は、なんか共通処理があってそれを挿みたいから、それを interface で判断するって事?
自分は(おそらくその他大勢も)基本的にビジネスロジックも POJO がベストだと思っていて、
そのような共通メソッドでビジネスロジックを呼び出すスタイルは過去の物だと思っている。
例えば、Foo を渡すと Bar を返す Hoge という処理があったとする。
// interface
public interface Hoge{
Bar getBar(Foo foo);
}
// implementation
public class HogeImpl{
Bar getBar(Foo foo){
// do something
return bar;
}
}
さて、これでダメな理由って何? interface が増えるから?
個々のビジネスロジックの interface が増えるのは全く問題ではないのだが、
それが分からないのであれば、もっと勉強しなければならない。
ついでにこれを T execute(<E>) にした時の利点って何?
それは実装と interface の分離について何かメリットがあるのか?
最後に、とりあえず Seasar でも Spring でもいいから、なんか DI を使ってごらん。
サンプルアプリとかを見て、真似してみ。 やれば↑のことが分かるようになるはず、だと思う。
java にとっての DI は、もはや必須のパラダイム。 EJB3 にも DI が取り込まれたのも必然。やってみ。
807:デフォルトの名無しさん
08/08/03 21:19:35
HTMLを取得して、FORMタグ内のパラメータを作成して、フォーム送信するにはどうしたらいいですか?
HttpURLConnectionを使ってHTMLを取得するまではできていて、
HTML Parserを使って、FORMタグ内のタグ解析もなんとなくできそうですが、フォーム送信がさっぱり
GETならURLに?をつけてパラメータを結合したものをHttpURLConnectionから取得すればフォーム送信したことになりそうだけど、
POSTを使ってhiddenで送信されるパラメータをJava上から実現するのはどうしたらいいんだい?
808:デフォルトの名無しさん
08/08/03 21:24:27
コマンドプロンプト上で実行するJavaプログラムを書いてます。Win XPです。
時刻を表示して、時刻が変わったら上書きして表示するということをしたいのですが、
どのようにすれば良いのでしょうか。
また、無理だったら、画面をクリアして書き直すということをしたいのですが、
クリアの仕方もわかりません…
「Java 画面のクリア コマンドプロンプト」でググっても出ませんでした。
809:デフォルトの名無しさん
08/08/03 21:24:40
>>807
httpunit
810:デフォルトの名無しさん
08/08/03 21:25:09
POSTだったらgetOutputStreamしてそれに書き込めばいいよ。
811:デフォルトの名無しさん
08/08/03 21:27:32
>>808
コマンドプロンプト(System.out)の書き換えは基本的に不可能
というか、OSに依存していてWindowsじゃ無理
改行して次の文字を表示していくか、簡単なGUIをSwingで作ればおk
812:デフォルトの名無しさん
08/08/03 21:29:27
>>807
URLリンク(www.atmarkit.co.jp)
すでに手書きしているので今更だが、HttpUnitを使うともっと楽にできる。
813:デフォルトの名無しさん
08/08/03 21:32:48
>>811
ありがとうございます。
無理なのですか…残念です。
【時刻】2008/08/03/21:31:10
【時刻】2008/08/03/21:31:11
【時刻】2008/08/03/21:31:12
【時刻】2008/08/03/21:31:13
【時刻】2008/08/03/21:31:14
…
となるのは見苦しいですが、しょうがないのですね…
814:デフォルトの名無しさん
08/08/03 21:34:46
>>809,810,812
おまいらThx!即レスThx!
815:デフォルトの名無しさん
08/08/03 22:18:56
>>813
しょうがないっていうか、コンソールってどういう目的であるか考えろよ。
見苦しいんじゃなくて、そう流れるのが普通
816:デフォルトの名無しさん
08/08/03 22:33:11
HttpUnitすげーっと思って使ってみたらJavaScriptで落ちまくるw
これはやり方が悪いのかねぇ。
どうもページ内でリンクされてる外部のJavaScriptを読みにいってないっぽいんだよなぁ
817:デフォルトの名無しさん
08/08/03 22:42:47
>>813
こんなことは出来るんじゃないか?
System.out.print("HOGE");
System.out.write(0x0D);
System.out.println("ORZ");
818:デフォルトの名無しさん
08/08/03 23:04:56
>>806
丁寧にありがとう。Springを使ってる。言ってることも理解できます。
実践J2EEシステムデザインって本読んで、それを参考にやってますが、
やりたいことは、コントローラでビジネスロジックを呼び出す回数を出来る限り
少なくして、コントローラのテストを簡単にしたい。
コントローラが扱うビジネスクラスを限定したいのです。
そのために、ビジネスロジックのinterfaceを2段がまえにして、
コントローラから呼ばれるinterfaceはexecuteである程度汎用化して、
(ObjectかMapでモデルオブジェクトだけ返してくれれば十分なので)
これしか呼ばないようにする。ビジネスロジックの入り口。
より具象化した型はexecuteを実装したクラスの中だけで
扱うようにしたいんだけど、これは変なのでしょうか?
public interface Hoge<T, E>{
T execute(E object)
}
public class HogeImpl<Void, Integer>{
private Foo foo; // DIする
private Bar bar; // DIする
public int execute(Object o) {
foo.doXXXLogic()
bar.doYYYLogic()
return foo.getZZZ() + bar.getZZZ();
}
}
public interface Foo{
int doXXXLogic();
}
public interface Bar{
Biz doXXXLogic();
}
819:818
08/08/03 23:09:18
すみません、訂正。
public interface Hoge{
int execute()
}
public class HogeImpl{
private Foo foo; // DIする
private Bar bar; // DIする
public int execute() {
return foo.doXXXLogic() + bar.doYYYLogic();
}
}
public interface Foo{
int doXXXLogic();
}
public interface Bar{
int doXXXLogic();
}
820:デフォルトの名無しさん
08/08/03 23:32:01
>>818
だから、テストするクラスが少なくなってもテストするパターンが複雑になるんじゃ本末転倒。
それよりは静的言語のメリットを生かして、ビジネスロジックごとにインターフェイスきる方がいいんじゃね?ってのが流れだと(ry
>これは変なのでしょうか?
あえて時代に逆行しているのは構わないけど、誰からも支持されてないよな?
それが答えだよ
821:デフォルトの名無しさん
08/08/03 23:39:31
>>820
コントローラでぐちゃぐちゃとビジネスクラスを呼び出してる方が
テストは複雑な気がするのですが・・・。
POJOじゃないクラスでのテストが増えるってことでしょう?
822:デフォルトの名無しさん
08/08/03 23:55:14
ビジネスロジックを意味のある塊に纏めて実行するビジネスロジックを用意すればいいじゃないか。
変な皮被せるんじゃなくて、純粋にビジネスロジックとして纏めるんだよ。
何のための DI だよ?
823:デフォルトの名無しさん
08/08/04 00:37:01
>>817
目的のことが出来ました!
ありがとうございます。
824:822
08/08/04 00:39:08
と思ったら、DI してるのか。
しかし >>818,819 は何だ?
Foo も Bar も静的に型が決まるんだから、汎化して呼び出す意味が分からん。
本来 Foo やら Bar やらが持つ意味どおりに getXxx やら getYyy を呼べよ。
真剣にその汎化して呼び出す理由が分からん。
例えばカートを扱うサービスがあったとして、 putXxx とか removeYyy とかやりたいと思うのだが、
それだともの凄く窮屈じゃないか?
とても分かり難いソースにならないか?
実装とインタフェースの分離ってのは、やってもらうことは決まってるけど実装には依存しないってことだよ。
何でも屋インタフェースを用意するってことではないよ。
会計データを入力すると決算書を吐くインタフェースはあっていいが、
何か頼むと何かやってくれるインタフェースなんてあっても意味ないぞ。
825:デフォルトの名無しさん
08/08/04 00:40:21
なんか根本的に話が通じてない気がするな
そもインターフェイスを統一することに何のメリットがあるんだ?
826:デフォルトの名無しさん
08/08/04 00:49:42
誰でも簡単に使える(笑)フレームワークでも目指しているんじゃない?
827:デフォルトの名無しさん
08/08/04 00:52:43
おk、インターフェイス名はプログラムIDの連番
全ての定義メソッドはexecuteだ
プログラムID+Resultという型で結果を返すこと
この手の設計と似ているね・・・
828:デフォルトの名無しさん
08/08/04 01:11:15
serialVersionUIDについて質問させてください。
次のようにクラスに追加したら、シリアライズに関するエラーが
なくなると思っているのですがなくなりません。
どこが問題なのでしょうか。
model = new DefaultTableModel(column, 0) {
// シリアライズに関する警告を消そうと思い追加
private static final long serialVersionUID = 1;
// オーバーライドしたいメソッド
public Class<?> getColumnClass(int columnIndex) {
return Integer.class;
}
};
便乗になるのですが、このようにクラスのインスタンスの生成時にメソッドを
オーバーライドするというのは、よくあることなのでしょうか。
普通は、サブクラスを作成してそこでメソッドをオーバーライドし、
サブクラスのインスタンスを作成するものだと思うのですが。
829:デフォルトの名無しさん
08/08/04 03:35:19
>>828
ただ、エラーを消すために、
private static final long serialVersionUID = 1;
こんなことするくらいだったら、
eclipseの設定で出なくしちゃっていいよ。
設定のコンパイラの辺りでどーにかなるよ。
それが嫌ならちゃんと直列化について勉強するとよいよ。
830:デフォルトの名無しさん
08/08/04 03:38:16
>>828
イベントリスナやら、Comparatorなんかではよく見るけど、
インタフェースを実装するときがほとんどだな。
つまり、よくあることではない。
ってことだ。
831:デフォルトの名無しさん
08/08/04 07:34:59
>>828
@SuppressWarnings でおk。
@SuppressWarnings嫌いって多いけど、
そうなら勉強するしかない。
そして@SuppressWarningsが正解で、
デフォルトバージョンを入れてしまうことが間違いだと分かる。
>>便乗になるのですが、このようにクラスのインスタンスの生成時にメソッドを
>>オーバーライドするというのは、よくあることなのでしょうか。
よくある。
別にクラス作っても一緒だけど、
「たった一つ振る舞いを変える」かつ、
「その振る舞いはそこでしか使わない」
の場合は生成時オーバーライドが一番見やすい。
832:デフォルトの名無しさん
08/08/04 10:05:14
>>825
DI登場以前にはメリットがあった。
トランザクション管理とか、ロギングとかね。
今では、過去の遺物だと思う。
833:デフォルトの名無しさん
08/08/04 10:12:56
serialVersionUIDの警告はIDEが過剰に出してるものだからIDEの設定で切るのが筋。
javacやantだと出ないでしょ、たしか。
834:デフォルトの名無しさん
08/08/04 12:12:00
JAVAの最大化ボタンを押せなくする(使用不可能)プログラムを教えてください。
お願いします。くぐったんですけど出てきませんでしたm(__)m
835:デフォルトの名無しさん
08/08/04 13:00:25
URLリンク(www.uploda.org)
↑
mojiフオルダ内にある[moji000~moji004]の5枚の画像について、読み込み
とある処理をして出力するプログラムなんですが
[moji0~moji4]を読み込むにはどのように書き換えればよいのですか?
836:デフォルトの名無しさん
08/08/04 13:05:36
>>835
宿題スレで書いてもらったコードだろ・・・
>private static DecimalFormat df = new DecimalFormat("000");
を
private static DecimalFormat df = new DecimalFormat("0");
でどうよ?
837:デフォルトの名無しさん
08/08/04 13:13:21
>834
java.awt.Frame#setResizable(boolean)
838:デフォルトの名無しさん
08/08/04 13:40:13
>>837
それはImportの所に置きますか?
それとも初期化の所に置くのですか?
839:デフォルトの名無しさん
08/08/04 16:54:05
JTableで作成したテーブルのカラムを後から変更することは
できるでしょうか。
getColumnNameがあるのに、setColumnNameがないようなのです。
また、getColumnで取得できるTableColumnにも
名前を設定できるメソッドがありません。
840:デフォルトの名無しさん
08/08/04 17:17:42
setHeaderValue(Object)ってなかったっけ?
841:デフォルトの名無しさん
08/08/04 17:38:42
それでいけました!
ありがとうございます。
842:デフォルトの名無しさん
08/08/05 09:44:13
Objectクラスはnewできますが、new Object()をする場合などあるのでしょうか。
今までロックインスタンス用としてしか使用したことがありませんが、他に有意義な使用法等あれば教えてください。
843:デフォルトの名無しさん
08/08/05 09:51:55
>842
URLリンク(www.google.co.jp)(%22
844:デフォルトの名無しさん
08/08/05 11:34:30
while ・・・
String a;
a = ・・・
}
は
String a;
while ・・・
a = ・・・
}
すべきといわれますが、なぜでしょうか?
845:デフォルトの名無しさん
08/08/05 11:52:37
{がなくてwhileがどうなってるかわからんけど前者だとaの定義を何回も行う事になるから。
846:デフォルトの名無しさん
08/08/05 12:01:06
>>844
一般的には、前者の方がスコープ短くできるので良いとされる。
後者が良いのは a の初期化処理が共通で使いまわせる場合とかだね。
847:デフォルトの名無しさん
08/08/05 13:08:42
a.xml
=======
<a>
<b>
<c>1</c>
</b>
</a>
=======
b.xml
=======
<a>
<b>
<c>2</c>
</b>
</a>
=======
を下記のようにマージするクラスやフレームワークはあるでしょうか?
<a>
<b>
<c>1</c>
</b>
<b>
<c>2</c>
</b>
</a>
848:デフォルトの名無しさん
08/08/05 14:32:09
クラスをbyte[]に変換することは出来ますか?
Hoge hoge = new Hoge();
byte[] buf = (byte[])hoge;
上記のようなことがしたいのですが・・・
よろしくお願いします。