首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Web 基礎進階教程:MyEclipse、JUnit、JDK 5 新特性與反射實戰

     編輯:Java 相關知識

一、MyEclipse 開發環境建置

  • 安裝路徑不可含中文/空格;Workspace 同理。
  • JDK 配置:環境變數 JAVA_HOME、PATH、CLASSPATH。
  • 專案建立:Java Project / Web Project,選擇專案專用 JDK。
  • 命名規範:類 PascalCase、方法/變數 camelCase、常數 UPPER_SNAKE。
  • 常用快捷鍵:Alt+/ 代碼補全、Ctrl+Shift+O 導入包、Ctrl+/ 單行註解、Ctrl+Shift+/ 多行註解、Ctrl+D 刪除行。

二、Debug 斷點調試實戰

  1. 雙擊行號左側添加斷點(藍點)。
  2. Debug As → Java Application,切換至 Debug 視角。
  3. F6 (Step Over) 單步執行、F5 (Step Into) 進入方法、F7 (Step Return) 跳出方法、F8 (Resume) 執行至下一斷點/結束。
  4. Variables 視圖即時觀察變數值變化,Expressions 監看任意運算式。

三、JUnit 4 單元測試核心


public class CalculatorTest {
    @Before public void setUp() { /* 每個 @Test 前執行 */ }
    @After public void tearDown() { /* 每個 @Test 後執行 */ }
    @Ignore public void ignoreThis() { /* 不執行 */ }

    @Test public void testAdd() {
        Calculator c = new Calculator();
        assertEquals(5, c.add(2, 3), "加法驗證");
    }
}

右鍵方法/類 → Run As → JUnit Test,綠條 = 通過,紅條 = 失敗。

四、JDK 5 六大新特性深度解析

1. 泛型

List list = new ArrayList<>(); // 編譯期類型檢查,避免 ClassCastException
// 泛型方法
public static  void swap(T[] arr, int i, int j) { T t=arr[i]; arr[i]=arr[j]; arr[j]=t; }
// 泛型類
public class Box { private T value; /* getter/setter */ }

類型擦除: 執行期泛型資訊消失,List 變 List,靠編譯器插入檢查轉型碼保證安全。

2. 列舉

enum Signal { RED, GREEN, YELLOW; }
// 進階:帶屬性、方法、介面實現
enum Color implements Printable {
    RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF);
    private final int rgb;
    Color(int rgb) { this.rgb = rgb; }
    public int getRGB() { return rgb; }
    public void print() { System.out.printf("#%06X%n", rgb); }
}

常用 API:name()、ordinal()、valueOf()、values()。

3. 靜態導入

import static java.lang.System.out;
import static java.util.Arrays.sort;
out.println("Hello"); sort(arr); // 直接用類名.靜態成員

4. 自動拆裝箱

Integer i = 10; // 裝箱: Integer.valueOf(10)
int n = i;      // 拆箱: i.intValue()
// 向下相容:JDK 1.4 代碼在 JDK 5+ 仍按舊規則解析重載

5. 增強 for 循環

for (String s : list) { ... } // 適用於實現 Iterable 的集合與陣列
// 底層編譯為 Iterator 循環,Map 需遍歷 entrySet()/keySet()

6. 可變參數

public static int sum(int... nums) {
    int s = 0; for (int n : nums) s += n; return s;
}
sum(1,2,3); sum(new int[]{1,2,3}); // 兩種調用等價
// 限制:只能有一個,且必須在參數列表最後

五、反射機制核心原理與實戰

核心類對應

反射類對應結構
Class類本身
Field屬性
Constructor建構子
Method方法

三種獲取 Class 方式


Class c1 = Person.class;
Class c2 = new Person().getClass();
Class c3 = Class.forName("com.demo.Person"); // 最常用,支援動態類名

四大核心操作實戰

1. 無參建構子實例化


Class c = Class.forName("com.demo.Person");
Person p = (Person) c.newInstance(); // 需有 public 無參建構子
p.setName("Tom");

2. 有參建構子實例化


Constructor cons = c.getConstructor(String.class, int.class);
Person p = (Person) cons.newInstance("Jerry", 25);

3. 操作私有屬性


Field f = c.getDeclaredField("name");
f.setAccessible(true); // 關鍵:暴力反射破壞封裝
f.set(p, "Mike");
Object val = f.get(p);

4. 呼叫私有/靜態方法


Method m = c.getDeclaredMethod("setName", String.class);
m.setAccessible(true);
m.invoke(p, "Alice"); // 實例方法:第一參數傳實例
// 靜態方法:
Method sm = c.getDeclaredMethod("staticMethod");
sm.invoke(null); // 第一參數傳 null

六、反射應用場景

  • 框架核心:Spring IOC 容器掃描 @Component、實例化 Bean、注入依賴。
  • ORM 映射:Hibernate/MyBatis 依據註解/配置映射欄位、建構實體。
  • 動態代理:JDK Proxy / CGLIB 運行時生成代理類。
  • 外掛/熱插拔:掃描目錄載入實作介面的類,無需修改主程式。
  • 測試工具:JUnit/TestNG 透過反射發現並執行 @Test 方法。

總結

本教程串聯 IDE 效率技巧 → Debug 調試 → JUnit 測試驅動 → JDK 5 語法糖 → 反射動態編程 完整進階路徑。反射雖強大但破壞封裝、效能較差、編譯期無檢查,原則:框架層使用、業務層避免。掌握上述核心 API 與最佳實踐,即具備閱讀主流框架源碼與自研框架的基礎能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved