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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
過去ログ、関連スレの一覧や、これからJavaでプログラミングを
始めたいが何をすればいいかわからない人は、下のリンクをクリック。
http://www.wikiroom.com/java/

以下のエラーが表示されて、途方にくれているあなたは、下のリンクを。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path%2Cclasspath

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

エクリプスに関する質問は同板の「統合開発環境Eclipse」スレへ

前スレ
【初心者】Java質問・相談スレ45【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1083740382/l50

すべてのクラス (Java 2 プラットフォーム SE v1.4.0)
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html
Java (TM) 2 SDK ドキュメント
http://java.sun.com/j2se/1.4/ja/docs/ja/index.html
Java言語規定 第2版 目次
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html
0153デフォルトの名無しさんNGNG
>>152
offline
0154115NGNG
>>153
わかりました。有難う御座いました。今度こそ行ってきます。
0155デフォルトの名無しさんNGNG
>>148
Pattern や Matcher の APIDoc をよく読もう。
特に Matcher 。君の欲しいものがある。
0156デフォルトの名無しさんNGNG
>>155
なるほどmatches()は全体をマッチするわけか
で、lookingAt()が先頭からで全体がマッチする必要はなくて
find()は前回の後からってことか。

なんでわざわざ3種類もあるの?正規表現の指定だけで済む気がするんですが。


それともう一つ質問。
Pattern p = Pattern.compile("a=([1-9]*) (b=[1-9]*)");

Matcher m = p.matcher("record a=123 b=456");

で、()で囲まれた部分123と456を取り出すにはどうしたらいいんですか?
find()した後group()だと "a=123 b=456"までしかとりだせないですよね。


0157デフォルトの名無しさんNGNG
>>156
Pattern や Matcher の APIDoc をよく読もう。
特に Pattern 。君の欲しいものがある。
0158156NGNG
グループのそれぞれの値は public String group(int group)のほうでとりだせるのか。



>なんでわざわざ3種類もあるの?正規表現の指定だけで済む気がするんですが
こっちのほうの疑問はまだ残ってるんだけど 誰か教えて。
0159デフォルトの名無しさんNGNG
必要ないと思うなら使わなきゃええやんか。
0160デフォルトの名無しさんNGNG
DQN登場
0161デフォルトの名無しさんNGNG
strutsについて質問です
フレームワークということですがstrutsを導入すると
具体的に何が可能になるのでしょうか?

なぜみんなstrutsがいいというのでしょうか?
何が充実しているのでしょうか?
0162デフォルトの名無しさんNGNG
>>161
フォームの入力チェックが簡単になる。
0163デフォルトの名無しさんNGNG
それだけですか?
フレームワークの代名詞みたいに言われてるけど・・・
0164デフォルトの名無しさんNGNG
どういう答えが欲しいんだろう・・・
0165デフォルトの名無しさんNGNG
Runnableについてですが
Threadをimportせずにnewできるのはなぜ?

ThreadでもRunnableを実装してるけどどういうこと?
0166デフォルトの名無しさんNGNG
java.lang.Thread
0167デフォルトの名無しさんNGNG
>>166
ありがとう〜
0168デフォルトの名無しさんNGNG
みんな質問理解するの無茶苦茶早いね
的外れな回答とかなぜ出ないんだ???読唇術でもやってるの?
jdbcの実装で聞きたかったけど、今はそれよりも気になる
0169デフォルトの名無しさんNGNG
>>161
・Servletを自作しなくてすむ
・画面遷移の仕組みを考えなくてすむ
・カスタムタグを使うとJSPのコードがすっきりする(と言われているw)が
 Strutsを使うとそのためにカスタムタグを自作しなくてすむ
・複数人数で開発する場合に実装のルールを(ある程度)統一できる
・・・と言われているw
0170デフォルトの名無しさんNGNG
staticなクラスのフィールドに、その内部のクラスからアクセスできるのは
どういう仕組みなのか教えてください。
0171デフォルトの名無しさんNGNG
>>169
全然 JSP のコードはすっきりしなかったぞ…
0172デフォルトの名無しさんNGNG
>>168
前すれとかでは普通にでているわけだが。
0173デフォルトの名無しさんNGNG
>>168
みんな一度は同じ事で悩んでるからさ。(でもそゆーのは雑談スレでねw)
0174デフォルトの名無しさんNGNG
教えてください。
int<=>byte[]の変換ができません。

int resourceID = 55;
byte[] byteID = new byte[4];

byteID[0] = (byte)((resourceID >> 24) & 0xFF );
byteID[1] = (byte)((resourceID >> 16) & 0xFF );
byteID[2] = (byte)((resourceID >> 8) & 0xFF );
byteID[3] = (byte)(resourceID & 0xFF );

int inID = (((byteID[0] << 24) & 0xFF) | ((byteID[1] << 16) & 0xFF) |
((byteID[2] << 8) & 0xFF) | ((byteID[3]) & 0xFF));

これだと、resourceID=255までしか変換できません つД`)
256以上の数値はどうすれば良いのでしょうか??
0175デフォルトの名無しさんNGNG
画像の生データ(ヘッダのない画素情報)を読み込んで表示させたいです。
読み込みは出来たのですが、描画・表示に困っています。
画像処理プログラムを作るのが目的です。

どのように表示させたらいいのでしょうか?
~~~~~~~~~
(アプレットで点描?)
0176デフォルトの名無しさんNGNG
>>169
StrutsよりJSTLとELの影響の方がでかいぞ。
0177デフォルトの名無しさんNGNG
>>175
読み込んだデータから、java.awt.image.BufferedImage を作り出せるといいのだけどね。
0178デフォルトの名無しさんNGNG
>>175
点描も漢らしくていいと思うけど。
java.awt.image.MemoryImageSourceでImage作るとか。
0179デフォルトの名無しさんNGNG
>>174
なぜに戻すときに& 0xFFする?
int inID = ((byteID[0] << 24) | (byteID[1] << 16) | (byteID[2] << 8) | (byteID[3]));
こうでないのか?
0180174NGNG
>>179 様
ありがとうございます。

やってみましたが、
& 0xFFしないと、255以下の数値もとれなくなってしまうのです。

・゚・(ノД`)・゚・
0181デフォルトの名無しさんNGNG
>>180
なるほど。byteが符号付だから& 0xFFで符号なしの値にするのか。
int intID = (((byteID[0] & 0xFF) << 24) | ((byteID[1] & 0xFF) << 16) | ((byteID[2] & 0xFF) << 8) | ((byteID[3] & 0xFF)));
こうすればいいのだ。

普段nio使ってるからこれを考えなくて済んでた俺はへたれですかそうですか。
0182デフォルトの名無しさんNGNG
>>180
BigEndian でいーなら DataInput 使っても読み込めるよ。
int inID = new DataInputStream(new ByteArrayInputStream(byteID)).readInt();
0183174NGNG
>>181 様
ををを!!
先に& 0xFFするのでつね。
やってみます。
ありがとうございます!!
nioってなぁに??な私のほうがへたれです。

>>182 様
一度やってみたのですが、なぜかnullpoになってしまいました。
もっと複雑なコードの中に組み込んでしまっていたので、
他の原因があったのかもしれません。やってみます。
ありがとうございます!!
0184デフォルトの名無しさんNGNG
>>183
java.nio
0185デフォルトの名無しさんNGNG
> なぜかnullpoになってしまいました

ガッ
0186デフォルトの名無しさんNGNG
AWTのComponentのUpDateとReapintの違いって何ですか?
0187デフォルトの名無しさんNGNG
repaint ... 「非同期的に」再描画される。
再描画用のスレッドが別途動いていて、そいつのキューに要求が入り、あとで再描画が実行される。

update ... 引数となる Graphcis に「即座に」描画を行う。paint との違いは実装に依りけり。
まっちろに消去する処理を入れて、そのあと paint を呼ぶだけだったりする。

Component#getGraphics() してそれを Compoent#update(Graphics) に渡したりもできるが、
そーゆーことは AWT 実装に任せておいて、repaint だけぽんと呼ぶのが普通だな。
その分トロくはなるが、上記方法は素人が手を出すと表示がめちゃめちゃになるし。
0188デフォルトの名無しさんNGNG
>>170
内部のクラスにもいろいろあるが。
「内部のクラス」なんだから一回り外のクラスのフィールド・メソッドには自由にアクセスできる。
それだけじゃん。仕組みもへったくれもない。あほくさ。
0189デフォルトの名無しさんNGNG
アプレットでMP3の再生って、無理?
0190デフォルトの名無しさんNGNG
アプレットもくそもない。あほくさ。
0191デフォルトの名無しさんNGNG
>>189
mp3 は特許問題だったかのせいで標準でサポートされなくなった。
JLayer とか使えば一応できる。
http://www.javazoom.net/javalayer/javalayer.html

applet もある。
http://www.javazoom.net/applets/jlguiapplet/jlguiapplet.html
0192デフォルトの名無しさんNGNG
>>191
SUNクスコ!!
0193デフォルトの名無しさんNGNG
すいません。
アプレットのテキスト入力エリアで起動するIMEの変更ってできるんでしょうか?

たとえば、
あるクライアントには2種類のIMEがインストールされているとします。
(MS製Standard IMEと富士通製IMEとか)
普段は”MS製Standard IME”を使用しています。

で、あるテキストボックスに入力するときには
”富士通製IME”を自動的に起動して入力させるとか。

もしご存知の方がいたら教えてください。
0194175NGNG
177様、178様ありがとうございました。
感謝です。
0195デフォルトの名無しさんNGNG
>>193
単純に IME の ON/OFF はできるけど、そういう気持悪い例は見たことないな。
万一 Windows レベルでもできないのならば Java には無理。

その富士通製というのは何故使いたいの? 登録している頻出単語を入力させたいだけなら、
自分で作った InputMethod になら変えられるらしいから、そうしてみたら?
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/imf/spi-tutorial.html
それとも文字認識か何かかな?
0196193NGNG
>>195
レスさんくす。

>その富士通製というのは何故使いたいの?

漏れも良く分からないんだけど、特殊な機能があるそうで。
調べるように頼まれたですよ。
元々C++屋なんでJAVAの細かいことよくわかんないから聞いてみた。

Win32APIならできそうなんで、
「COM作ってjavascriptから呼び出したらだめ?」って言ったけどだめだって。
クライアントインストールレスでやれと。

あー、ええと今聞いたら文字認識とか文字の検索がすごいんだそうで。w
0197デフォルトの名無しさんNGNG
>>196
ActiveX
0198デフォルトの名無しさんNGNG
>クライアントインストールレス
でも 1.4 プラグインは入れないと、InputMethod いじるのは絶対無理だぞ。
0199193NGNG
みんなレスサンクス

>>197
あーActiveXならいけるかな?
でもインスコダイアログでるじゃん?あれいいのかな...聞いてみよ。

>>198
そのInputMethodつーのはIME切り替えられるんでしょうか?
どうも富士通製IMEの独自機能を使いたいらしいので。
0200デフォルトの名無しさんNGNG
>>199
> そのInputMethodつーのはIME切り替えられるんでしょうか?
目的の用途には使えんだろうが
java.awt.im.InputContext#selectInputMethod(Locale) で選択できる。
っつーか普段から「富士通製」使えよ。
0201デフォルトの名無しさんNGNG
「誰でも簡単に作れる描画アプレット講座」
みたいなのを探しています。お勧めってあります?
0202デフォルトの名無しさんNGNG
class classA{
int x;
classB y = new classB; インスタンス化
}

class classB{

ここからclassAのint x値を変更したい。

}

どうすれば良いですか?
お願いいたします。
0203デフォルトの名無しさんNGNG
classAにint xを変更するメソッドを作る。
0204デフォルトの名無しさんNGNG
203さん、ありがとうございます。
classAにメソッドを作っても、classBから呼び出す方法がわかりません。

検索語もわからないので、質問した次第です。
0205デフォルトの名無しさんNGNG
class Sample{
Sample(int x, int y){
}
}

でSampleのコンストラクタに値を入れながらSampleの型の配列を宣言するのって
どうしますか?
0206デフォルトの名無しさんNGNG
>>202
クラス名が大文字で始まらないのは気持ちが悪いので、変更した。
ClassB のコンストラクタ呼び出しの際に、ClassAのインスタンスを this として渡してやる例。

class ClassA {
  int x;
  ClassB y = new ClassB(this);
}
class ClassB {
  private ClassA a;
  public ClassB(ClassA a) {
    this.a = a;
  }
  public void change(int x) {
    a.x = a.x + x;
  }
}
0207デフォルトの名無しさんNGNG
>>205

Sample[] sampleArray = new Sample[] {new Sample(1, 2), new Sample(3, 4)};
0208デフォルトの名無しさんNGNG
JDBCドライバをロードする時に、
Class.forName("acme.db.Driver");
のように書くそうですが、
forName()メソッドは戻り型がClassクラスですよね?
何故
obj = Class.forName("acme.db.Driver");
のように書かないのでしょうか?
戻り値であるドライバのClassオブジェクトは何処に行ってしまうのですか?
0209デフォルトの名無しさんNGNG
>>208
> Class.forName("acme.db.Driver");
その場合は acme.db.Driver を初期化するのが目的なので戻り値は捨ててもいい。

あんまりやらんけど、クラスの初期化ができるなら
Class.forName(String) 等を使わなくても全く構わないと思われ。
0210デフォルトの名無しさんNGNG
>>208
戻り値は必ず受け取らねばならないという決まりはない。
0211デフォルトの名無しさんNGNG
>>208
最初は誰もが疑問に思う道
ドライバはクラスロード時のスタティックによって初期化される物と
決まっていると思えばいい

まぁ、最初にこれ書くことから何をやろうとしているかが分かるんで
人のコード追うとき楽だ

0212デフォルトの名無しさんNGNG
クラスの継承を行い、
サブクラスのインスタンスを生成するときに、
サブクラスのコンストラクタ内で、
スーパークラスの引数なしコンストラクタが実行されますよね?
ここまではあってますか?
↑の前提があっているとして、
スーパークラスの引数なしコンストラクタの実行を
行わせたくない場合はどうすればよいでしょうか?
0213デフォルトの名無しさんNGNG
>>212
> スーパークラスの引数なしコンストラクタの実行を行わせたくない場合はどうすればよいでしょうか?
単純に、呼び出されたくなければ、スーパークラスの呼び出されたくないコンストラクタを private 宣言すればよい。
ただし、継承元クラスのすべてのコンストラクタが呼べない場合、そのクラスを継承することはできなくなる。

> クラスの継承を行い、サブクラスのインスタンスを生成するときに、サブクラスのコンストラクタ内で、
> スーパークラスの引数なしコンストラクタが実行されますよね?ここまではあってますか?
いいえ。
「スーパークラスの引数なしコンストラクタが実行」されず、引数のあるコンストラクタが実行される場合があります。例えば、以下。

クラス B のコンストラクタは、どちらもスーパークラスの引数なしコンストラクタを呼んでいない。
(1つは、自クラスの別なコンストラクタを呼び出している。もう1つは、スーパークラスの引数のあるコンストラクタを呼び出している。)
クラス B のインスタンス生成の際には、どちらのコンストラクタを使おうとも、クラス A の引数
無しコンストラクタは呼ばれない。(引数を取るほうのコンストラクタが使われる。)
class A {
  public A() {
  }
  public A(int i) {
  }
}
class B extends A {
  public B() {
    this(6);
  }
  public B(int i) {
    super(i);
  }
}
「8.8.5 コンストラクタ本体」
http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#78435
0214212NGNG
>213
うーん、難しい。

!あ、、、言葉足りてませんでした…
「サブクラスのコンストラクタ内でスーパークラスのコンストラクタを
明示的に指定していないとき」
の話でした。すんません。

でも、勉強になりました。publicをサブクラスで実行できるのか…
まだ試してないんで、今から試してみます。
ありがとうございました。
0215デフォルトの名無しさんNGNG
>>201
java の基本を知らなきゃ簡単には作れない。
知ってりゃサイトに頼らず作れる。以上。さようなら。
0216デフォルトの名無しさんNGNG
すごく初歩的な質問なのですが…

int x = 1;
x=x++;
System.out.println(x);

これの結果がなぜ「1」になるのかがわかりません。
だれか教えてください。
0217デフォルトの名無しさんNGNG
216はネタなので放置してください。
0218216NGNG
>217
ねたじゃないですよぉ。
0219デフォルトの名無しさんNGNG
int x = 1;
x++;
System.out.println(x);

でいいのでは?実行していないけど。

>>215
ありがとう。そうだよね。参考書買ってきて勉強しまふ。
0220デフォルトの名無しさんNGNG
>>216
2行目をいろいろ変えてみると勉強になるよん。
x=x++;
x=++x;
x++;
0221216NGNG
いろいろ確認しました。

x=(x++)+1 => 2
x=(++x)+1 => 3
x=(x++)+x => 3
x=(++x)+x => 4

後処理は評価値が決まった後に行われるので
その後でインクリメントしても最後に代入
される値に影響されないってことですかね。

試験にでたらひっかかりそうでした(^^;;
0222デフォルトの名無しさんNGNG
継承について解らないことが多いんですが、そのなかで、
下に示す、コードの手ほどきを受けたいです。
これだと、class BのインスタンスのtoString()は、
class Stringの"hoge"を返すんですが、
class AのtoString()を継承したくない(つまり、class ObjectのtoString()が欲しい)時には
どうすればよいのでしょうか?

class A
{
String toString()
{
return "hoge";
}
.....
}
class B extends A
{
......
}
0223デフォルトの名無しさんNGNG
>>222
一般的には上書きされたメソッドをさかのぼって呼び出すのは無理。

toString() だけに関して言えば、Jakarta Commmons の lang の
org.apache.commons.lang.ObjectUtil#appendIdentityToString(StringBuffer, Object)
とかで使われてる方法
 object.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(object))
を使えば希望の出力が得られるはず。

http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/ObjectUtils.html#appendIdentityToString(java.lang.StringBuffer,%20java.lang.Object)
http://cvs.apache.org/viewcvs.cgi/jakarta-commons/lang/src/java/org/apache/commons/lang/ObjectUtils.java?rev=1.23&view=markup
0224デフォルトの名無しさんNGNG
((Object)this).toString()
0225222NGNG
>223
う、うへぇ…
難しすぎる…。すんごいプログラムを組むには、それくらいの知識が必要なのですか?
ありがとうございました。

>224
ありがとうございました。
0226222(連投スマソ、自力じゃわからんです)NGNG
あるクラスAがありまbキ。
これbp承したクラャXBがあります。
これを更に継承したクラスCがあります。

Aにprotectedな変数hogeがあるんですが、
Cのインスタンスから、
super.super.hogeのようにして呼ぼうとしたら、
なんだそりゃ?といわれてしまいました。
僕が意図することは、行えるでしょうか?
出来るとしたら、どうすれば良いでしょう?
0227デフォルトの名無しさんNGNG
>>226

もちろん、クラスBにも、新たに hoge という名前のフィールドが宣言されてるんだよね?
もし無いなら、単に、 hoge でアクセスできるもんね?
おもしれー。どうやるんだろ。
0228227NGNG
こうかな?
class A {
  protected String hoge ="A:hoge";
}
class B extends A {
  protected String hoge ="B:hoge";
}
class C extends B {
  protected String hoge ="C:hoge";
  public void foo() {
    System.out.println(((A)this).hoge);//A:hoge
    System.out.println(((B)this).hoge);//B:hoge
    System.out.println(super.hoge);//B:hoge
    System.out.println(hoge);//C:hoge
  }
}
0229222=226NGNG
>227,228
おおぉおお!
ありがとうございました。激しく感謝します。
0230デフォルトの名無しさんNGNG
はっきり言ってそういう呼び出しすること自体クラス設計間違ってるけどな。
0231229NGNG
>230
そうなんですか。ひとまず使えるようになってから考えようとか思ってました。ます。
いや、気になって気になって。

で、226,227の件で、今度はstatic変数だとできるかなぁと気になって、
知恵と知識が無いなりに試してたんですが、
わからないんで、ご教授いただけたらと思ったのですが、お願いできますでしょうか?
0232横槍NGNG
static も同じようなもん。ほんとに試したか? 試せばわかるだろ。
しかしだな、static なメンバは、
インスタンスではなく、クラス宣言を介してアクセスするもの。
表現するには明示的にクラスを指定する。回りくどいことなしに A.hoge, B.hoge と書いていく。

君の仮定はみんな、設計が汚い。
試しでやってるからピンとこないんだろうが、
何かの意味があってそういう書き方をすることは、まずない。
勉強する分にはいいけどな。
0233横槍NGNG
あと >>224 はうそだ。C++ じゃねーっつの
0234デフォルトの名無しさんNGNG
>>224は嘘で、
>>228は正しいのか。ワケワカメ。
0235デフォルトの名無しさんNGNG
C,Perl,PHPの経験ありの人がJAVAを勉強しようとしてます。
JAVA特有の部分だけ効率よく学びたいんですが、結城さんの
本の下巻ってどうでしょうか?
0236デフォルトの名無しさんNGNG
>>234
クラスの親子間で同じ名前のメンバーがある場合にどれをつかうかは、
クラスメソッド&変数と、インスタンスメソッドとでちがう。
クラスメソッド&変数の場合、変数の型によって決まる。
インスタンスメソッドの場合、変数がさすオブジェクトの型によって決まる。
0237デフォルトの名無しさんNGNG
よくSEとかエンジニアって言いますが、
大体どういう資格もってるんですか?こういう人たちって
シスアドとかですか?シスアド自体言葉しかしらんのですが・・・
有資格者の人からしてみればサイト作ったりスクリプト作ったりなんて
簡単なことなんですか?
よろしくお願いします。

すれ違いのようですが、何処で聞けばいいのか分からんのです。
0238デフォルトの名無しさんNGNG
スレどころか板
マ板のほうが近いような

マジレスすると単語にはなんにも意味はない
SEっていうと凄く見えるだけ

ITって単語になんの意味もないのと同じ
0239デフォルトの名無しさんNGNG
>>237
IPAの資格とか各種ベンダーの資格とか色々。
ベンダー資格は持ってないんだけどIPAに関して言えば、
プログラムというよりはもっと広い分野の勉強だから
これとればプログラムが組めるってもんでもないと思う。
0240デフォルトの名無しさんNGNG
>>238・239
板違いなのにありがとう。
深く聞いても理解できませんでした(汗
あきらめます。
0241デフォルトの名無しさんNGNG
資格は大企業にいたらボーナスが高くなる程度の役にしかたたない。
0242デフォルトの名無しさんNGNG
中小企業だと、入ったばっかり取ったばっかりのときにちょっと自慢できるだけ。
0243デフォルトの名無しさんNGNG
>>235
そいつらに比べるとJava特有の部分っていうのがでかすぎるな。
Perl/PHPと比べるならServlet/JSPとJSTL、strutsくらいは知っておいたほうがいいけど、結城さんの本にはサーバーサイドのことは触れてなかったはず。
0244229NGNG
>>232
神降臨。ありがとうございました。
(どうすればキャストできるのか考えてますた。的外れだったようです。  つД`)


>236
あの、僕にはまだ早いのかもしれませんが、もし宜しければ、
バカにも解るように噛み砕いて教えていただけないでしょうか?
>クラスメソッド&変数と
これは、クラスメソッド及びクラス変数及びインスタンス変数、ということですよね?
これの型というのは、クラスメソッドでは戻り値の型ということですか?
>インスタンスメソッドの場合、変数がさすオブジェクトの型
ってなんでしょう??うーん…
0245デフォルトの名無しさんNGNG
>239
あのな、そんな一度に全部わかろうとするな。
とりあえず入門書を2,3回通読しろ。もちろんまともな本な。
0246デフォルトの名無しさんNGNG
良スレに感謝
0247デフォルトの名無しさんNGNG
先生!
クラス内の、スタティックフィールドに、
メソッドからアクセスするときに、何気にthisをつけてしまったんですが、
そしたら、普通に動きました。
thisというとインスタンスを指定するために用いるものと思っていたのですが、
もっと何か重大な意味があるのでしょうか?

個人的にはthisをつけたら、コンパイルエラーが相応しいと考えていたので、カルチャーショックを禁じ得ませんって言うか何を言ってるのだろう。。。
0248デフォルトの名無しさんNGNG
>>244
これを実行したら、あとは結果を自分で考えて。

public class Demo{
 public static void main(String[] args){
  SuperClass super1 = new SuperClass();
  SubClass sub2 = new SubClass();
  SuperClass super2 = sub2;
  System.out.println(super1.foo + ", " super1.bar());
  System.out.println(sub2.foo + ", " sub2.bar());
  System.out.println(super2.foo + ", " super2.bar());
  System.out.println(((SubClass)super2).foo + ", " ((SubClass)super2).bar());
 }
}
Class SuperClass{
 String foo = "SuperClass";
 String bar(){return "SuperClass";}
}
Class SubClass extends SuperClass{
 String foo = "SubClass";
 String bar(){return "SubClass";}
}

スペースが全角になっているのでコピペする時は注意。コンパイルエラーがあったら直してね。
0249デフォルトの名無しさんNGNG
>>247
ターゲット参照を使用してクラスメソッドを呼んでも言語仕様的には全く問題ない。
0250デフォルトの名無しさんNGNG
>>247
> thisというとインスタンスを指定するために用いるものと思っていたのですが、
> もっと何か重大な意味があるのでしょうか?
this が特別扱いされたのではなくて、
ターゲット参照を使ったクラスメソッド呼び出しと解釈されただけ。

ちなみに、ターゲット参照を使ったクラスメソッド呼び出しだと、
 ((System)null).out.println(((System)null).getProperty("user.dir"));
とかもできる。
0251デフォルトの名無しさんNGNG
>>243
どうも。サーバサイドの技術の方の勉強に時間を割きたいんで
言語自体の勉強をサクっと終わらせたいんですけど考え甘いですかね。
よく分かってないんですが、もちろんサーブレットやらJSPを使って
プログラムする時にもJAVAの文法ってのが必要ですよね?

あとOOな言語に触ったことないからそこらへんの勉強もまず
しないとなーとか色々考えてます。

その辺をふまえて結城さんの本の下巻はどうかなーと思って
聞いてみました。
0252244NGNG
>248,>245?
ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています