Project sample = new Project();
これは、タイプ プロジェクトの変数サンプルを作成し、オブジェクトを作成してそれを変数に割り当てることを意味します。
以下のコードはどういう意味ですか
Project sample = new Project() {
private void Test(){
}
}
テストはメソッドです. このコードの意味は何ですか. Test() はどのように呼び出すことができますか?
ありがとう
Project sample = new Project();
これは、タイプ プロジェクトの変数サンプルを作成し、オブジェクトを作成してそれを変数に割り当てることを意味します。
以下のコードはどういう意味ですか
Project sample = new Project() {
private void Test(){
}
}
テストはメソッドです. このコードの意味は何ですか. Test() はどのように呼び出すことができますか?
ありがとう
これ:
Project
ます。Test()
(他の状況ではこれはオーバーライドになる可能性がありますが、ここではオーバーライドできません)。sample
。Test()
であるprivate
ため、それを呼び出す唯一の方法は、匿名サブクラスの別のメソッドからです。他にメソッドがないため、 を呼び出す方法はありませんTest()
。
Project sample = new Project() {
private void Test(){
}
}
new
匿名オブジェクトを返す Project を拡張する匿名クラスを作成するだけです。メソッドは、新しく定義されたインスタンス メソッドまたは (メソッドがある場合はオーバーライドされます)
のいずれかです。Test
Project
Test
他の回答に加えて。この種の匿名クラスは、クラスを実装interface
または拡張するときに非常に役立ちますabstract
。例えば:
public interface MyInterface {
public void doStuff();
}
そして、ここにあなたの実装があります:
MyInterface myInterface = new MyInterface() {
public void doStuff() {
//here is your implementation
}
public void doAnotherStuff() {
//Note that this method is public, but
//you're still not able to call it from outside of this class
//because it's not part of MyInterface's contract
}
};
この行でエラーが発生します。
myInterface.doAnotherStuff(); //WTF? I don't know about this method of MyInterface
あなたが提示したコードは匿名クラスの例です。
プライベート メソッドを宣言しているため、そのクラス内からのみアクセスできます。
このタイプの構築は、一般に、クラスの動作を局所的に変更するために使用されます。通常、単純なインターフェイスを実装するために使用されます。そのため、いくつかの操作を委任できます。