将对象列表转换为字符串和泛型列表

本文关键字:列表 泛型 字符串 转换 对象 | 更新日期: 2023-09-27 18:34:00

以下方案可以很好地处理字符串/原语。但是在处理列表时,它会在 getObj() 中给出类型转换错误。使用的类型是动态的,需要这种通用用途。有没有更好的方法来实现它?

public static Object obj;
    static public T getObj<T>()
    {
        return (T)obj;
    }
    private static string getStr()
    {
        return "some string";
    }
    private static List<Object> getList()
    {
        List<Object> res = new List<object>();
        Object o = "str1";
        res.Add(o);
        o = "str2";
        res.Add(o);
        return res;
    }
    public static void Main()
    {
        obj = getStr();
        string s = getObj<string>();
        obj = getList();
        List<string> slist = getObj<List<string>>();
    }

将对象列表转换为字符串和泛型列表

您正在尝试将List<Object>投射到List<String>。即使列表的所有内容都是StringList仍然是List<Object>,所以你不能做那样的直接投射。

如果你真的想这样做,你可以改用这个:

List<Object> objList = { ... }; // all strings
List<String> strList = objList.Cast<String>().ToList();

不能执行从List<Object>List<String>的强制转换的一个原因是,所有字符串都是对象,但并非所有对象都是字符串;如果您将List<String>强制转换为List<object>,然后尝试向其添加object(不是string),则行为将是未定义的。

希望对您有所帮助!!

 public List<Object> lisObject() {
        List<Object> listProduct = new ArrayList<Object>();
        try {
            con.setAutoCommit(false);
            callableStatement = con.prepareCall("call listType()");
            rs = callableStatement.executeQuery();
            while(rs.next()){
                pType = new ProductType();
                pType.setPtypeId(rs.getInt(1));
                pType.setPName(rs.getString(2));
                pType.setDesc(rs.getString(3));
                pType.setCatMaster(new CatMaster(rs.getInt(4), rs.getString(5)));
                listProduct.add(pType);
            }
            con.commit();
        } catch (Exception e) {
            System.out.println("Failed to Fetching List of Type Object:"+e);
        }finally{
        }
        return listProduct;
    }

%%%%%%%%%%%%%%%%%
Fetching Data
%%%%%%%%%%%%%%%%
List<Object> listpro  =(List<Object>)dao.lisObject();
int i=0;enter code here
for(Iterator<Object> itr = listpro.iterator();itr.hasNext();){                          
ProductType p = (ProductType)itr.next();

ProductType是爪哇豆