java 中对象转换

Python011

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

class Human{

public void drink(){System.out.println("Human")}

}

class YongMan extends Human{

public void drink(){System.out.println("YongMan")}}

}

public class Test{

public static void main(String arge[]){

Human e2=new YongMan()

e2.drink()

}

}

以上面这个程序为例子

Human e2=new YongMan()

这句其实是指父类对象e2是子类YongMan对象的上转型对象

上转型对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。

上转型对象可以操作子类继承或者隐藏的成员变量,也可以使用子类继承的或者重写的方法。上转型对象操作子类继承或重写的方法,其作用等价于子类对象去调用这些方法。因此,如果子类重写了父类的某个方法,则当对象的上转型对象调用这个方法时一定是调用了这个重写的方法

上面的YongMan 类中的drink()方法 重写了父类的方法

所以最后的输出结果是YongMan

写入以下代码即可实现:

public static void main(String[] args) {

User_DAL userDal = new User_DAL()// 创建数据访问对象

ResponseResult<User>ret = userDal.getUserList("id <50", 2, 10)// 查询ID小于50的用户,保存到分页类中

String json = JSON.toJSONString(ret, true)// 将对象转换成json字符串,true为格式化输出

System.out.println(json)     

List<User>list = JSON.parseArray("{{name:123},{name:456}}", User.class)//将json字符串,转换成Java对象数组

for (int i = 0i <list.size()i++) {

System.out.println(list.get(i).getName())

}

}