Exporting non-public type through public API

Adott a következő Java fájl:

package package2;

public class Callee {
    public InnerClass m1() {
        return new InnerClass();
    }

    public void m2(final InnerClass innerClass) {
    }
}

class InnerClass {
    public void m3() {
    }
}

Vegyük észre, hogy az InnerClass default elérési módosítóval rendelkezik, így csak a package2 csomagon belül látható.

És egy másik csomagban lévő kódrészlet, ami az előbbieket használja:

final Callee callee = new Callee();
callee.m1();
callee.m1().m3();
callee.m2(null);

A fenti három metódushívásból van-e olyan, amelyik fordítási hibát okozni? Ha igen, akkor mely, illetve melyek azok?

Válasz hajtás után.

Csak a callee.m1().m3() okoz fordítási hibát.

A Netbeans 6 az m1() és m2() metódusoknál figyelmeztet is a következővel: exporting non-public type through public API.

Tartalom átvétel