1 Java에서 동적으로 로드되는 클래스와 정적으로 로드되는 클래스의 차이점
new가 객체를 생성하는 방식을 정적 로딩이라고 하고 Class.forName("XXX")을 사용하는 방식을 동적 로딩이라고 합니다. 그 이유는 정적으로 로드된 클래스의 소스 프로그램은 컴파일 타임에 로드되고(반드시 존재해야 함), 동적으로 로드된 클래스의 소스 프로그램은 컴파일 타임에 없을 수 있다는 것입니다(소스 프로그램이 존재할 필요는 없음).
2. 클래스를 동적으로 로드해야 하는 이유
제가 이해하기로는 클래스를 동적으로 로드하면 프로그램의 유연성이 높아집니다. 예를 들어, 프로그램에는 50개의 함수가 있지만 그 중 하나만 사용할 수 있습니다. 정적 로딩을 사용하는 경우 컴파일 전에 100개의 함수에 대한 정의를 모두 제공해야 하며, 그렇지 않으면 컴파일이 통과되지 않습니다. 동적 로딩 메커니즘이므로 많은 시간을 소비할 필요가 없으며 사용할 메커니즘을 정의하기만 하면 됩니다.
정적 로딩:
public class Office_Static { public static void main(String[] args) { //new 创建对象,是静态加载类,在编译时刻就需要加载所有的可能使用到的类 if("Word".equals(args[0])){ Word w = new Word(); w.start(); } if("Excel".equals(args[0])){ Excel e = new Excel(); e.start(); } } }
이 프로그램은 컴파일 시 Word, Excel 클래스가 있어야 합니다. 엑셀을 사용하지 않더라도 로딩이 필요합니다.
동적 로딩:
1. 인터페이스 OfficeAble :
public interface OfficeAble { public void start(); }
2. 워드 구현 인터페이스:
public class Word implements OfficeAble{ public void start(){ System.out.println("word start"); } }
3. 엑셀 구현 인터페이스:
public class Excel implements OfficeAble{ public void start(){ System.out.println("excel start"); } }
4. 아아아아
위 내용은 Java가 예시 코드의 반사 정적 로딩 및 동적 로딩을 구현하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!