1
세 가지 패키지로, 다음과 같은 세 가지 자바 클래스를 생각해Java : 알 수없는 유형의 객체에서 메소드가 작동하는 방식은 무엇입니까?
User.java
package user;
public class User {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [name=" + name + "]";
}
}
UserFactory.java
package factory;
import user.User;
public class UserFactory {
private static User user;
public static User getUser() {
if (user == null) {
user = new User();
}
return user;
}
}
에게
Test.java를package test;
import factory.UserFactory;
public class Test {
public static void main(String[] args) {
UserFactory.getUser().setName("StackOverflow");
System.out.println(UserFactory.getUser());
}
}
주된 방법은 test.Test
에 속하며 user.User
클래스를 임포트하지 않습니다. 그러나 user.User
유형에서 작동 할 수 있습니다.
이 동작을 정당화하는 방법은 무엇입니까?
이 답변은 –
Dhananjay
쪽지 ; 귀하의 질문에 관련이 없습니다 : A) 귀하의 공장은 아마도 "잘못"입니다; ** 하나의 정적 ** 사용자 객체를 가질 필요가 없습니다. 대부분의 프로그래머는 ** factory ** 클래스를 호출 할 때마다 매번 새로운 사용자를 부여한다고 가정합니다. – GhostCat
@Dhananjay - 링크를 제공해 주셔서 감사합니다. 비슷한 질문을 검색했지만 찾지 못했습니다. –