자바 객체를 생성하는 5가지 방법, 얼마나 알고 계시나요?

"Java Architecture Stack" WeChat 공식 계정을 팔로우하고 비밀번호 [Java 인터뷰 질문]을 입력하면 대기업의 인터뷰 질문을 받을 수 있습니다.

최근 한 친구가 인터뷰를 하러 갔는데 면접관이 "Java에서 객체를 생성하는 방법은 무엇입니까?"라는 질문을 받았습니다. 당연히 이 꼬마 친구는 새로운 방법을 아주 빨리 말했지만, 면접관은 계속해서 다른 방법이 무엇이냐고 묻자, 그는 영문도 모르고 한참 동안 머뭇거렸다. 그럼 이 문제가 어려운 걸까요? 오늘은 보 형제가 자바로 객체를 생성하는 방법을 요약하기 위해 왔습니다. 와서 살펴보세요.

 객체를 생성하는 방법

1.새로운 키워드

이 방법은 누구나 익숙할 텐데요, new 키워드를 통해 직접 객체를 생성할 수 있고, 이 방법을 통해 매개변수가 없는 생성자나 매개변수가 있는 생성자를 호출할 수 있습니다.예제 코드는 다음과 같습니다.

public class Test {
    public static void main(String[] args) {
        User user1 = new User();
        User user2 = new User("张三", "123456");
    }
 }

2. 역직렬화

객체를 역직렬화하고 생성하려면 먼저 객체를 직렬화해야 합니다. 그렇다면 직렬화란 무엇일까요? 직설적으로 말하면 Java 객체를 바이트 스트림이나 문자 스트림으로 변환하는 프로세스입니다. 역직렬화는 바이트 스트림 또는 문자 스트림 개체를 Java 개체로 변환하는 프로세스입니다.

다음 그림과 같이 직렬화되지 않은 파일은 비어 있습니다.

public class Test {
    public static void main(String[] args) throws Exception {
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("D:\\Test\\userFile.txt"));
        User user = new User("张三","123456");
        objectOutputStream.writeObject(user);
        objectOutputStream.close();
    }
}

위 코드를 실행하면 userFile.txt에 다음이 나타납니다.

이 시점에서 다음 코드를 다시 실행하면:

public class Test {
    public static void main(String[] args) throws Exception {
        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("D:\\Test01\\userFile.txt"));
        User user = (User) objectInputStream.readObject();
        System.out.println(user.username()+","+user.password());
        objectInputStream.close();
    }
}

다음 내용을 얻게 됩니다:

이것으로부터 우리는 이 User 객체가 이전 userFile.txt 파일에서 얻어졌다는 것을 알 수 있습니다.

3. newInstance 메소드 호출

클래스 클래스에는 클래스에 노출된 매개변수 없는 생성자 메서드를 호출하는 newInstance 메서드가 있는데, 이 메서드를 사용하여 객체를 생성할 때의 예제 코드는 다음과 같습니다.

public class Test {
    public static void main(String[] args) throws Exception {
        User user = (User) Class.forName("User").newInstance();
    }
}

4. 생성자.newInstance

또한 Constructor 클래스에는 객체를 생성하는 데 도움이 되는 newInstance 메소드도 있습니다. 이 메소드를 통해 매개변수화된 생성 또는 전용 생성 메소드를 호출할 수 있습니다. 샘플 코드는 다음과 같습니다.

public class Test {
    public static void main(String[] args) throws Exception {
        Constructor<User> userConstructor = User.class.getConstructor();
        User user = userConstructor.newInstance();
    }
}

5. 복제 방법

마지막으로 clone() 메소드를 사용하여 새 객체를 생성할 수도 있습니다. 하지만 이 메서드를 사용하기 위한 전제 조건은 먼저 클래스가 Cloneable 인터페이스를 구현하고 Object의 복제 메서드를 다시 작성하도록 해야 한다는 것입니다(Object의 이 메서드는 보호되어 있으며 다시 작성하지 않으면 외부에서 호출할 수 없기 때문입니다). 예제 코드는 다음과 같습니다:

public class User  implements Cloneable{
    @Override
    public User clone() throws CloneNotSupportedException {
        return (User) super.clone();
   }
}

public class Test {
    public static void main(String[] args) throws Exception {
        User user1 = new User();
        User user2 = user1.clone();
    }
}

 결론

위는 보 형제가 친구들에게 소개한 다섯 가지 객체 생성 방법입니다. 이제 Java 객체를 생성하는 방법이 무엇인지 아십니까? 면접관이 나중에 Java로 객체를 생성하는 방법을 다시 묻는 경우 이러한 방법을 알려줄 수 있습니다. Java 아키텍처 스택에 주의를 기울이면 매일 유용한 정보를 얻을 수 있습니다!

추천

출처blog.csdn.net/weixin_41692221/article/details/131415190