java - 将基对象转换为派生类

标签 java

我有两个类:

class Base {

  public String name;

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }


}

class Derived extends Base {

  public String getValue() {
    return name + " foo";
  }

}

并创建了一个对象:

Base foo = new Base();
foo.setName("John");

Derived bar = (Derived) foo;

这个简单的例子给出了 ClassCastException 异常:

java.lang.ClassCastException: Base cannot be cast to Derived

是否有可能以某种方式使用额外的只读方法扩展现有对象?

最佳答案

使用 Base foo = new Base(); 你说你有一只猫,但突然之间你试图将它转换为波斯猫,这本来可以成功的,如果所有的猫都是波斯猫。这是不正确的,这就是您得到 ClassCastException 的原因。

你必须做的:

Base foo = new Derived();

关于java - 将基对象转换为派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30573431/

相关文章:

java - java Matcher中的零星堆栈溢出错误

java - 并发访问公共(public)字段。为什么可以观察到不一致的状态?

java - 应该 move 球的程序,但不执行方法运行

c# - .Net/C# 世界中是否有与 NetBeans RCP 类似的东西?

java - 如何动态删除JPanel中的所有组件

java - 如何为动态创建数据库表的方法编写单元测试?

java - AWS Textract : Exception in thread "main" java. lang.NoSuchMethodError

java - AspectJ - 无法覆盖切入点 - 参数类型不匹配

java - GAME更新实体中的空指针

java - Tomcat 7 : process request out of band