java中 实现获取继承于本类的某一个子类的逻辑
时间: 2023-04-02 16:03:40 浏览: 82
可以通过反射机制来实现获取继承于本类的某一个子类的逻辑。具体实现可以通过以下代码:
```
Class<?> clazz = this.getClass();
Class<?>[] classes = clazz.getDeclaredClasses();
for (Class<?> c : classes) {
if (clazz.isAssignableFrom(c)) {
// c 是 clazz 的子类
}
}
```
其中,`clazz.getDeclaredClasses()` 方法可以获取本类中声明的所有类,然后通过 `clazz.isAssignableFrom(c)` 方法判断 `c` 是否是 `clazz` 的子类。如果是,则可以对其进行相应的操作。
相关问题
java中 如何写一个方法能够返回继承与本类的某一个子类 格式如下public <T extends YourClass> T getSubclass(String subclassName) { // 在这里实现获取继承于本类的某一个子类的逻辑 // 返回获取到的子类对象 } 将地脉补全
可以这样实现:
public <T extends YourClass> T getSubclass(String subclassName) {
try {
Class<?> subclass = Class.forName(subclassName);
if (YourClass.class.isAssignableFrom(subclass)) {
return (T) subclass.newInstance();
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
其中,subclassName 是子类的全限定名,例如 com.example.SubClass。首先通过 Class.forName() 方法获取子类的 Class 对象,然后判断该子类是否继承自 YourClass,如果是,则通过 newInstance() 方法创建该子类的实例并返回。如果出现异常,则返回 null。
java中 如何写一个方法能够返回继承与本类的某一个子类 格式如下public <T extends YourClass> T getSubclass(Class<T> subclass) { // 在这里实现获取继承于本类的某一个子类的逻辑 // 返回获取到的子类对象 } 将地脉补全
可以这样实现:
public <T extends YourClass> T getSubclass(Class<T> subclass) {
T instance = null;
try {
instance = subclass.newInstance();
if (instance instanceof YourClass) {
return instance;
}
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
这个方法可以通过传入一个子类的 Class 对象,返回一个继承于 YourClass 的子类对象。
阅读全文