rt!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【angel_z_yu】截止到2008-07-10 16:14:49的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:20                       每贴平均分数:20                       
    回帖的总数量:9                        得分贴总数量:3                        回帖的得分率:33%                      
    结贴的总数量:1                        结贴的总分数:20                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    有印象。。
    JAVA核心技术第一卷了   最后那几十页讲过这个问题
      

  3.   

    ArrayList<String> 你这里只能装 String 啊,要想获得类型信息用:
    List<String> list = ArrayList<String>();
    list.add("xxxxx");
    list.add...
    ...
    Object o = list.get(0);
    System.out.println(o.getClass());
      

  4.   

    如果 list是类的成员Field,是方法的参数、返回值Method,在Field和Method方法中有getGenericXXX的方法可以让你获取需要的信息
    但是如果是局部变量,List<String> list = ...这个是无法获取的,因为它只是编译时用到,生成的Class文件中并没有<String>信息的
      

  5.   

            Object a=.....;
    if(a instanceof String){
    //判断a是否是String 类型
    }
      

  6.   

    我的问题前提是,我只知道这个泛型类型的对象(Object),不知道它是Array<String>,或是Array<integer>,或是list<?>,或是其它自定义泛型,java的泛型什么的,我想通过这个对象利用反射类型来获取元素的类型信息。因为不知道什么泛型,所以不能通过获取具体的泛型对象内的element对象来获取elemnet type。
      

  7.   


    那没戏,你用不用泛型 JVM 都是当 Object 往 List 里装的,只能 List 里的元素一个一个的 getClass() 来判断。
      

  8.   

    那如果知道的泛型的类型,比如:arraylist<E>, 和元素类型,比如String,怎样去动态的定义Array<String>这样一个对象呢
      

  9.   

    另外,象java的泛型都是可以序列化的,如果它都是按照Object装的,反序列化的时候又是怎么知道具体的类型的呢?
      

  10.   


    引用都是按 Object 装的,跟引用对象的实际类型无关,不影响序列化。
      

  11.   

    不太可能吧,如果都是按照object装,那具体值的长度,值的具体类型怎么确定,反序列化的时候强制转为实际类型怎么转啊?:(
      

  12.   

    引用都是按 Object 装的
      

  13.   

    是这个意思吗? public void showContent(Object obj) {
    if(obj instanceof List) {
    for(Object o : (List<Object>)obj) {
    System.out.println(o);
    }
    }
    }

    public static void main(String[] args) {
    List<Object> list = new ArrayList<Object>();
    list.add(1);
    list.add(2);
    FanSheTest test = new FanSheTest();
    test.showContent(list);
    list = new ArrayList<Object>();
    list.add("hello");
    list.add("world");
    test.showContent(list);
    }
      

  14.   

    大概是这样,不过我仅仅知道是泛型的Object,而不是专门针对List。因此怎样取element就出现问题了
      

  15.   

    这些问题的来源是这样的,收到一个未知的泛型Object对象,把它序列化了(自己写序列化,不采用jdk的serialize序列化方式),然后再反序列化(也是自己写的)成相应的原始对象
      

  16.   

    那我觉得你似乎需要定义一个上下文类.在反序列化的时候传入进去.
    //我这里只是举例.真正需要传入的东西可能不止这些
    class serializeContext {
        public String type ;//序列化或反序列化的类型     public ISerialize serialize;//你定义的序列化工具     public String target;//序列化的目的地.可以是磁盘,数据库,内存等等.
    }