请问java中有没有方法可以遍历一个父类的所有子类啊

请问java中有没有方法可以遍历一个父类的所有子类啊,第1张

UPDATE:

看楼主补充里的意思,应该最终目的是new出子类的实例,我有一个思路,楼主可以试试看——

既然要new出子类的实例来,那就要improt子类所在的包,所以只要遍历引入的包中的类就可以,遍历包中类的方法网上有,楼主可以自己找,我这里只说思路。

然后判断输入的String是否跟遍历到的类名匹配,如果匹配,再用getSuperClass()方法获取其父类,判断这个父类是不是Shape,如果是,new出那个子类的实例。

===============

无解,反射倒是可以取到父类,但要遍历子类是不行的。

但若父类是自己定义的类,倒是可以做到。

给你写了3个类:

A类:

package cntest;

public class A {

 public void test(){

  Systemoutprintln(thisgetClass());

  Systemoutprintln(thisgetClass()getSimpleName());

  Systemoutprintln(thisgetClass()getName());

 }

}

B类:

package cntest;

public class B extends A{

 

}

Test类:

package cntest;

public class Test {

 /

   @param args

  /

 public static void main(String[] args) {

  B b = new B();

  btest();

 }

}

结果:

class cntestB

B

cntestB

你要知道,在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来时的那个类型的实例对象,所以在父类中你可以中this获取到子类的信息!

不止一层继承关系时,你可以根据下面:

A类:

package cntest;

public class A {

 public void test(){

  Systemoutprintln(thisgetClass());

  Systemoutprintln(thisgetClass()getSimpleName());

  Systemoutprintln(thisgetClass()getName());

  Systemoutprintln(thisgetClass()getSuperclass());

  Systemoutprintln(thisgetClass()getSuperclass()getSimpleName());

  Systemoutprintln(thisgetClass()getSuperclass()getName());

 }

}

B类:

package cntest;

public class B extends A{

 B(){

//  Systemoutprintln("B");

 }

}

C类:

package cntest;

public class C extends B{

 C(){

//  Systemoutprintln("C");

 }

}

Test类:

package cntest;

public class Test {

 /

   @param args

  /

 public static void main(String[] args) {

  C c = new C();

  ctest();

 }

}

结果:

class cntestC

C

cntestC

class cntestB

B

cntestB

下面是能判断是否指定类的子类。但是要想全部查询。

这个不太可能吧。

Class c = ArrayListclass;

cisPrimitive(); //判断c是否为基本数据类型

cisAssignableFrom(Listclass); //判断c是否是List类的子类或父类

cgetGenericType(); //得到泛型类型

不过呢。你可以看看 eclipse 中的实现。就是你点击一个类。然后按 F4 就能从 "Type Hierarchy"。就能看到所有子类了。你可以搜搜看。

SQL 2005及以上可以使用CTE实现递归。

with tmp (ID,Name,ParentID,Level,HierarchyCode)

as(

 select ID,Name,ParentID,1,convert(varchar,convert(varchar,ParentID)+'->'+convert(varchar,ID))

 from 表名 where ParentId=0  --已知根节点是0

 UNION ALL

 select aID,aName,aParentID,Level+1,convert(varchar,HierarchyCode+'->'+convert(varchar,aID))

 from 表名 a inner join tmp b on aParentID=bID

)

select  from tmp order by HierarchyCode

结果如下:

以上就是关于请问java中有没有方法可以遍历一个父类的所有子类啊全部的内容,包括:请问java中有没有方法可以遍历一个父类的所有子类啊、java 父类如何在运行期动态获取子类类名、java中一个 类.class 发法 获取的描述类的对象,是 否 可以找到其 所有的子类 的名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10157403.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存