★12.タイプ情報
2269 ワード
Class
.class
.getClass()
Class.forName(" ")
getName()
:クラス名を返します.getSimpleName()
:クラス名を返します.getCanonicalName()
:クラス名を返します.isInterface()
:インタフェースかどうかを判断します.getInterfaces()
:クラスのすべてのインタフェースのClassオブジェクトを返します.isInstance(obj)
:objクラスオブジェクトかどうかを判断するパラメータを受け入れます.isAssignableFrom(cls)
:Classタイプのパラメータを受け入れ、clsで値を割り当てることができるかどうかを確認します.getSuperclass()
:ベースクラスのClassオブジェクトを返します.newInstance()
:Class対応オブジェクトを作成するが、このオブジェクトのタイプはObject(Class を選択すると、Aタイプのオブジェクトが返されます)がデフォルトのコンストラクタでなければなりません。 getMethods()
:このClassオブジェクトが記録したクラスのすべての共通メソッドを取得し、Methodオブジェクト配列を返します.getConstructors()
:このClassオブジェクトレコードのクラスのすべてのコンストラクタを取得し、Constructorオブジェクト配列を返します.cast()
:モデルチェンジ.if(X instanceof Dog)
は、問い合わせXがDogタイプであるか否かを表す.Method
Constructor
ダイナミックエージェント class Proxyer implements InvocationHandler {
private Object obj;
Proxyer(Object obj) {
this.obj = obj;
}
// InvocationHandler , : , ,
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//
return method.invoke(obj, args);
}
}
interface I {
void doSomething();
}
class A implements I {
public void doSomething() {
System.out.println("doSomething");
}
}
class SimpleDynamicProxy {
public static void main(String[] args) {
// , Class ,
I proxy = (I) Proxy.newProxyInstance(
I.class.getClassLoader(),
new Class[]{I.class},
new Proxyer(new A()));
proxy.doSomething();
}
}
class Proxyer implements InvocationHandler {
private Object obj;
Proxyer(Object obj) {
this.obj = obj;
}
// InvocationHandler , : , ,
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//
return method.invoke(obj, args);
}
}
interface I {
void doSomething();
}
class A implements I {
public void doSomething() {
System.out.println("doSomething");
}
}
class SimpleDynamicProxy {
public static void main(String[] args) {
// , Class ,
I proxy = (I) Proxy.newProxyInstance(
I.class.getClassLoader(),
new Class[]{I.class},
new Proxyer(new A()));
proxy.doSomething();
}
}