特點:主要在序列化的時候使用
不可以使用泛型
實現了Map接口(存放的是鍵值對)
key和value都是String
作用:作為簡單的配置文件使用
通常用於簡單工廠模式,一個抽象父類Car ,若干子類Benz BMW …… ,一個簡單工廠CarFactory,一個測試類UI
一個抽象父類Car
1 public interface Car { 2 public abstract void run(); 3 }
一個子類Benz
1 public class Benz implements Car { 2 3 @Override 4 public void run() { 5 System.out.println("Benz run"); 6 7 } 8 9 }
一個子類BMW
1 public class BMW implements Car { 2 3 @Override 4 public void run() { 5 System.out.println("BMW run"); 6 7 } 8 9 }
一個簡單工廠CarFactory
1 import java.io.FileInputStream; 2 import java.io.FileNotFoundException; 3 import java.io.IOException; 4 import java.util.Properties; 5 6 public class CarFactory { 7 8 public static Car createCar() { 9 // 通過配置文件來創建車 10 Properties property = new Properties(); 11 FileInputStream inStream = null; 12 try { 13 inStream = new FileInputStream("car.properties"); 14 } catch (FileNotFoundException e) { 15 System.out.println(e.getMessage()); 16 // e.printStackTrace(); 17 } 18 try { 19 property.load(inStream); // 通過流寫入集合,獲得鍵值對 20 21 // 得到Car實現類的全限命名 22 String clazz = property.getProperty("properties"); 23 // 使用類反射獲取對象實例 24 Class<?> c = Class.forName(clazz); 25 Car car = (Car) c.newInstance(); 26 return car; 27 } catch (IOException e) { 28 System.out.println(e.getMessage()); 29 // e.printStackTrace(); 30 } catch (ClassNotFoundException e) { 31 System.out.println(e.getMessage()); 32 // e.printStackTrace(); 33 } catch (InstantiationException e) { 34 System.out.println(e.getMessage()); 35 // e.printStackTrace(); 36 } catch (IllegalAccessException e) { 37 System.out.println(e.getMessage()); 38 // e.printStackTrace(); 39 } 40 return null; 41 42 } 43 }
一個測試Ui
1 public class CarUi { 2 3 public static void main(String[] args) { 4 Car car = CarFactory.createCar(); 5 car.run(); 6 } 7 8 }
一個car.properties 配置文件,存放了兩個類的全限命名
#properties=com.woniu.car.BMW
properties=com.woniu.car.Benz
總結:
配置文件主要的作用是通過修改配置文件可以方便的修改代碼中的參數,實現不用改class文件即可靈活變更參數。(想要什么車就改什么車)
解釋:java運行中java文件會變成class文件,之后無法通過反編譯找到原樣的代碼,這樣的話,如果java類中某個參數變更,就很難靈活的實現參數修改,這個時候properties 文件就能很靈活的實現配置,減少代碼的維護成本和提高開發效率。
同樣,如果我們存儲信息時想要存儲在不同的數據庫中時,就可以通過修改配置文件來切換數據庫(就是鍵值對,程序中參數是鍵,全限命名是值,通過修改全限命名我們就可以通過類反射獲取到不同的對象,前提是使用多態,許多實現類實現一個接口 Car car = 奔馳或寶馬)。