Java는 클래스 구현을 위한 샘플 코드를 자동으로 로드합니다.
이 글에서는 주로 Java의 클래스 자동 로딩 구현에 대한 관련 정보를 샘플 코드를 통해 자세히 소개합니다. 이 글은 Java를 필요로 하는 모든 사람이 따라할 수 있는 확실한 참고 학습 가치를 가지고 있습니다. 아래 편집자에게 오셔서 함께 배워보세요.
머리말
이 글은 Java에서 Class의 자동 로딩에 대한 관련 내용을 주로 소개합니다. 이 글을 쓰는 이유는 개발 중에 가끔 그런 상황이 발생하고, 단지 Class Basic을 얻고 싶을 때가 있기 때문입니다. 정보가 있지만 관련 정적 코드 블록을 트리거하고 싶지 않습니다. 이 방법은 이전 기사 "JAVA 스캐닝 패키지"에서 사용되었습니다. 전문적인 이름이 있으면 수정해 주세요.
일반적으로 클래스를 로드할 때 Class 객체를 반환하고 클래스에서 정적 코드 블록을 트리거하는 Class.forName(String name)
메서드를 사용합니다. Class.forName(String name)
方法,该方法会返回一个Class对象,同时会触发该类中的静态代码块,举个例子:
我们先来编写一个只包含静态代码块的Bean类。
package com.jinggujin.classloader; public class Bean { static { System.err.println("static code block."); } }
使用err流是为了让信息及时输出,使用out会有缓存,可能会导致输出信息顺序错乱
然后编写测试方法进行测试。
package test; import org.junit.Test; public class ClassLoaderTest { @Test public void test() throws Exception { Class.forName("com.jinggujin.classloader.Bean"); } }
运行观察控制台输出:
static code block.
此时控制台会输出我们在静态代码块中打印的内容,这样就证明了了在使用Class.forName(String name)
会触发静态代码块,那么,要实现静默加载,我们就不能用这种方式了,我们可以使用ClassLoader的loadClass(String name)
方法进行加载,该方法仅会加载类而不会触发静态代码块,同样的编写测试方法进行测试。
package test; import org.junit.Test; public class ClassLoaderTest { @Test public void test() throws Exception { Class<?> clazz = Thread.currentThread().getContextClassLoader().loadClass("com.jinggujin.classloader.Bean"); System.err.println(clazz.getName()); } }
运行观察控制台输出:
com.jinggujin.classloader.Bean
我们发现,在控制台中仅输出了我们打印的类名信息,而静态代码块没有执行,除此之外,其实我们还可以使用Class.forName(String name)
的重写方法forName(String name, boolean initialize, ClassLoader loader)
먼저 정적 코드 블록만 포함하는 Bean 클래스를 작성해 보겠습니다. rrreee
🎜🎜rrreee🎜실행하고 콘솔 출력을 관찰하세요: 🎜🎜🎜정적 코드 블록.🎜🎜이때, 콘솔은 우리가 정적 코드 블록에 인쇄한 내용을 출력할 것입니다. Class.forName(String name)
을 사용하면 정적 코드 블록이 트리거되고 자동 로딩을 달성하기 위해 ClassLoader의 loadClass(String name)
를 사용할 수 없습니다. > 로드할 메서드입니다. 이 메서드는 정적 코드 블록을 트리거하지 않고 클래스만 로드합니다. 테스트를 위해 동일한 테스트 메서드를 작성합니다. 🎜
🎜🎜rrreee🎜실행하고 콘솔 출력을 관찰하세요. 🎜🎜rrreee🎜우리가 인쇄한 클래스 이름 정보만 콘솔에 출력되고 정적 코드 블록은 실행되지 않았으며, 기타 그보다 사실 Class.forName(String name)
의 forName(String name, boolean 초기화, ClassLoader loader)
재작성 메소드를 사용할 수도 있습니다. 자동 로딩 효과를 얻으세요. 🎜🎜🎜🎜요약🎜🎜🎜
위 내용은 Java는 클래스 구현을 위한 샘플 코드를 자동으로 로드합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

자바의 암스트롱 번호 안내 여기에서는 일부 코드와 함께 Java의 Armstrong 번호에 대한 소개를 논의합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다
