loadClass(String name) throws ClassNotFoundException
1. findLoadedClass를 호출해 클래스가 이미 로딩되어 있는지 아닌지를 확인.
ClassLoader는 현재 클래스 로더가 로딩한 모든 클래스를 Class객체들의 테이블로 유지
클래스가 이미 로딩되어 있다면 findLoadedclass는 로딩되어 있는 Class객체를반환
2. 클래스가 로딩되어 있지 않다면 부모 클래스 로더의 loadClass를 호출
3. 클래스가 여전히 로딩되지 않았따면 findClass를 호출하여 클래스의 위치를찾아 로딩한다.
결론
현재 클래스로더에 해당 클래스가 있냐? 로딩 : 부모 클래스 로더에 있냐 ? 로딩 : findClass를 호출하여 클래스의 위치를 찾아 로드
부트스트랩 로더와 시스템 클래스가 로더가 주어진 클래스를 로딩하는데 실패하는 경우에만 사용자 정의 클래스가 로더가 클래스를 로딩할 기회를 가진다. 이 때 사용자 정의 클래스 로더는 시스템이나 부트스트랩 로더가 검색한 곳이 아닌 다른 곳에서 클래스를검색해야만 한다.
1. findLoadedClass를 호출해 클래스가 이미 로딩되어 있는지 아닌지를 확인.
ClassLoader는 현재 클래스 로더가 로딩한 모든 클래스를 Class객체들의 테이블로 유지
클래스가 이미 로딩되어 있다면 findLoadedclass는 로딩되어 있는 Class객체를반환
2. 클래스가 로딩되어 있지 않다면 부모 클래스 로더의 loadClass를 호출
3. 클래스가 여전히 로딩되지 않았따면 findClass를 호출하여 클래스의 위치를찾아 로딩한다.
결론
현재 클래스로더에 해당 클래스가 있냐? 로딩 : 부모 클래스 로더에 있냐 ? 로딩 : findClass를 호출하여 클래스의 위치를 찾아 로드
부트스트랩 로더와 시스템 클래스가 로더가 주어진 클래스를 로딩하는데 실패하는 경우에만 사용자 정의 클래스가 로더가 클래스를 로딩할 기회를 가진다. 이 때 사용자 정의 클래스 로더는 시스템이나 부트스트랩 로더가 검색한 곳이 아닌 다른 곳에서 클래스를검색해야만 한다.