トップページ⇒tech
1001コメント308KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
JAVA初心者の方はこちらのスレで質問をしましょう。そして誰か教えてあげてください。

なお、ソースを貼るときには、半角空白が消える仕様のため、タブ1つを全角空白2つに
置換してから投稿しましょう。わからないときはどこがどうわからないのか?、動かな
いときはどこがどう動かないのか?なぜそう判断したのか、エラーメッセージや結果な
どと一緒にお書き下さい。雑誌や宿題などの疑問を質問するときは出展を明記したほう
が解決が早いです。

関連情報は >>2-10 あたりにあります。 (一部 dat落ちやHTML化待ち)


JavaScriptの質問はWeb製作板へどうぞ。
web制作管理
http://pc.2ch.net/hp/

パソコンの基本操作に関しては、PC初心者板や、各OS板などで質問しましょう。
パソコン初心者@2ch掲示板
http://pc.2ch.net/pcqa/

上級者の方で教える技術が無い方は下記スレでダベりましょう。
初心者無視! Java相談室 その9
http://pc3.2ch.net/test/read.cgi/tech/1021555964/


基本的にsage進行でおねがいします。また煽り厨は放置でお願いします。
http://pc.2ch.net/tech/kako/1026/10266/1026601774.html
0412デフォルトの名無しさんNGNG
>>370
そんなにClass.forName()の仕様が気に入らないんなら自分でメソッド追加すればいい
public static Class classForName(String name) {
  if (name.equals("int"))
    return int.class;
  else if (name.equals("double")
    return double.class;
  else
    return Class.forName(name);
}
これ使ってればどれほど君の言う仕様がどれほど便利か/どれほど意味がないか
わかるんじゃない?
0413名無しさん@EmacsNGNG
J2SDK1.4.1がそろそろ出るっていうのに、1.4.0_02をリリースしやがった。
じらしているのか????

0414デフォルトの名無しさんNGNG
しばらくは1.4.1RCで我慢?
0415370NGNG
>>407

Class.forName(Integer.class.getName()) -> Integer.class
Class.forName(int[].class.getName()) -> int[].class
Class.forName(int.class.getName()) -> java.lang.ClassNotFoundException

これが、

Class.forName(int.class.getName()) -> int.class

こうなる。これに尽きる。別に Name でなくても、Signature でもかまわない。


>>412
確かに便利でもないし意味もないね。だってコンパイル通らないんだもん。プ。
0416デフォルトの名無しさんNGNG
>>415
っつか、
Class.forName(int.class.getName()) の戻り値が int.class
だと何が嬉しいのかサッパリわからないんだが。
0417デフォルトの名無しさんNGNG
>>307
>>402の、「めんどい場合」ってのを具体的に例示しないと、
共感を得るのは激しく難しいと思われ

>>391
> >>385
> じゃあ無名パッケージ内に "[I" ってクラスが存在するのか?
>>399
> プリミティブ(byte, char, double, float, int, short, long, boolean,
> void)の Class オブジェクトを間接的に得る方法は提供されていないのか?
> Class.forName が純粋にバイナリ名から Class を返すのでないことは、
> "[I" で int[].class を返すことで明らか。
> なら "int" から int.class を得る手段が用意されてても良さそうなのだが。
>>402
> Class.forName(int.class.getName()) で int.class が復元できないと、
> リフレクションを使うプログラミングでめんどい場合がある。
>>405
> せめて Class.getSignature()、Class.forSignature(String)
0418デフォルトの名無しさんNGNG
例えば java.reflect.Method#invoke に与えるパラメータ型リストは
Classの配列だけど、効率を度外視してもっと意味的に整った設計は、
「Type」「IntType」「BooleanType」とかの名前のインターフェイスが
別にあって、「ReferenceType」の場合だけ参照先のクラスをとれる、
という形だと思う。

つまり、
int.type : IntType (subclassof PrimitiveType)
String.type : StringReferenceType (subclassof ReferenceType)
String.type.getReferedClass () == String.class
とか。あるいは、
class String implements ReferenceType
とかでもいいけど
0419デフォルトの名無しさんNGNG
訂正:
× java.reflect.Method#invoke に与えるパラメータ型リスト
○ Class#getMethod に与えるパラメータ型リスト
0420うわ、ひでーNGNG
また訂正:
× String.type : StringReferenceType (subclassof ReferenceType)
○ String.type : ReferenceType
× class String implements ReferenceType
○ String.class (instanceof ReferenceType)
0421デフォルトの名無しさんNGNG
>>418
invoke( Object obj, Object[] arg ) でしょ…
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/reflect/Method.html#invoke(java.lang.Object, java.lang.Object[]
0422デフォルトの名無しさんNGNG
>>418
よく分からんが、そーすると何が便利になるの?
0423デフォルトの名無しさんNGNG
だから、便利になるとかじゃなくて、
現在の int.class とかの基本型に対応する Class オブジェクトってのが、
本質的には反則的な存在だってことがいいたかった。
「基本型はクラスと同列の存在ではなく、(オブジェクトへの)参照型と同列」
ってこと
0424418-420=423NGNG
まわりくどかったけど、要するにこれ↓への反論だったということになるかも
>>402
> 仕様として気持ち悪いし。
0425デフォルトの名無しさんNGNG
>>423
なんだ… ただの自己満足か。
ちなみに、反則っつーなら null の扱いはどーすんだ?
0426デフォルトの名無しさんNGNG
>リフレクションを使うプログラミングでめんどい場合
ってのはどーなったんでしょう?
0427418NGNG
>>425
> null の扱いはどーすんだ?
すまん。意味が分らん。少なくとも仮引数には基本型や参照型がついているはずだが
0428デフォルトの名無しさんNGNG
>>427
Reflection の中で Primitiveな型が反則だというなら
直接 Reflection とは関係ないが null も反則な値だろ?
Reflection をより合理的に、というなら全ての例外的なものを
合理的にすべきだと思うが。

例えば、null instanceof Object は true でないのに
methodA( Object obj ){ /* 空 */ } なる
Method methodA は methodA.invoke( obj, Object[]{ null } ) としても
IllegalArgumentException を返さない。
これは合理的でないと思うけど。

逆説的に「そーゆー事言い出すとあっちでもこっちでも
綻びなんか幾つでもあるじゃん」という事が言いたい。
0429デフォルトの名無しさんNGNG
>>428
基本型が反則って言ってるんじゃないよ。
nullはオブジェクトではなく、参照の値。
new Object ()は参照の値ではなく、オブジェクト。

「ほらみろ混同してるじゃん!」って言いたいw
0430デフォルトの名無しさんNGNG
>>428
しまっつ。墓穴ほっちった。
0431デフォルトの名無しさんNGNG
>>429 だった…
ちなみに、その「意味的に整った設計」では
null の型はどー設計するわけ?
0432デフォルトの名無しさんNGNG
>>431
変数(仮引数とか)や戻り値の型っていうのは、常にあるよね?
「null」と単独で書く場合は、実際の代入や、関数呼び出しなどの
文脈にマッチした参照型に決定される、と解釈していいのではないかと
0433デフォルトの名無しさんNGNG
ところで void の型はどー設計すんだろ?
0434デフォルトの名無しさんNGNG
voidはデータ型じゃないじゃん
リフレクションでinvokeしたときの戻り値がnullになるのが、
オブジェクト返しと同じでイヤーンとか?
0435デフォルトの名無しさんNGNG
>>432
他にも short -> int や float -> double などの型変換は
自動的に行われるけど、「意味的に整った設計」では
これらをどのように解決する?
0436デフォルトの名無しさんNGNG
>>434
なるほど、「意味的に整った設計」ってもデータ型限定なわけね?
0437デフォルトの名無しさんNGNG
お、なんかツッコミがたくさん。じゃあさ、面倒だからこうする
Class.forName (...) ←これはオブジェクトのクラスだけで、
変数に入れられるデータ型(っていうか、基本型+参照型。。
参照も基本型だっけ?)とか、関数の戻り値の指定ってのは、
便宜上混同するのはいいけど、いちおう厳密には区別があるわけだから、
混同するのが正義、みたいな>>370の言い方は変じゃないかって事。
0438デフォルトの名無しさんNGNG
現在、ezplus(MIDP)アプリを造っていますが、文字列をRecordStoreに保存し、後ほど保存した文字列を取得すると言うことをしたいと思います。

さて、そこで、ファイルから読み込むとき、読み込みはうまくいっているのですが、
バイト配列から文字列へ変換するときにうまくいかず参っています。
セーブされたデータは、バイト配列として保存され、読み込みはうまくいっているようです。

したがって、byte s[]には、データが格納されている状態であります。
ここから、s.toString()を使ってバイト配列を文字列に変換しようと思っても、うまくいきませんでした。
コンソールにdataStringを出力してみると、"[B@be64248"と言う文字列が入っていました。

ここで、byte[]配列を正しく文字列方にするにはどうすればよいのでしょうか?
よろしくお願いします。

[B@be64248+++69 69

RecordStore record=RecordStore.openRecordStore("datafile_123456",true);
String dataString;
byte s[];
s=new byte[record.getRecordSize(1)];
n=record.getRecord(1,s,0);

dataString=s.toString();

System.out.println(dataString+"+"+n+"+"+record.getRecordSize(1));
0439デフォルトの名無しさんNGNG
new String(s)
0440デフォルトの名無しさんNGNG
>>438
new String( s );
じゃなかったっけ?
文字化けすんだったら
new String( s, "SJIS" );
new String( s, "EUC_JP" );
とか試してみるとか。
0441デフォルトの名無しさんNGNG
String foo = new String (s);
0442デフォルトの名無しさんNGNG
> dataString=s.toString();
あー確かに初心者がやりそう・・・コトバとして読めば通じてるからなぁ
0443438NGNG
できました。ありがとうございます。
0444409NGNG
>>410
すみません。APIのサンプルで、
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html
をローカルに持ちたいのです。
>>411
わかりません。

俺って逝ってよしですか?
0445デフォルトの名無しさんNGNG
>>444 下の方
http://java.sun.com/j2se/1.4/ja/download.html
0446デフォルトの名無しさんNGNG
>>444
http://java.sun.com/j2se/1.4.1/ja/download.html
に
日本語版 J2SE 1.4.0 ドキュメント ダウンロード
があるので。
0447デフォルトの名無しさんNGNG
>>370
もしtemplateもどきを作ろうとしているのなら、
JDK1.5を待ってみるのもいいかもね。
boxingとかいろいろ追加されるらしいよ。
0448444NGNG
>>445
>>446
ありがとうございます。本当に助かりました。
0449デフォルトの名無しさんNGNG
>boxingとかいろいろ追加されるらしいよ。

これマジ?
0450デフォルトの名無しさんNGNG
Vector<int> は夢また夢
0451名無しさん@EmacsNGNG
Servletでserver.xmlで指定された<Context>タグ内のpathを取得するにはどうすればいいですか?
実際のpathを取得する方法は書いているんですが....


0452デフォルトの名無しさんNGNG
HttpServletRequestのgetContextPath()
0453名無しさん@EmacsNGNG
>452
さんきゅーです。
ずっとServletContextの方をさがしていました。
0454447NGNG
>>449-450
Javaにもtemplate欲しいよね。
->でも、そうなるとprimitive型の扱いに困るよね。reflectionとの相性も悪いし。
->boxingを言語仕様に追加すれば?

てな話が出ていて、JDK1.5に入れようとする動きがあるらしい。
まあ、最終的にどんな感じで落ち着くのかは全然わからんが。
0455デフォルトの名無しさんNGNG
Javaってどういうことろに使われてるの?
携帯のアプリぐらいしか知らないんだけど。
0456デフォルトの名無しさんNGNG
http://pc3.2ch.net/test/read.cgi/tech/1026137766/l50
??Javaってどこで使われてるの??
0457デフォルトの名無しさんNGNG
JavaってCOBOLの亜種ですか?
0458370NGNG
思いの外長く続いてるな...

>>437
失敬な。統一して扱うのが正義と言ってくれ。
いや違う。*できるだけ*統一して扱うのが正義。区別があるのは分かるが、
同じクラスのインスタンスである以上、できるだけ統一して扱えるべきだ。

あと、Class.forName("int") で無名パッケージの int を探しに行くって
仕様もよくわからん。そもそも言語仕様上、class int{} はできないし。
でも、int.class を置いといてやると、ほんとにそれをロードしようとする。
try{
 Class.forName(str);
} catch(ClassNotFoundException e){
 if(str.equals("boolean")){
 ....
 }
}
てな実装の場合、int.class を忍ばせとけば、str が "int" の場合、忍ばせた
int.class がロードされる。やばいでしょこれ。

Class.forName がプリミティブ + void 型も扱えれば、プリミティブ型名 ->
Class インスタンスの変換をプログラマが行わなくて済むし、上の問題も
解決される。ReferenceClass と PrimitiveClass が存在するかのような
気持ち悪さも*少しだけ*解消される。
0459デフォルトの名無しさんNGNG
370のがキモイ
0460デフォルトの名無しさんNGNG
Java1.4でフルスクリーンを取得する方法を教えてください。
よろしくお願いします。
0461ロックNGNG
HTML、Javascript、スタイルシートを勉強しようと思っているのですが、どんな書籍を買えばいいでしょうか。

3つ全部載ってるものがありますが、それは良いのでしょうか?
0462デフォルトの名無しさんNGNG
>>461
スレ違いだろカス死ね
0463デフォルトの名無しさんNGNG
>>461
こいつマルチポスト、こういうヤシには絶対教えちゃ駄目
0464ロックNGNG
すまん、今度学校でHP作りするんだ、皆に負けないように素晴らしいHPを作ろうとおもって…
マルチの件ははすまなかった、そういう焦りでマルチしてしまったんだ。
火曜日に最初の授業がある、是非書籍を教えてもらいたい。
0465デフォルトの名無しさんNGNG
IEなどに入れたsunのJavaプラグインを、一時的に無効化することはできますか?
0466デフォルトの名無しさんNGNG
>464
http://dir.yahoo.co.jp/Business_and_Economy/Business_to_Business/Internet_Services/Designers/
0467デフォルトの名無しさんNGNG
>>460 こういう意味?
ToolKit.getDefaultToolKit().getScreenSize();
0468デフォルトの名無しさんNGNG
DBから拾ってきた日付データ(YYYY/MM/DD HH:MI:SS等の文字データ)を
java.util.Date型の変数に格納したいのですがどうしたらいいでしょうか。
環境は、
SDK1.4
DB:Oracle9i
です。
すみませんが、お願いします。
0469デフォルトの名無しさんNGNG
>>467
ではなくて、Java1.4からサポートされている
フルスクリーンでの描画を行いたいんですが、
やりかたがわからないんですの。

知ってる人いたら教えて下さい
0470デフォルトの名無しさんNGNG
古巣クリーン
0471デフォルトの名無しさんNGNG
http://java.sun.com/docs/books/tutorial/extra/fullscreen/
0472デフォルトの名無しさんNGNG
getBytesの使い方がイマイチ分からないのですが、
↓の結果が、実行するたびに異なるのは何故なんでしょうか。

String s = new String("A");
System.out.println(s.getBytes());
0473デフォルトの名無しさんNGNG
配列のアドレスが違うだけでは。
0474デフォルトの名無しさんNGNG
public byte[] getBytes()String をプラットフォームの
デフォルトの文字エンコーディングに従ってバイトに
変換し、結果を新しいバイト配列に格納します。
戻り値:
結果のバイト配列
0475デフォルトの名無しさんNGNG
>>473
Byte[]#toString()ってアドレス返すの?
0476デフォルトの名無しさんNGNG
数値「1234」を文字列「001234」みたいに
指定した桁数まで前にゼロをくっつけた
文字列を取得したいのですが、どうやって
変換すればよいのでしょうか?
0477デフォルトの名無しさんNGNG
>>476
public static String intAttachZero(int number ,int place) {
StringBuffer it = new StringBuffer(Integer.toString(number));
for (int i = it.length(); i < place; i++) {
it.insert(0, '0');
}
return it.toString();
}

number = 1234
place = 6

あんまりいい方法ではないと思うけど
0478デフォルトの名無しさんNGNG
>>476
たとえば 6 桁になるまで 0 を詰めるのであれば俺は以下のようにやる。

int i = 1234;
String t = "000000" + i; // 6 個の "0" を付加
String s = t.substring(t.length() - 6); // 左から 6 桁とる
0479デフォルトの名無しさんNGNG
--------------
System.out.println (new byte[0]);
--------------
[B@e63e3d
--------------
0480デフォルトの名無しさんNGNG
toString
Object クラスの toString メソッドは、オブジェクトの派生元のクラス名、アットマーク (@)、およびオブジェクトのハッシュコードの符号なし 16 進表現から構成される文字列を返します。つまり、このメソッドは次の値と等しい文字列を返します。

getClass().getName() + '@' + Integer.toHexString(hashCode())
0481デフォルトの名無しさんNGNG
>>476
まともなやり方:
import java.text.DecimalFormat;
...
DecimalFormat f_06d = new DecimalFormat ("000000");
System.out.println (f_06d.format (1234));
0482デフォルトの名無しさんNGNG
日付入力などの入力コンポーネントを配布しているところはありませんか?
0483デフォルトの名無しさんNGNG
>>482
↓こういうやつとか?
http://www.mycgiserver.com/~swarsa/cal.jsp
↓このへんで探すとか
http://www.jars.com/classes/jresout.cgi?category=Programming+-+Widgets&language=Java&rating=All
0484482じゃないんだがNGNG
>>483
おー ありがとー 感謝
0485デフォルトの名無しさんNGNG
>>468
Oracle9iではjava.sql.ResultSet#getDate()が使えないんでしょうか?
java.util.Dateじゃなくてjava.sql.Dateで返ってくるけど。
0486デフォルトの名無しさんNGNG
java.sql
クラス Date
java.lang.Object
  |
  +--java.util.Date
      |
      +--java.sql.Date
0487デフォルトの名無しさんNGNG
Sunのホムペでタダで配布されてるJava SDKで作ったアプリで金稼いでもいいの?
0488デフォルトの名無しさんNGNG
>>487
タイーホ
0489デフォルトの名無しさんNGNG
>>488

  / ̄ ̄ ̄ ̄ ̄ ̄ ミ
  /  ―――――-ミ
  / / /    \|
  | /  (・) (・)|
  (6     つ  |
  |    ___ |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |    /__/ /  < んなわけねーだろ!
/ |      /\   \__________
0490デフォルトの名無しさんNGNG
>>488
>>489
ホントのところどうなの?
0491デフォルトの名無しさんNGNG
>>490
使用許諾嫁
0492デフォルトの名無しさんNGNG
>>491
英語嫁ねーよ
0493デフォルトの名無しさんNGNG
馬鹿が商売するのか?
しね。
0494デフォルトの名無しさんNGNG
作ったアプリにまで及ぶ制限は言明されていない。よって許諾されているとみてよい
0495デフォルトの名無しさんNGNG
>>487
アプリできたら教えてくれよ
200ガバスまでならだすよ
0496デフォルトの名無しさんNGNG
全角英数字の半角変換やその逆の処理を行う
クラス、自分で作ってもいいんだけど、
PerlでいうJcodeみたいな著名なライブラリは
公開されてない? 英数字に限らず、カタカナの
変換や文字コード判定までついてるとベストだね。
0497デフォルトの名無しさんNGNG
一週間、休暇が取れたので一気にJAVA(クライアントサイド)を覚えたいのですが一週間でどれぐらいいけますか?
当方、C言語とC++の経験があります。
四六時中JAVAやるつもりです。

あと、オススメの書籍・WEBサイトなどがありましたらご紹介願います。
0498デフォルトの名無しさんNGNG
>>497 >>7はチェックした?
0499デフォルトの名無しさんNGNG
>>497
JAVAをなめるな!
最低1ヶ月取れ!
0500デフォルトの名無しさんNGNG
C++が出来ればかなりイケるんじゃない?
0501デフォルトの名無しさんNGNG
まぁ一週間でできたらスゲェけど
0502デフォルトの名無しさんNGNG
C++やってるなら一週間で
AWTとか使ったGUIぐらいまでいけそうな気がする
0503デフォルトの名無しさんNGNG
>>497
(1)言語仕様の違い、マナーの違いを覚える
(2)APIリファレンスに馴染む
ここを集中的にやればけっこうこなせるんじゃない?
0504497NGNG
レスありがとうございます。
アル程度いけるかもしれないみたいな感じだったのでとりあえず頑張ってみようと思います。
0505デフォルトの名無しさんNGNG
アプレット上で、TextFieldについて、addActionListenerメソッドで
TextFieldのイベントを拾うようにしたつもりだが、TextField上で
Enterを押したときしかactionPerformedが呼ばれないような気がするです。
TextField上のいろいろなイベント(キー入力、フォーカス取得、フォーカス
喪失など)を得るにはどうしたらいいんだろう?
0506デフォルトの名無しさんNGNG
>>505
「addなんじゃらListener」の形のメソッドを全部調べればわかるぞ
0507デフォルトの名無しさんNGNG
>>505
キー入力
addActionListener(ActionListener l)
フォーカス取得
addFocusListener(FocusListener l)
テキスト変更
addTextListener(TextListener l)

多分こんな感じで 詳しくはAPI仕様書を読んでみて
0508468NGNG
>>485
>>486
レス遅れました。すみません。
getDate()ですか。これだとおっしゃる通りjava.sql.Dateで帰ってきますよね。
これをjava.util.Dateに変換できますか?
       ↑
 これイマイチ使いにくい・・・けど使わないといけないんです。

あと、java.util.Dateに指定の日付をセットするにはlong使うしかないんですかね。
DateFormat(YYYY/MM/DD)のような感じでセットする方法がありそうなんですけど。。。
申し訳ないんですけど教えて下さい。
0509505NGNG
>>506
なるほど、ありがとう。これがawtのイベントモデルか。
implements ActionListener, TextListener, FocusListener, KeyListener
てな塩梅で必要な分だけリスナーをくっつけていくわけだね。
0510デフォルトの名無しさんNGNG
>>508 継承って知ってる?
0511デフォルトの名無しさんNGNG
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/Date.html
クラス java.util.Date から継承したメソッド after, before, clone,
compareTo, compareTo, equals, getDate, getDay, getMonth, getTime,
getTimezoneOffset, getYear, hashCode, parse, setDate, setMonth,
setYear, toGMTString, toLocaleString, UTC
■ このスレッドは過去ログ倉庫に格納されています