java 中对象转换
例如一个对象A中有属性a,b,c,d一个对象B有属性a,b,c他们之间没有关系,我想把A转换为B可以么?如果可以怎么实现?把B转换成A可以么?如何实现、...
例如 一个对象A 中 有属性a,b,c,d 一个对象B 有属性 a ,b,c 他们之间没有关系, 我想把 A 转换为B 可以么? 如果可以怎么实现?
把B转换成A 可以么? 如何实现、 展开
把B转换成A 可以么? 如何实现、 展开
3个回答
展开全部
前几条回答说的很好,A与B之间没有继承关系,是没有办法直接转换的,我这里给你几个转换的想法。
1、在A类或者B类中加入对方的引用:
class A{
private B bClass;
}
class B{
private A aClass;
}
使用时可以通过某些方法初始化或者获取另一个类,这个方法缺点就是比较冗余。
2、看你这里应该是A为子类,就建立一个新类B2继承自B,在其中有A类的引用,这样就可以用B2类代替A:
class B2 extends B{
private A aClass;
public B2(){
this.aClass=new A();
}
public B2(A a){
this.aClass=a;
}
public setA(int a){
this.aClass.set(a);
}
//其他类似方法
//……
public A toAClass(){
return aClass;
}
}
//转换代码
A a=((B2)b).toAClass();//B to A
B b=new B2(a);//A to B
展开全部
只有相同的继承体系中的类对象和之间才能进行转换。简单记住满足 A is B;这样的就能转换,比如一个 Animal对象,一个Dog 对象。Dog is Animal;所以可以转换。
如果 把Dog转换成Animal对象,这样为向上转型。
直接 Animal a=new Dog();
与向上转型相反,即是把父类对象转为子类对象。
Animal a=new Animal();
Dog dog=(Dog)a;
如果 把Dog转换成Animal对象,这样为向上转型。
直接 Animal a=new Dog();
与向上转型相反,即是把父类对象转为子类对象。
Animal a=new Animal();
Dog dog=(Dog)a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果A、B是两个相对独立的对象,则它们的属性没有关系。如果A、B有继承关系,那它们的属性就比较复杂了,要分多种情况讨论,推荐你找一本JAVA的书,认真看一下里边的‘类的继承、多态’这一章。关于转换,一般直接用括号强制转换,如A a = (A)b;
追问
现在我说的就是 没有任何关系, 他们可以强转么。 因为我不想改任意一个对象的属性,因为这个 所以 我才会想到 两个对象是否能转换
追答
没有关系则不能强转。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询