0

いきなり本題に入ります。私はまだ構文を少し学んでおり、このコードの違いを知りたいと思っています

コード A:

 public class Buttonz extends JButton{

        public Buttonz(){
            setText(new String(String.valueOf(i)));
        }

    }

宣言されていないという事実iは無視してください。それは私が迷っているところではありません。

コード B:

public class Buttonz extends JButton{

    public Buttonz(){
        setText(new String(String.this.charAt(i)));
    }

}

私がまだ理解していないのは、タイピングString.thisString.

クラスでドット演算子を使用すると、静的メソッド(および/または非表示でない場合は変数)にアクセスしていると想定していました。

私はこれを少し調べて、使用すると静的メソッドString.にアクセスしていると結論付けStringました..しかし、使用String.this.すると、クラスButtonzが拡張しているメソッドにアクセスしています。

これは正しいです?

私が正しく、時間を無駄にしている場合は、お詫び申し上げます。確実に進める必要があります。ありがとうございました。

4

1 に答える 1

0

String.this「修飾されたthis」構文です。this現在のクラスがString(この場合はそうではありません) である場合、またはこれがローカルまたは匿名クラス (内部クラスのタイプ) である場合、このクラスを含むthisという名前の外側のクラスのを参照するために使用されます。 String. このクラスが別のクラス内にあるかどうかを示していません。私はそうではないかと疑っています。しかし、たとえそうであっても、名前が付けられたエンクロージング クラスは ではStringなく、既存のクラスにコードを追加できないため、java.lang.String名前が付けられた他のクラスである必要があります。Stringそして、にcharAt()渡すことができる何かを返すという名前のメソッドがあるとは思えませんnew String()。結論として、これは実際のコードではありません。

于 2013-08-27T06:50:22.100 に答える