[Редактировать: Мой ответ подходит для программистов на C #, но я не могу гарантировать, что он применим к Java.]
B является внутренним классом, а не подклассом A. Кроме того, B не содержит экземпляра A, поэтому ваш код как есть не может вернуть ни одного экземпляра A.
Вам нужно реструктурировать свои классы следующим образом:
class A
{
public class B
{
public A Parent;
public B(A parent)
{
this.Parent = parent;
}
}
}
Теперь у вашего класса B есть поле 'Parent', которое возвращает его родителя. Вы можете использовать эти классы следующим образом (это синтаксис C #, потому что я не знаю, имеет ли Java другой синтаксис для создания экземпляров внутренних классов):
public static void Main(String[] args)
{
A parent = new A();
A.B child = new A.B(child);
A backToParent = child.Parent;
}
Конечно, создание вашего класса B таким способом кажется немного забавным: технически вы можете передать любого родителя. Вероятно, было бы лучше переписать ваш класс A с помощью метода, который возвращает B:
class A
{
public class B
{
public A Parent;
public B(A parent)
{
this.Parent = parent;
}
}
public B getChild()
{
return new B(this);
}
}
public static void Main(String[] args)
{
A parent = new A();
A.B child = A.getChild();
A backToParent = child.Parent;
}