[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 15:14 / Filesize : 271 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:10:53 ]
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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質問・相談スレッド100【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1175317038

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

JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

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

29 名前:デフォルトの名無しさん [2007/05/01(火) 12:41:18 ]
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
sdf.format(new Date(time));

30 名前:デフォルトの名無しさん [2007/05/01(火) 12:43:45 ]
APIが読めるぐらいの基礎知識はつけろよ!

31 名前:デフォルトの名無しさん [2007/05/01(火) 13:56:18 ]
JAVAの開発環境はどれがオススメですか?
できればfreeがよいです。
windows、macで変わりますか?

32 名前:デフォルトの名無しさん [2007/05/01(火) 15:02:07 ]
開発環境の質問が出ているので便乗で失礼します。

Javaをはじめたばかりなんですが
Eclipseなどの開発環境をいきなり入れるべきか
まずはエディタ+JDKの王道でやっておくべきか
どちらの方がおすすめでしょうか?

33 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:09:05 ]
>>32
どっちでも自分がいいと思った方を選べばいいよ
自分の感性を信じるんだ

34 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:10:10 ]
この手の話は100万回繰り返されてて、一歩間違えば荒れる元だが

それでも敢えて言うなら、IDEから始めた方が良いと思う。この方が馴染みやすい。
ただ、ある程度Javaに慣れてきたら、エディタ+JDKでの開発にもふれておくべき。
IDEの後ろで何が起きているかは知ってて損はない。

35 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 15:30:58 ]
まずはコンパイラの使い方覚えてからIDE触った方が良いよ

36 名前:32 mailto:sage [2007/05/01(火) 15:55:09 ]
>>33-35
「どちらが良いかは人それぞれ」なんですね。
かなり乱暴なイメージとしては、初心者がウェブサイトを作るのに
メモ帳で手打ちしていくかホームページビルダーを使うか、
といった感じなんでしょうか。
ものの本を何冊か読んでみたところ、
エディタ+JDKが大前提で書かれてるものばかりだったので、
初めから統合開発環境に手を出すのはご法度なのかと思っていましたが、
そうとも限らないんですね。
簡単なコーディングをいくつかエディタで書いてみてから
統合開発環境も触ってみようと思います。

レスありがとうございました。

37 名前:デフォルトの名無しさん [2007/05/01(火) 16:36:21 ]
>>32
無料なんだから全部試してから決めれば?



38 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:10:42 ]
すごく抽象的な話ですみません。、
関数を使うとき微妙に違う処理なんだけど引数に渡すものもない場合
どう呼び出すんでしょうか?
例えばtextshow1関数とtextshow2関数って分けずに
textshow関数で引数を渡すと思うんですが、
textfield1と2で違うだけって場合とか。
文字列を渡してやればいいのでしょうか?スマートでない気もします。

39 名前:デフォルトの名無しさん [2007/05/01(火) 17:22:20 ]
DataInputStreamとBufferedReaderの共存についての質問です。

HTTPのクライアントを書いていて、
以下のようにテキスト入力用のBufferedReaderと、
画像等のデータを入力するためのDataInputStreamを同時に使いたいと考えています。

InputStream is = sock.getInputStream();
DataInputStream DataIn = new DataInputStream(is);
BufferedReader TextIn = new BufferedReader(new InputStreamReader(is,1);

ヘッダをBuffuredReader#readLine()で""(ヘッダ終わり)が出るまで読み込んだ
後に、DataInputStreamでデータを読んでも、0バイトしか読み込めませんでした。
(バッファに先読みされた?)

BufferedReaderをまったく使わずにDataInputStream#readLine()を使えば一応
問題ないのですが、こちらのメソッドは非推奨らしいので出来れば使いたくありません。

この二つをうまく共生させる方法はありませんか?よろしくお願いします。


40 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:22:42 ]
> 微妙に違う処理なんだけど
何が違うのか具体的、かつ詳細に。

っつか、何が問題なのかもよくわからんし、
面倒だから自分の気が済むようにすればいいんじゃね? とか思わなくもない。

41 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:58:03 ]
>>39
> この二つをうまく共生させる方法はありませんか?
\r\n\r\n を検知したら -1 返すような InputStream 作って、
Reader にはそれを渡すとかして、先読みさせないようにするとか。

BufferedReader textIn = new BufferedReader(new InputStreamReader(
new InputStream(){
 private boolean eof = false;
 private int data = 0;
 public int read(){
  if(eof) return -1;
  int b = is.read();
  data = data << 8 | b;
  eof = (b == -1 || data == 0x0d0a0d0a);
  return b;
 }
}));
とか。

素直に java.net.HttpURLConnection とか使った方が良いような気もする。

42 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 19:00:22 ]
>>38
↓みたいなことがしたいってこと?
import java.awt.TextField;

private TextField textfield1 = new TextField();
private TextField textfield2 = new TextField();
public void textshow(java.awt.TextField field){
 field.setText("テスト");
}
呼び出すときは textshow(this.textfield1); textshow(this.textfield2);

43 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 20:24:22 ]
sjc-pうかた\(^o^)/

44 名前:デフォルトの名無しさん [2007/05/01(火) 20:32:16 ]
>43
貴様、朝4時頃にカキコしてたやつだろ。
朝っぱらから受けるんだなぁと思ってたら、こんな時間まで…

45 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 20:35:39 ]
試験は昼過ぎに終わったよ
帰りにショッピングしてたよ\(^o^)/

46 名前:デフォルトの名無しさん [2007/05/01(火) 20:59:53 ]
\^o^/

47 名前:デフォルトの名無しさん [2007/05/01(火) 21:30:32 ]
ランダムバナーを作りたいんだけども、どうしてもIE6で警告文が表示される。
こんな感じです。
<SCRIPT language="JavaScript">
<!--
jmp = new Array();
img = new Array();
jmp[0] = "リンク先";
jmp[1] = "リンク先";
jmp[2] = "リンク先";
img[0] = "画像";
img[1] = "画像";
img[2] = "画像";
n = Math.floor(Math.random()*jmp.length);
document.write("<a href='"+jmp[n]+"'>");
document.write("<img src='"+img[n]+"' border='0'>");
document.write("</a>");
//-->
</SCRIPT>
画像は事情があって同じディレクトリに置けないので、htmlから始まるアドレスを入れて表示させています。
警告文を表示させないで実行したいのですがどうすればいいか教えてください。




48 名前:デフォルトの名無しさん [2007/05/01(火) 21:35:25 ]
>>1

49 名前:デフォルトの名無しさん [2007/05/01(火) 21:39:21 ]
>>2

50 名前:デフォルトの名無しさん [2007/05/01(火) 21:43:22 ]
アプレットでメソッドを参照することはできますか?
どういうことかというと、↓みたいなことをアプレットでもできるか?という意味です。

class A{
public static void main(String[] args){
B();
}

public static void B(){
C;
}

}

51 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:51:58 ]
>>50
メソッド呼び出してるようにしか見えないんだけど。
参照ってどこにあんの?

52 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:53:49 ]
メソッドを参照という言葉を意味が通るように解釈すると、
「Methodオブジェクトを取得して何かする」という意味になりそうだが
たぶん違うな。


53 名前:デフォルトの名無しさん [2007/05/01(火) 21:53:58 ]
じゃあ参照じゃなくて呼び出しです。

54 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:58:58 ]
>>53
なんでメソッド呼び出しが できなくなるって思うんだ?

55 名前:デフォルトの名無しさん [2007/05/01(火) 22:03:10 ]
やってみてもできないからです。
drawlineを含んでるからかな。

56 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 22:10:02 ]
呼ばれてるけど期待する結果になっていないのか、
呼ばれておらずなにも起こらないのか、
コンパイル自体ができないのか、
いろいろ可能性があって回答不能。


57 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 22:11:58 ]
>>55
とりあえず、ソース全部晒せ。
コンパイルエラーか実行時エラー出てるなら、それも全部。



58 名前:デフォルトの名無しさん [2007/05/01(火) 22:14:57 ]
晒すのは嫌なので自分で何とかすることにします。ありがとうございました。

59 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 22:47:12 ]
>>39
なるほど!
うまくいきました。
>java.net.HttpURLConnection
こんなクラスあったんですね・・・検討したいと思います。

ありがとうございました。

60 名前:デフォルトの名無しさん [2007/05/01(火) 23:29:07 ]
SwingとかSWTでプログラミングするって聞きますが、これらはIDEなんですか?

61 名前:デフォルトの名無しさん [2007/05/01(火) 23:30:08 ]
違います。

62 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:09:17 ]
最近はじめたばかりの初心者です
入力した誕生日に対して現在の日付を基準に年を求めるメソッドを
作りたいのですが、どのメソッドをどのように使ったらいいかわかりません・・・(´・ω・`)
どなたか教えてください(´・ω・`)


63 名前:デフォルトの名無しさん [2007/05/02(水) 00:18:03 ]
>>62
現在日付は取れるのか?
四則演算は出来るのか?
誕生日入力ってのはmainのパラメータで渡すのか?

何が出来ないんだ?
出来る事と出来ない事を分けて書いてくれ

64 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:36:58 ]
>>62
中身はよくないと思うが参考にはなるだろう

ttp://forum.java.sun.com/thread.jspa?threadID=685608&messageID=4021491

つまり
java.util.Calendar
java.util.Date


65 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:59:38 ]
回答が得られないので、違うスレから移動してきました。

java初心者なのですが、
int a,b に数字を入れて割り算を行い、余りも含めてdouble型で出力しようとして

public static void main(String[] args) {
int a = 5;
int b = 3;
double d;
d = a/b;
System.out.println("5/3="+d);

}



と記述してみたのですが、実行結果は1.0となってしまいます。
どうすれば余りも含めて表示することができるのでしょうか?


66 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 01:01:57 ]
算数初心者?

67 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 01:09:40 ]
初心者なのですが≒頭が悪いのですが



68 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 01:14:57 ]
int / int = int
(double)int / (double)int = double

69 名前:デフォルトの名無しさん [2007/05/02(水) 08:33:03 ]
%←あまり

70 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 09:44:47 ]
>>65
商と剰余を同時に計算することはできないので、それぞれやる計算する
がある。ところで、doubleでの余りってどういうものを期待している?



71 名前:デフォルトの名無しさん [2007/05/02(水) 10:14:40 ]
Java(ジャバ) の読み方というかイントネーションについて。

1.↑↓(吉幾三の『よし』に近いイントネーション)
2.↓→(和田アキ子の『わだ』に近いイントネーション)

どっちなんでしょうか?

72 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 10:17:20 ]
中国語の四声に合わせて読んでみよう
ジャヴァ、ジャヴァ、ジャヴァ、ジャヴァ

73 名前:デフォルトの名無しさん [2007/05/02(水) 10:19:06 ]
たすけてくれぇぇ
xlsファイルをCSVファイルに変換するJAVAプログラムなんて
あるのぉ??
(σ´Д`)JExcelApi使ったけどリファレンスが全部英語でわかんねぇ



74 名前:71 mailto:sage [2007/05/02(水) 10:22:18 ]
>>72
読んでみましたが、第2声なのか第4声なのかというところですかね。
どっちが主流なんでしょうか?

75 名前:65 mailto:sage [2007/05/02(水) 10:27:00 ]

わかりました。
わざわざありがとうございます。

76 名前:72 mailto:sage [2007/05/02(水) 10:43:05 ]
>74
いや、あの…ネタだったのに、ごめんorz
個人的には『わだ』式。
元々英語なんだから日本語にした時の発音なんてそれぞれじゃね?

77 名前:デフォルトの名無しさん [2007/05/02(水) 10:47:33 ]
>73
つーか、ExelでCSV保存しなおすことができるよね



78 名前:71 mailto:sage [2007/05/02(水) 11:20:43 ]
>>76
あ、ネタだったんですか・・・。
でも、分かる人には四声で表現した方が伝わりやすいですね。

>元々英語なんだから日本語にした時の発音なんてそれぞれじゃね?
それもそうなんですが、例えばWordとかExcelとかだと第1声に近い感じのが主流ですよね。
Javaにもそういう主流の発音があるのかなぁ、と思ったので。
どうでも良いと言えば、どうでも良いんですけど
以前、Word、Excelの発音が第4声に近い感じの人が
「WordとExcelぐらいできますよ〜」と自身満々に言ってた割りに全然使えなくて
「使い慣れてる人はあんな発音しないよな・・・」みたいな印象をみんな持ってたので
ソフトの発音と言えどもバカにはならないな、と思ってたんですよね。
もし主流の発音があるのなら今のうちにそっちにしとこうと思って質問したんですが、
って、ものすごく長くなってすみません。
発音気にする前にワニの本読みます。

79 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:28:47 ]
仕事をしていると

( c == 'A' )

がアザラシに見えてきます。どうすれば良いんでしょうか?

80 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 12:32:24 ]
>>79
定数を定義する。これで'A'がメソッドの中に現れることはない。例えばこう。
public static char ^ω^ = 'A';

81 名前:デフォルトの名無しさん [2007/05/02(水) 12:52:35 ]
俺なんてjavaのキャラクターが奥歯に見えるぜ。

82 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 13:04:25 ]
String型のデータをDate型にいれるのってどうすればいいですか?

83 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 13:09:33 ]
>>82
>>29あたり見れ

84 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 13:12:28 ]
>>83
ありがとうございます!

85 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 13:12:35 ]
え      くせる
  くせる え

どっちとも読むと思われ。

86 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 14:06:48 ]
>>80

( c == ^ω^ )

どう見ても、アザラシです。ありがとうございました。

87 名前:82 mailto:sage [2007/05/02(水) 14:27:47 ]
やってみたんですが>>29だと現在の日付になっちゃいますよね?

StringにYYYY/MM/ddの形で文字列が入ってることが前提だとどうすればいいでしょう?



88 名前:デフォルトの名無しさん [2007/05/02(水) 16:41:51 ]
>>87
あのなぁ>>29が回答だなんて誰も言ってないだろ?
ある程度ヒントが出てるんだからクラス名使って自分で調べろよ。
その上で何が分からないのかを聞けよ。

もしも自分なりに調べた上で質問してるなら
何を何処まで調べて、何が分からないんだ?

89 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:48:52 ]
>>87
java.sun.com/javase/ja/6/docs/ja/api/java/text/DateFormat.html#parse(java.lang.String)
java.sun.com/javase/ja/6/docs/ja/api/java/text/SimpleDateFormat.html#parse(java.lang.String,%20java.text.ParsePosition)

90 名前:デフォルトの名無しさん [2007/05/02(水) 21:05:17 ]
JAVAでxlsファイル(計3シート)を
csvファイルに変換したいのだが・・・。
どうしてもcsv変換後は前と(セルの中身)配置が違う。
どうしたらいいんだ〜!誰か・・エレガントなロジックをおしえてくれぇぇ!!
読み込みにはPOIを使用してます。

91 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:11:41 ]
マルチかよ・・・

92 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:14:41 ]
swing使ってwindowsプログラミング?してるんですが、
何か手軽にデバッグできるようなのありませんか?
C(win32api)ではダイアログボックスがすごく便利でしたが、
それに相当するようなものないかなーと

93 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:18:46 ]
>>92
javax.swing.JOptionPane#showMessageDialog とか?

素直にNetBeansとかEclipseみたいなIDEの
付属のデバッガ使った方が良いような気もするけど。

94 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:45:58 ]
>>93
なぜか付属のデバッガのことを忘れてましたw
ありがとうございました。

95 名前:デフォルトの名無しさん [2007/05/02(水) 22:58:21 ]
JAVAでプロセス間通信ってどうやってやるの?

96 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:09:47 ]
ソケットを使うのは普通に出来る。
共有メモリとかは標準にはないけど、NIO方面になんかあったよーな気も……


97 名前:デフォルトの名無しさん [2007/05/02(水) 23:10:08 ]
>>95
ソケット通信とか色々あるけど



98 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:31:37 ]
textfieldの一番左端に文字をsetするには
どうすればいいでしょうか?

99 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:35:14 ]
すみません。右端でした。

100 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:35:44 ]
しかもtextareaでした。

101 名前:デフォルトの名無しさん [2007/05/02(水) 23:47:47 ]
テキストの文字を取得して、最後に文字をくっつけて、またテキストにセットすればいいやん。

102 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:53:02 ]
いえ、そういうことではなくて、
setTextを使うとtextareaの左端に表示されてしまうので。
それをtextareaの右端に表示したいんです。

103 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:05:26 ]
AWTだとプラットフォームのpeer次第だろうな。

SwingのJTextAreaは
textArea.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
だろうか。
正確には、中に子供部品を配置するときの左右に関係するパラメータだと思ったが。


104 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:19:18 ]
ありがとうございます。
swingなので、よくわかりませんがやってみます。

105 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 01:01:01 ]
jakarta POIで、あるExcelファイルを読み込むと
org.apache.poi.hssf.record.RecordFormatExceptionが出る。
元のExcelファイルをExcelで開いて上書き保存するとちゃんと読み込めるんだけど、
元ファイルを吐くプログラム作った人に言わなきゃいけないんだろうか。

というかマスタぐらいcsvで吐いてくれよヽ(`Д´)ノウワァァン
一応poi-3.0-alpha3-20061212.jarとpoi-2.5.1-final-20040804.jarで試してみたけどだめぽ。

106 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 01:03:35 ]
JTextFieldなら
import static javax.swing.SwingConstants.TRAILING;
textField.setHorizontalAligment(TRAILING);
で、現在の行方向の行末に向かって揃えられる。
TRAILINGの代わりにRIGHTなら行方向にかかわらず右揃えになる。

JTextAreaにはsetHorizontalAlignmentなかったな。


107 名前:デフォルトの名無しさん [2007/05/03(木) 02:04:34 ]
質問ですただいま私のプログラムに3つのjavaがはいっているのですが
5・0の9、10、11と入っています?これは上書きされないのでしょうか・・
容量ばかり食ってしまうので、9と10を捨てて最新と思われる
11だけを残しておけば後はアンスコしても大丈夫でしょうか?
それとも9も10も11もそれぞれ違う役割をしているからどれか1つでも
アンスコしたら何かが起動しなくなる・使えなくなるなどということがある。
などということでも何でも良いので教えてください。お願いします。




108 名前:デフォルトの名無しさん [2007/05/03(木) 02:23:17 ]
>>107
JDK自体に問題はない
クラスパスどこで管理してるかは君次第

109 名前:デフォルトの名無しさん [2007/05/03(木) 12:54:49 ]
>>108
レスありがとうございます。すいません、初心者なもんで
ちょっと説明が難しいのですが。とにかく、9,10,11は
それぞれ別物ということでしょうか?そしてその9でも10でも11でも
何かのプログラムが例えば9のjavaで使用していればアンスコしたら
使えなくなるから×で最新と思われる11のjavaでも何も使用して
いなければアンスコしてもおkということでしょうか。。。

110 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:45:36 ]
>>109
そんな感じ。

111 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:54:24 ]
>>109
自分で何も設定した覚えがなければ、とっくに動いていない9・10をさっさと消すべし

112 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:01:58 ]
抽象クラス(というか継承)の使い方がよくわかりません。

クラスA,B,Cを含むパッケージがあります。
Aは抽象クラスです。
Aを継承したクラスB,C,Dを作成します。
B,C,Dは異なる実装ですが、同じ機能を提供します。

この場合、B,C,Dのインスタンスは外部からは何型として参照すれば良いのでしょうか。


113 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:07:41 ]
×クラスA,B,Cを含むパッケージがあります。
○クラスA,B,C,Dを含むパッケージがあります。

でした。すみません。


114 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:10:17 ]
普通は A 型の参照に入れると思うけど。
大雑把に言って、

A a;
if(hoge) {
 a = new B(foo);
} else if(hage) {
 a = new C(bar);
} else {
 a = new D(baz);
}
a.hige();

みたいなことがしたいんじゃないの?
まあ、B, C, D に拡張機能がある場合は
直接 B, C, D を使う場合もあるだろうけど。

115 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:39:58 ]
>>114さん
やりたいことはその通りです。
B,C,Dには拡張機能はありません。
B,C,Dは実行環境(プラットフォームでも良い)に依存したクラスです。


・クラスA,B,Cを含むパッケージがあります。
・Aは抽象クラスです。
・Aを継承したクラスB,C,Dを作成します。
・B,C,DはAの異なる実装ですが、同じ機能を提供し、それぞれに拡張機能はありません

ここに、インスタンスの生成に関して2つ条件を加えようとしています。

・B,C,Dのインスタンスは排他的にどれか一つしか生成できません。
・B,C,Dのインスタンスはいずれも、同時に一つしか生成できません。

これが上手く実現できません。。。

116 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:46:42 ]
>>112
>B,C,Dは異なる実装ですが、同じ機能を提供します。
ここまで分かってるなら理解してるような気がするけど、
機能が同じでも実装が違えば返ってくる値が違うってのは理解してる?


117 名前:112 mailto:sage [2007/05/03(木) 14:54:11 ]
>>116さん ご返答有難うございます。

>機能が同じでも実装が違えば返ってくる値が違う
Aから継承したメソッドをA型参照から呼び出しても、
それがBのインスタンスであるかCのインスタンスであるかによって、
実行される処理が変わるということでしょうか?



118 名前:112 mailto:sage [2007/05/03(木) 14:55:19 ]
115について、自分が考えたのは、

1.AにstaticなA型ポインタをメンバとして加える。
2.Aにstaticなインスタンス生成用のメソッドを追加する。
3.2のメソッドは1のポインタにB,C,D何れかのインスタンスを生成して参照(代入)させ、
1のポインタを返す。
4.B,C,Dのクラスまたはコンストラクタのスコープをパッケージで閉じてしまう。
5.↑によって、B,C,DのインスタンスはAのメソッドを通してA型としてしか取得できないようにする。

これってなんかおかしいでしょうか・・・。

119 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:59:44 ]
>>115
排他的でシングルトンなファクトリクラスを作れば良いかな。
シングルトンの管理は色々出来そうだけど
A,B,C,D,ファクトリを同じパッケージにしてB,C,Dのコンストラクタはパッケージープライベートにする。
んで、ファクトリはAのサブクラスのインスタンスを一度でも生成したか
どうかのフラグを持つ。B,C,Dのインスタンスを返すメソッド(ファクトリメソッド)内でフラグ立てる。
フラグが立ってれば以降はインスタンスを返さないか、
または生成済みインスタンスを返す。

大雑把だけどかんな感じか。


120 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:45:19 ]
>>117
そう。これサンプル。
ttp://www.vipper.org/vip499966.java

抽象クラスと継承については理解してるよ。
やろうとしてる事は
それとはあんまり関係ないきがする。
デザインパターンかも。



121 名前:112 mailto:sage [2007/05/03(木) 16:11:50 ]
>>119さん,120さん
有難うございます。
デザインパターンについて少し調べてみることにします。

122 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:13:16 ]
APIのメソッドのソースをEclipse上での見方を教えてください。
「ソースが見つかりませんでした。」
となるのですが・・。
どこからかDLすれば見れるようになるとかいうことでしょうか?

宜しくお願いします。


123 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:15:27 ]
APIソースはJDKに入ってる。
仮想マシンの設定あたりにソースzipを指定する箇所があるよ。


124 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:18:46 ]
構造体の2次元配列ってどうやって定義すればよいの?

こんな感じで使いたいのです。

myName[0][0].sei = "性"
myName[0][0].mei = "名"

ちなみにこんなふうにしてみましたがダメでした。

class StructName {
String sei;
String mei;
}

StructName myName[][] = new StructName[5][5];

myName[0][0].sei = "性" ← 代入しようとするとエラーになる。




125 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:26:37 ]
まずそれは構造体じゃない
で、最初に初期化しなきゃだめ
for〜〜
for〜〜
myName[i][j] = new StructName();

あとお前はコンストラクタでググるべきだ

126 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:23:52 ]
コンストラクタでググる前にjavaの教科書を頭から読み直すべきだな

127 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:44:55 ]
オブジェクトが存在するかどうか調べるにはどうすればいいでしょうか。



128 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 05:27:42 ]
もすこし詳しく

129 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 14:19:42 ]
int[] vec = new int[2];

このような1次元配列vecを2次元配列としてメソッドに渡したいのですが、どうしたらいいのでしょうか?
今は下のように書いているのですが、キャスト専用の変数を作るのとコードが冗長になってしまうのとが気になってしまって
もっとシンプルに書く方法ってありませんかね?

int[][] temp = new int[1][2];
temp[0] = vec;
method(temp);






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef