作者pttnews (PTT新闻)
看板java
标题[问题] Serializable 转型的问题
时间Wed Nov 28 14:47:24 2012
class obj implements Serializable {
public String str = "abcdefg";
}
public class TestConverType {
public void ConverType(Map<String,Object> in) {
}
public static void main(String[] args) {
obj o1 = new obj();
TestConverType ct = new TestConverType();
Map<String, Serializable> t1 = new HashMap<String,Serializable>();
t1.put("o1", o1);
ct.ConverType(t1);
}
}
我本来想把 t1 直接当参数,传给ConverType
可是会出现 错误讯息
The method ConverType(Map<String,Object>) in the type TestConverType
is not applicable for the arguments (Map<String,Serializable>)
必须透过转型
ct.ConverType(new HashMap<String,Object>(t1))
请问
1. Object 不是万物根源吗? ,为何不能接受Serializable
2. 透过转型的物件,会不会比较吃记忆体?
谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.175.188
1F:推 No:这不是转型问题,是泛型问题,你的需求可以加上wildcard来解 11/28 15:04
这招我会,顺道提出说明
TestConverType.ConverType() 及 obj 程式内容都不能修改
因为一个是第三方Lib , 一个是别人写的复杂Code
两边我都不想动。
※ 编辑: pttnews 来自: 59.120.175.188 (11/28 15:16)
2F:推 pzyc79:这是转型问题 Serializable是介面 不继承Object 11/28 15:17
所以 Object 不是万物根源, 眼中容不下 interface
※ 编辑: pttnews 来自: 59.120.175.188 (11/28 15:25)
3F:推 LaPass:没错.... Object跟interface是两种不同的东西.... 11/28 15:43
4F:推 pzyc79:啊不对我错了 这是泛型问题不是转型问题 泛型不会因为继承 11/28 16:05
5F:→ pzyc79:就接受 11/28 16:07