BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #48129同步于 2016/3/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【冰天雪地拜大神】求问一个关于定义java类的问题

morning
2016/3/3镜像同步21 回复
本人java小白,现在碰到一个棘手的问题,描述如下: 本人需要定义一个类, 在类中有一个变量的类型不确定,可能是int,string或者boolen 并且需要定义统一的getval和tostring方法 请问如何解决这个问题,用泛型吗? 限制是 1)因为牵涉到后面的编码译码处理,而译码后无法进行强制类型转换,因此需要定义成统一的一个类,不能变成多个类 2)另外编码器的原因,类里面不能增加新的变量,只能在方法中进行类的类型的适应处理。 —————————————————————————————— 补充下编译码器的入口和出口,以及处理流程,可能有助于理解这个问题 假设要定义的类是MyObj,里面的某一个变量可能是int、string或者boolean 编码器入口是 list<MyObj>,出口是编码后的String 译码器入口, 是编码后的String,和制定的目标转换类类型,比如MyObj类,出口则是list<MyObj> 得到译码器的数据后,需要提取list<MyObj>中的MyObj实例中的变量 --------------------------------- 现在统一类可能解决不了这个问题了,想到的方法是用string统一数据类型,再定义一个string指示数据类型,译码端根据译码后的MyObj中的数据类型string转换数据 不过还是不知道译码端如何写类型转换的代码,因为转换的目标类型是不确定的。 ———————————————— 对了 有人了解obix吗? 这个问题应该跟OBIX有点类似。但是OBIX没有给收端代码。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
icyfox机器人#1 · 2016/3/3
需求很奇怪,竟然不确定类型是什么
guoxiangonly机器人#2 · 2016/3/3
为什么不用多态
silenceTYN机器人#3 · 2016/3/3
2L正解 发自「贵邮」
dongqing机器人#4 · 2016/3/3
class Temple<T>{ T t; Temple(T t){ this.t = t; } public T getVal(){ return t; } public String toString(){ return t+""; } } 似乎是这样
yxyyinxinyu机器人#5 · 2016/3/3
用byte数组? 发自「贵邮」
a206206机器人#6 · 2016/3/4
generics
morning机器人#7 · 2016/3/4
是啊,第一次碰到这种需求,主要是因为后面需要经过编码器和译码器,对于译码器在译码中只能对一种类进行转换处理,即将编码序列转换为一种制定类的list, 如果定义一个基类,采用extends处理定义子类的话,译码之后只能回到父类,由于经过编译码,编译器无法强制转换为特定的子类。 【 在 icyfox 的大作中提到: 】 : 需求很奇怪,竟然不确定类型是什么
morning机器人#8 · 2016/3/4
不同多态是因为,译码后只能转换为同一类的list,使用多态的话,只能用父类的list 那么问题来了,因为经过编译码过程,无法将译码后的父类list中的某一个元素强制转换为制定的子类。 【 在 guoxiangonly 的大作中提到: 】 : 为什么不用多态
morning机器人#9 · 2016/3/4
谢谢,想过这种方法, 但是不知道Temple<T>, Temple(String) 和 Temple<Integer> 是属于一种类,还是属于2个类。 具体的处理流程我在帖子里面补充了,译码器的入口会指定一个转换类类型,出口是相应类型的list, 如果采用这种类的定义, 译码器入口的指定转换类类型可以直接写Temple吗?还是必须写Temple<X>。 这个问题头疼死了。 【 在 dongqing 的大作中提到: 】 : class Temple<T>{ : T t; : Temple(T t){ : ...................