锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
闂錛氬浣曠煡閬撲竴涓柟娉曠殑榪愯鏃墮棿錛?br />寮曞嚭浠g悊----------------------
1.鐩存帴鍦ㄥ師鏉ョ被涓婁慨鏀?br />鍒╃敤System.currentTimeMillis()
•public void Move() {
long start=System.currentTimeMillis();
System.out.println("Tank Moving");
try {
Thread.sleep(new Random().nextInt(10000));
} catch (InterruptedException e) {
e.printStackTrace();
}
long end=System.currentTimeMillis();
System.out.println("time:"+(end-start));
}
2.鍒╃敤緇ф壙
濡傛灉涓嶈兘鍦ㄥ師鏉ョ被涓婃坊鍔犲嚱鏁般傚垯鍙互鍒╃敤鏂板緩綾葷戶鎵縠xtends鍘熸潵綾伙紝閲嶅啓鏂規硶錛屽湪super.鏂規硶鍓嶅悗鍔犲叆姝ゅ嚱鏁癝ystem.currentTimeMillis()
public class Tank2 extends Tank{
@Override
public void Move() {
long start=System.currentTimeMillis();
super.Move();
long end=System.currentTimeMillis();
System.out.println("time2:"+(end-start));
}
}
3.鍒╃敤鑱氬悎銆傛柊寤轟竴涓被B瀹炵幇鎺ュ彛鍑芥暟錛孊綾婚噷闈㈡湁闇瑕佹祴璇曠殑綾籄鐨勫璞°傜浉褰撲簬B鏄疉鐨勪竴涓唬鐞嗐傚疄闄呬笂錛岀浜岀鏂規硶涔熺畻鏄竴涓唬鐞?br />public class Tank3 implements Moveable{
public Tank3(Tank myt) {
super();
this.myt=myt;
}
Tank myt;
@Override
public void Move() {
long start=System.currentTimeMillis();
myt.Move();
long end=System.currentTimeMillis();
System.out.println("time3:"+(end-start));
}
}
4銆佸埄鐢ㄨ仛鍚堝疄鐜板涓唬鐞嗐備笅闈㈠啓鏃墮棿浠g悊錛堣繍琛岀殑鏃墮棿錛夊拰鏃ュ織浠g悊錛堟墦鍗幫級,鍙互閫氳繃鏀瑰彉client綾諱笂浠g悊璋冪敤欏哄簭鏉ユ敼鍙樺嚭鐜扮殑欏哄簭
------------- Moveable .java-------------
package mypro.cn;
public interface Moveable {
public void Move();
}
---------------tank.java-----------
package mypro.cn;
import java.util.Random;
public class Tank implements Moveable{
public void Move() {
System.out.println("Tank Moving");
try {
Thread.sleep(new Random().nextInt(10000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
----------- TankTimeProxy.java-------------------------
package mypro.cn;
import java.text.DateFormat;
public class TankTimeProxy implements Moveable{
public TankTimeProxy(Moveable myt) {
super();
this.myt=myt;
}
Moveable myt;
@Override
public void Move() {
long start=System.currentTimeMillis();
java.util.Date date = new java.util.Date();
String currTime = DateFormat.getDateTimeInstance().format(date);
System.out.println("starttime:"+currTime);
myt.Move();
long end=System.currentTimeMillis();
System.out.println("time:"+(end-start));
}
}
------------------------- TankLogProxy .java-------------------------------
package mypro.cn;
public class TankLogProxy implements Moveable{
public TankLogProxy(Moveable myt) {
super();
this.myt=myt;
}
Moveable myt;
@Override
public void Move() {//鏃ュ織浠g悊
System.out.println("tank start");
myt.Move();
System.out.println("tank stop"); }
}
--------------------- Client .java----------------------------
package mypro.cn;
public class Client {
public static void main(String[] args) {
Tank t=new Tank();
TankTimeProxy ttp=new TankTimeProxy(t);//鍏堟椂闂翠唬鐞嗭紝鍗沖厛鍖呰涓灞傛椂闂?/span>
TankLogProxy tlp=new TankLogProxy(ttp);//鍐嶆棩蹇椾唬鐞嗭紝鏈澶栧眰鍖呰鏃ュ織
Moveable m=tlp;
m.Move();
}
}
鏀瑰彉鍖呰欏哄簭錛屽厛鍖呰鏃ュ織錛屽啀鍖呰鏃墮棿錛?br />
]]>
<U> Class<? extends
U>
asSubclass(Class<U> clazz)
T
cast(Object obj)
boolean
desiredAssertionStatus()
static Class<?>
forName(String className)
Class
瀵硅薄銆?/td>static Class<?>
forName(String name,
boolean initialize, ClassLoader loader)
Class
<A extends Annotation>
A
getAnnotation(Class<A> annotationClass)
Annotation[]
getAnnotations()
String
getCanonicalName()
Class<?>[]
getClasses()
Class
瀵硅薄鐨勬暟緇勶紝榪欎簺瀵硅薄琛ㄧず灞炰簬姝?Class
ClassLoader
getClassLoader()
Class<?>
getComponentType()
Class
銆?/td> Constructor<T>
getConstructor(Class<?>... parameterTypes)
Constructor
瀵硅薄錛屽畠鍙嶆槧姝?Class
Constructor<?>[]
getConstructors()
Constructor
瀵硅薄鐨勬暟緇勶紝榪欎簺瀵硅薄鍙嶆槧姝?Class
Annotation[]
getDeclaredAnnotations()
Class<?>[]
getDeclaredClasses()
Class
瀵硅薄鐨勪竴涓暟緇勶紝榪欎簺瀵硅薄鍙嶆槧澹版槑涓烘 Class
Constructor<T>
getDeclaredConstructor(Class<?>... parameterTypes)
Constructor
瀵硅薄錛岃瀵硅薄鍙嶆槧姝?Class
Constructor<?>[]
getDeclaredConstructors()
Constructor
瀵硅薄鐨勪竴涓暟緇勶紝榪欎簺瀵硅薄鍙嶆槧姝?Class
Field
getDeclaredField(String name)
Field
瀵硅薄錛岃瀵硅薄鍙嶆槧姝?Class
Field[]
getDeclaredFields()
Field
瀵硅薄鐨勪竴涓暟緇勶紝榪欎簺瀵硅薄鍙嶆槧姝?Class
Method
getDeclaredMethod(String name, Class<?>... parameterTypes)
Method
瀵硅薄錛岃瀵硅薄鍙嶆槧姝?Class
Method[]
getDeclaredMethods()
Method
瀵硅薄鐨勪竴涓暟緇勶紝榪欎簺瀵硅薄鍙嶆槧姝?Class
Class<?>
getDeclaringClass()
Class
瀵硅薄鎵琛ㄧず鐨勭被鎴栨帴鍙f槸鍙︿竴涓被鐨勬垚鍛橈紝鍒欒繑鍥炵殑 Class
Class<?>
getEnclosingClass()
Constructor<?>
getEnclosingConstructor()
Constructor
Method
getEnclosingMethod()
Method
T[]
getEnumConstants()
Field
getField(String name)
Field
瀵硅薄錛屽畠鍙嶆槧姝?Class
Field[]
getFields()
Field
瀵硅薄鐨勬暟緇勶紝榪欎簺瀵硅薄鍙嶆槧姝?Class
Type[]
getGenericInterfaces()
Type
getGenericSuperclass()
Class<?>[]
getInterfaces()
Method
getMethod(String name, Class<?>... parameterTypes)
Method
瀵硅薄錛屽畠鍙嶆槧姝?Class
Method[]
getMethods()
Method
瀵硅薄鐨勬暟緇勶紝榪欎簺瀵硅薄鍙嶆槧姝?Class
int
getModifiers()
String
getName()
Package
getPackage()
ProtectionDomain
getProtectionDomain()
ProtectionDomain
銆?/td> URL
getResource(String name)
InputStream
getResourceAsStream(String name)
Object[]
getSigners()
String
getSimpleName()
Class<? super T>
getSuperclass()
Class
鎵琛ㄧず鐨勫疄浣擄紙綾匯佹帴鍙c佸熀鏈被鍨嬫垨 void錛夌殑瓚呯被鐨?Class
銆?/td> TypeVariable<Class<T>>[]
getTypeParameters()
boolean
isAnnotation()
boolean
isAnnotationPresent(Class<? extends Annotation> annotationClass)
boolean
isAnonymousClass()
boolean
isArray()
Class
瀵硅薄鏄惁琛ㄧず涓涓暟緇勭被銆?/td> boolean
isAssignableFrom(Class<?> cls)
Class
Class
鍙傛暟鎵琛ㄧず鐨勭被鎴栨帴鍙f槸鍚︾浉鍚岋紝鎴栨槸鍚︽槸鍏惰秴綾繪垨瓚呮帴鍙c?/td> boolean
isEnum()
boolean
isInstance(Object obj)
Object
鏄惁涓庢 Class
boolean
isInterface()
Class
瀵硅薄鏄惁琛ㄧず涓涓帴鍙g被鍨嬨?/td> boolean
isLocalClass()
boolean
isMemberClass()
boolean
isPrimitive()
Class
瀵硅薄鏄惁琛ㄧず涓涓熀鏈被鍨嬨?/td> boolean
isSynthetic()
T
newInstance()
String
toString()