繁体   English   中英

Java从字符串实例化类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM