「Java」Java.lang.Class.asSubclass()メソッドを利用するサンプル
asSubclass()説明
このClassオブジェクトをキャストして、指定されたクラスオブジェクトによって表されるクラスのサブクラスを表します。
javaコード
package com.arkgame.study;
public class ParentClassDemo {
public static void main(String[] args) {
try {
ParentClassDemo cls = new ParentClassDemo();
ParentClassDemo subcls = new SubClassA();
//ParentClassDemo
Class<?> c = cls.getClass();
System.out.println("result1: " + c);
//sub class SubClassA
Class<?> cg = subcls.getClass();
System.out.println("result2: " + cg);
//represent a subclass of the specified class object
Class<?> cftInfo = cg.asSubclass(c);
System.out.println("result3: " + cftInfo);
} catch (ClassCastException e) {
System.out.println(e.toString());
}
}
}
class SubClassA extends ParentClassDemo {
public void print() {
System.out.println("subclass method is called");
}
}
package com.arkgame.study;
public class ParentClassDemo {
public static void main(String[] args) {
try {
ParentClassDemo cls = new ParentClassDemo();
ParentClassDemo subcls = new SubClassA();
//ParentClassDemo
Class<?> c = cls.getClass();
System.out.println("result1: " + c);
//sub class SubClassA
Class<?> cg = subcls.getClass();
System.out.println("result2: " + cg);
//represent a subclass of the specified class object
Class<?> cftInfo = cg.asSubclass(c);
System.out.println("result3: " + cftInfo);
} catch (ClassCastException e) {
System.out.println(e.toString());
}
}
}
class SubClassA extends ParentClassDemo {
public void print() {
System.out.println("subclass method is called");
}
}
package com.arkgame.study; public class ParentClassDemo { public static void main(String[] args) { try { ParentClassDemo cls = new ParentClassDemo(); ParentClassDemo subcls = new SubClassA(); //ParentClassDemo Class<?> c = cls.getClass(); System.out.println("result1: " + c); //sub class SubClassA Class<?> cg = subcls.getClass(); System.out.println("result2: " + cg); //represent a subclass of the specified class object Class<?> cftInfo = cg.asSubclass(c); System.out.println("result3: " + cftInfo); } catch (ClassCastException e) { System.out.println(e.toString()); } } } class SubClassA extends ParentClassDemo { public void print() { System.out.println("subclass method is called"); } }
結果
result1: class com.arkgame.study.ParentClassDemo
result2: class com.arkgame.study.SubClassA
result3: class com.arkgame.study.SubClassA