Почему я не могу сослаться на метод экземпляра при явном вызове конструктора?

Кто-нибудь знает, почему вы можете ссылаться на метод static в первой строке конструктора, используя this () или super () , но не нестатический метод?

Рассмотрим следующий рабочий:

public class TestWorking{
    private A a = null;
    public TestWorking(A aParam){
       this.a = aParam;
    }

    public TestWorking(B bParam)
    {
        this(TestWorking.getAFromB(bParam));
    }

    //It works because its marked static.
    private static A getAFromB(B param){
        A a = new A();
        a.setName(param.getName());
        return a;
    }
}

И следующий нерабочий пример:

public class TestNotWorking{
    private A a = null;
    public TestNotWorking(A aParam){
       this.a = aParam;
    }

    public TestNotWorking(B bParam)
    {
        this(this.getAFromB(bParam));
    }

    //This does not work. WHY???
    private A getAFromB(B param){
        A a = new A();
        a.setName(param.getName());
        return a;
    }
}
36
задан Koekiebox 29 April 2015 в 08:15
поделиться