如果有一个类型AClass的对象a,
为了传参方便,想把它变成Object类型传递,
最后使用的时候变回A类型(但是使用者不知道原始类型)。Object o = new AClass();中间传递多次。最后,把o传入一个需要AClass的函数f(AClass a)
不可以用 f((AClass)o) 这样转换,因为用户不知道o的原始类型。我想问java有办法实现吗?
为了传参方便,想把它变成Object类型传递,
最后使用的时候变回A类型(但是使用者不知道原始类型)。Object o = new AClass();中间传递多次。最后,把o传入一个需要AClass的函数f(AClass a)
不可以用 f((AClass)o) 这样转换,因为用户不知道o的原始类型。我想问java有办法实现吗?
instanceof判断
{
AClass a = (AClass)o;
}
instanceof判断
{
BClass b = (BClass)o;
}
运行时一定报错
楼主,你不觉得你自己逻辑有问题吗?传的是Object,不知道什么类型,又不允许强转。那你想干什么???
你是不是以为java是javascript?呵呵,也许反射可以解决你的问题,但如果是业务软件不建议这么做。
我觉得你的问题主要还是设计问题。
你应该抽象出所有共同的业务方法设计一个接口或者基类ComClass,让所有业务类去实现这个接口或继承这个基类。
传参的时候去传递ComClass,然后即可用ComClass形参调用你的业务方法。
反射应该解决不了。因为反射出来的虽然是AClass的对象,但是都是Object类型。如果反射能够根据类名直接产生这个类型的对象才行。
不传Object怎么获得数据?用Class只能获得一个新对象。
{
f(o);
}