java 中对象转换

Python07

java 中对象转换,第1张

前几条回答说的很好,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

Java数据类型的转换原则

从低精度向高精度转换

byte 、short、int、long、float、double、char

注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换

基本类型向类类型转换

正向转换:通过类包装器来new出一个新的类类型的变量

Integer a= new Integer(2)

反向转换:通过类包装器来转换

int b=a.intValue()

类类型向字符串转换

正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可

反向转换:通过类包装器new出一个新的类类型的变量

eg1: int i=Integer.valueOf(“123”).intValue()

说明:上例是将一个字符串转化成一个Integer对象然后再调用这个对象的intValue()方法返回其对应的int数值。

eg2: float f=Float.valueOf(“123”).floatValue()

说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。

eg3: boolean b=Boolean.valueOf(“123”).booleanValue()

说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。

eg4:double d=Double.valueOf(“123”).doubleValue()

说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。

eg5: long l=Long.valueOf(“123”).longValue()

说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。

eg6: char=Character.valueOf(“123”).charValue()

说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。