在java中投射,技术信息

Ale*_*ing 0 java oop inheritance casting

我试图理解当某人将一个特定类的对象转换为另一个类时发生的事情.即有两个类

 public class Aclass{

   private String attribute1;

   private List<String> attribute2;

   //get/set methods

 }

 public class Bclass{

   private String attribute1;

   private List<int> attribute2;

   //get/set methods

 }
Run Code Online (Sandbox Code Playgroud)

现在在另一个类中,我有这两个对象,然后我投射它们.

public class Cclass{

   Aclass aclass=new Aclass();

   //returneddata is a method that returns an Aclass object that contained dta for the Aclass attributes
   aclass=returneddata();

   Bclass bclass=new Bclass();


   bclass=Bclass.class.cast(aclass);

}
Run Code Online (Sandbox Code Playgroud)

从前面提到的类我采取了java.lang.ClassCastException.

问题是我有两个类,每个类只包含两个属性但每个都包含它们.这些属性中的16个在两个类中都是通用的.

此外,returneddata方法返回从存储库中检索的对象.您可以理解我想找到一种方法并将对象Aclass的16个数据属性传递给对象Bclass.

我想要:

1)找到一种方法将16个公共属性数据从一个对象重写到另一个对象

2)演员如何运作一般

任何命题?

Sim*_*ser 8

两个类具有相似属性的事实并不重要.重要的是,Aclass并且Bclass彼此无关:一个不是另一个的超类.如果要在这些类之间共享或移动数据,则需要自己将数据从一个实例复制到另一个实例.

一个演员的例子

假设我们有一个对象Fruit fruit = new Banana();.现在,如果您需要Banana在代码中调用稍后的方法,则可以使用强制转换fruit进行强制转换(Banana).为什么?因为你碰巧知道这fruit是一个Banana但Java编译器不知道(它认为它是一个Fruit,它也可能是一个不同的结果).因此,您必须添加强制转换以添加有关fruit安全性的附加信息并执行操作.