| タケチ 的个人资料人が存在するってどういうこと?照片日志列表 | 帮助 |
|
11月30日 クラスのインスタンス化2007年11月30日(金)
ClassクラスからConstructorクラスそしてインスタンス化。
1.Classクラスで「クラス名」のClassインスタンスを取得。
ex:String className = "InstanceCount";
ex:Class testClass = Class.forName(className);
↓
2.ConsturctorクラスでClassインスタンスから「クラス名」のコンストラクタを取得。
ex:Constructor constructor = testClass.getConstructor(new Class[]{});
↓
3.Objectクラスで「クラス名」のインスタンスを取得。
newInstance()はObject型を返す。(ex1)
「クラス名」のオブジェクトが欲しい場合はキャストする必要がある。(ex2)
ex1:Object instance = constructor.newInstance(new Object[]{});
ex2:InstanceCount instance = (InstanceCount)constructor.newInstance(new Object[]{});
●エラー発生●
########### 修正前 #############
class InstanceCount{
InstanceCount(){
}
InstanceCount(String str){ } int getCount(){ } int getCounter(){ } } #################################
############ 実行エラー ######### java.lang.NoSuchMethodException: InstanceCount.<init>()
at java.lang.Class.getConstructor0(Unknown Source) at java.lang.Class.getConstructor(Unknown Source) at TestInstanceMain.main(TestInstanceMain.java:39) #################################
InstanceCountクラスにInstanceCountメソッドがありませんといわれてるようです。
########### 修正後 #############
class InstanceCount{
public InstanceCount(){
}
public InstanceCount(String str){ } int getCount(){ } int getCounter(){ } } ################################# 原因はInstanceCount()がpublicでなかったからみたいです。
APIにも書いてありました。
やっとインスタンスを取得することができたぁ。°(ノд`)°。 11月21日 javaのオベンキョ2007年11月21日(水) 晴ればれ
■メソッドにおける可変長引数■
JDK5では、コマンドラインから複数の引数を取得できたmainメソッドのように
そのほかのメソッドでもmainメソッドのように取得できるようになった。
test(String... args)
こんな感じで記述すると配列で取得できるようです。
■拡張forループ■
JDK5では、「配列やリストなどの全要素に対するループ」が簡略記述できるようになりました。
for (int i=0; i<array.length; i++) sum+=array[i];
こんなだったのが
for (int a : array) sum+=a;
こんなふうになるようです。
■printfメソッド■
あれですねc言語でおなじみの画面出力のおまじないですね。
printf(書式文字列, 引数, ...)
移植するときに役立つんですって。 コレクションフレームワーク2007年11月20日(火) 晴れ
配列以外で値を保持しておくものはないか調べてみたら、
コレクションフレームワークというものを発見。
HashtableやらHashmapやらArrayListやらetc。
配列は格納番号を指定して値を取り出すけど
HashtableやHashmapはキーとそのキーで取り出す値を決めることで
キーを指定して値を取り出すことができるんですねぇ。
しかし、キーで取り出せる値は一つのみです。
同じキーで値を追加しても上書きされてしまいます。
RPGのセーブデータみたいなもんですかね。
他に何かないかなぁ。 11月5日 Hashtableクラス2007年11月5日(水) 晴れ時々曇りのちくもり
うわぁ~、何ヶ月ぶりだぁ。
とりあえず、javaについてお勉強したことでも書いてきます。
今VRMLファイルを読み込んで頂点座標や色情報などを取得するためのプログラムを作成中。
しかし、sunのHPにj3d-vrmlというJava3DでVRMLを読み込んで表示するパッケージがあるじゃないですか!?
なもんで、jarファイルを解凍してVRMLを読み込むための大本のソース「Parser.java」(おそらく)を見てみたのですが・・・・。
プログラム技術がない上、知識も少ないので、何が書いてあるのかチンプンカンプン(;´-`)=3
なもんで、やっぱり自分で作ろうかと・・・・。(大変かな?)
とまあ、VRMLのノード名でクラスをマッピングしている(だろう)ところはなんとか理解できた(と思う)ので、
このHashtableの使い方を学んでみようかと。(なんとなく使えそうな予感(`・ω・´)ムム)
で、さっそく作ってみたのですが・・・・
コンパイルすると
注:TestHashtable.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください となったので、-Xlintオプションで再コンパイルすると
TestHashtable.java:8: 警告:[unchecked] raw 型 java.util.Hashtable のメンバとしての put(K,V) への無検査呼び出しです。
と、叱られました(-_-、)
なもんで、なにか策はないかと調べたところ
Hashtable table = new Hashtable();
これだと、何に何をマッピングするんじゃわれぃ( '皿')ってなるみたいなので
下のように指定してあげることでコンパイルがすんなりとおるんですって('-'*)
Hashtable<String, String> table = new Hashtable<String, String>(); 理解できると楽しいっすね(^_^) |
|
|