2016-07-28 14 views
-2

今日は非常に奇妙なことが見つかりました。私は静的な内部クラスを持つ次のクラスを持っています。Javaの静的内部クラスのスコープ

public class PDto { 

private Agreement agreement = new Agreement(); 

    public static class Agreement{ 
     public String agreementName; 
     public String agreementDescription; 
     public String currency; 
    } 

    public Agreement getAgreement() { 
     return agreement; 
    } 

    public void setAgreement(Agreement agreement) { 
     this.agreement = agreement; 
    } 
} 

次のような方法がある別のクラスにClassA: - クラスA

classBService.createBillingAgreement(payment); 
System.out.println("Changed billing agreement name : " + payment.getAgreement().agreementName); 

そして、私はクラスのClassBから契約名を印刷するメソッドを呼び出します

private Agreement createBillingAgreement(PDto payment) { 

    PDto.Agreement billingAgreement = payment.getAgreement(); 
    Agreement agreement = new Agreement(); 
    agreement.setName(billingAgreement.agreementName); 
    agreement.setDescription(billingAgreement.agreementDescription); 
    billingAgreement.agreementName = "Changed agreeement Name" ; 
} 

クラスBのコードを、私はcreateBillingAgreementクラスAの方法で設定された値を取得します。どのようにそれが可能です。

+1

は、関連するすべてのコードを投稿してください静的なクラスです。投稿したコードはコンパイルに合格しません。 – Eran

+0

あなたの質問は完全にわかりませんが、 'payment.getAgreement()'は 'PDto'の' agreement'インスタンスを返します( 'billingAgreement.agreementName ="変更された契約名 "はそのインスタンスの名前を設定します) 'createBillingAgreement(...)'のreturn文がなくなっているので(完全にはっきりしていない)、それ以外の部分も同様です。 – Thomas

+0

潜在的な誤解を防止するための単なるメモ:静的内部クラスは外部クラスと特別な関係を持ちません。外部クラスは名前空間の形式としてのみ動作しますが、それだけです。 – Thomas

答えて

1

static-innerクラスは、静的に同じクラスのアクセスに使用されます。たとえば、次のように

public class Parent{ 
    public static class Child{ 
     public void aMethod(String s){ 
      System.out.println("Hi!" + s); 
     } 
    } 
} 

public class AnotherClass{ 
    public void AnotherMethod(){ 
     Parent.Child.aMethod("From AnotherClass"); 
    } 
} 

OUT:

こんにちは! AnotherClass

から、またはお使いの場合には:

PTdo.Agreement 

     ^

これは

関連する問題