[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re:初めまして




前橋です。

はる さん:
>> いや、実は、x, y が宣言されてないとか?
>
>すいません今なおしました。

直しても、コンパイルを通らなかったわけですね。

>//マウス感知による2点間描画
>import java.applet.Applet;
>import java.awt.*;
>import java.awt.event.*;
>public class dLinem extends Applet
>             implements MouseListener,MouseMotionListener{
>    int clka,clkb,clkbX,clkbY;
>    int clcnt,id = 2,npg = 1,x=0,y=0;
>    int doX,doY;
>    Point p;
>    p =  new Point(x,y);
>    Button buttona;
>    TextField texta, textb, textc, textd, texte;
>
>    public void init(){ //ロード時の初期化メソッド
>        addMouseListener(this);
>        addMouseMotionListener(this);

えっと、

>    Point p;
>    p =  new Point(x,y);

この手のことは、コンストラクタ等、メソッドの中でやるのが私の
スタイルなんですが、確か、Javaの場合、文法上、インスタンス変
数を宣言と同時にnewしておくのは許してたはず...

今、文法をチェックしたら、インスタンス変数の初期化子で、他の
インスタンス変数を参照している場合、やっぱり評価順序はソース
テキスト上の順序に依存してしまうのですね...

でも、さすがに、ただの代入文をメソッドの外に書くのはまずいでしょう。

Point p = new Point(x, y);

とするか、

フィールド宣言の方では、

Point p;

だけにしといて、init()の中で、

p = new Point(x, y);

とすればよいのでは。

# 後者の方が私の好みです。

...うーん、ひょっとして、x, yの宣言は実は不要で、

 p = new Point(0, 0);
 
で良かったりしませんか?

# いかん、いかん、仕事、仕事。

------------------------------------------------------------
  前橋 和弥                             maebashi@xxxxxxxxxx
  中部ソフトエンジニアリング(株)
    〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
    Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------