類加載和注解是Java中重要的概念之一。在Java中,類的加載通常是在運行時進行的,Java應用程序結構的核心是類。當Java應用程序開始運行時,JVM就會開始加載應用程序的類。類的加載過程可以分為三個主要階段:
1. 加載階段:首先,JVM將查找并加載需要使用的類文件,然后將類的字節碼數據裝載到內存中,并在堆區創建對應的Class對象。
2. 鏈接階段:JVM會將類字節碼中的符號引用轉換為直接引用,解析類與其他類的關系。這個階段主要有三個過程:驗證、準備和解析。
3. 初始化階段:在這個階段,JVM會對類進行初始化操作,例如執行static塊中的代碼或者為static變量分配內存空間。
public class Demo {
private String name;
public Demo(String name) {
this.name = name;
}
@Override
public String toString() {
return "Demo [name=" + name + "]";
}
}
注解是在Java 5中引入的特性。它們是Java代碼中用于描述代碼的元數據。注解不會直接影響代碼的執行,而是可以通過自定義處理器或者框架來讀取注解信息后進行特定的處理。Java中有許多內置注解,例如Override和SuppressWarnings,可以在Java代碼中使用這些注解來提供編譯器、IDE和其他工具使用的信息。
下面是一個使用注解的示例:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Table {
String tableName() default "table";
}
@Table(tableName = "user")
public class User {
private int id;
private String name;
public User(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
在上面的示例中,我們創建了一個名為“Table”的注解,并將其應用于User類。該注解包含一個字符串類型的元素tableName,可以通過該元素指定表名。然后我們使用反射讀取User類上的注解信息,并將其應用到某些業務邏輯中。這是使用注解的一個非常基本的示例。