[英]Java instantiate class from string
我有以下内容
public interface SuperbInterface
public class A implements SuperbInterface
public class B extends A
public class C extends B
我想实例化C
但是我似乎正在获取B
,我做错了什么?
Class classz = Class.forName("C");
SuperbInterface superb = (SuperbInterface)classz.newInstance();
//Here when I debug it seems to be going to B.doWork() methods instead of C.doWork().
superb.doWork();
我唯一能想到的是您没有在C中重写doWork() 。
也许您尝试过ot覆盖,但是方法名或参数有拼写错误?
假设您正在使用Java的较新版本,请将@Override添加到doWork方法中。 如果您错误地重写了该方法,则编译器将告知您。
您确定C
会覆盖doWork
方法吗? 根据提出的问题,完全有理由/合法地期望,作为扩展B
一部分, C
不会为doWork
提供自己的实现,而是依赖于提供超类B
。
我看到了结果:
A的工作
您期待什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.