Java

Java класс внутри класса

Как сделать, чтобы метод можно было вызвать вот так: class.twoclass().void()
Иметь объект class такого типа, который имеет метод twoclass(), который возвращает тип, имеющий метод void().

Иннер классы тут не нужны
Рашид Тукбаев
Рашид Тукбаев
14 849
Лучший ответ
Никак. Class class = new Class ();
Переходи на Котлин. Там это реализовано точно так, как ты и спрашивал
Адлан Уваров
Адлан Уваров
84 820
Чем не устраивает просто класс с наличием этого метода?
В объект Class вы не можете добавить свои методы.
Лёха Горбачёв
Лёха Горбачёв
55 095
Просто скопируй этот код в свой Main.java и попробуй с ним разобраться.

public class Main {

public static void main(String[] args) {
User u = new User("John");
UserAccount ua = new UserAccount(u, "password");

System.out.print(ua.getUser().getName()); // John
}

class User {
private String name;

User(String name) {
this.name = name;
}

public String getName() {
return this.name;
}
}

class UserAccount {
private User user;
private String password;

UserAccount(User user, String password) {
this.user = user;
this.password = password;
}

public User getUser() {return this.user;}
}

}
Араик Серобян
Араик Серобян
1 675
То, что вы спросили в вопросе называется шаблоном программирования Builder. Вам необходимо в методах класса возвращать объект класса. Пример:

class Person {

private String name;
private int age;

private Person setName(String name) {
this.name = name;
return this;
}

private Person setAge(int age) {
this.age = age;
return this;
}

@Override
public String toString() {
return name + ", " + age;
}
}

Если необходимо вызывать класс без создания через new, то возможно есть смысл посмотреть в сторону шаблона Singleton.

Так же по сабжу можно посмотреть в сторону идиомы Fluent interface. В целом похожая штука на Builder, но разруливается на уровне интерфейсов
LZ
Leopolds Zingers
233