這裡所謂的可擴展應用
Java應用的可擴展功能包含了允許動態地定義新的數據類型以及允許用戶插入自己的程序例程的能力
普通應用的擴展
在Java中
為什麼說這個功能對於普通程序來說也很重要呢?如果一個程序是可以動態擴展的
為進一步了解Java程序的動態擴展技術
當一個客戶試圖獲取某種保險產品的報價時
【Listing
系統從XML文件讀取指定產品的類的全稱
現在我們來看看系統如何動態地裝入對象
【Listing
public final class java
java
{
public static Class forName(String className)
public static Class forName(
String name
public Class[] getClasses()
public ClassLoader getClassLoader()
public Class getComponentType()
public Constructor getConstructor(Class[] parameterTypes)
public Constructor[] getConstructors()
public Class[] getDeclaredClasses()
public Constructor getDeclaredConstructor(
Class[] parameterTypes)
public Constructor[] getDeclaredConstructors()
public Field getDeclaredField(String name)
public Field[] getDeclaredFields()
public Method getDeclaredMethod(String name
parameterTypes)
public Method[] getDeclaredMethods()
public Class getDeclaringClass()
public Field getField(String name)
public Field[] getFields()
public Class[] getInterfaces()
public Method getMethod(
String name
public Method[] getMethods()
public int getModifiers()
public String getName()
public Package getPackage()
public ProtectionDomain getProtectionDomain()
public URL getResource(String name)
public InputStream getResourceAsStream(String name)
public Object[] getSigners()
public Class getSuperclass()
public boolean isArray()
public boolean isAssignableFrom(Class cls)
public boolean isInstance(Object obj)
public boolean isInterface()
public boolean isPrimitive()
public Object newInstance()
public String toString()
}
在這裡
【Listing
// Product
// Product接口
package com
public interface Product
{
public float calculatePremium(
float face
}
// MediCare
// Product的一個實現
package com
public class MediCare implements Product
{
public float calculatePremium(
float face
{
float premium;
// 計算保險費
//
return premium;
}
}
// LifeCare
// Product的一個實現
package com
public class LifeCare implements Product
{
public float calculatePremium(
float face
{
float premium;
// 計算保險費(不同的保險產品
//
return premium;
}
}
當用戶詢問報價時
【Listing
public Object GetProductFromName(String productName)
{
// 待裝入對象的類名稱
String className = null;
// 利用XML分析庫org
// 從XML文件獲取產品的相應類名稱
//
// 假定類名字對應正確的產品
//
try
{
Object o = null;
o = Class
}
//catch(ClassNotFoundException e){}
//catch(InstantiationException e){}
//catch(IllegalAccessException e){}
catch( Exception e )
{
e
}
return o;
}
// makeQuote方法無返回值
public void makeQuote()
{
String productName;
float faceValue
int faceValue
// 從應用的用戶界面獲取所有參數
// 產品名稱
// (有效的產品可以
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19125.html