解决方案 »

  1.   

    下面这样吗?如果你在编译时就知道应该转为什么类型
    public static void main(String[] args) {
    List<Object> ori = new ArrayList<>();
    ori.add(20);
    ori.add(2);
    ori.add(10);

    List<Integer> list = new ArrayList<>();
    convert(ori, list);

    for (Integer i : list) {
    System.out.println(i);
    }
    }

    @SuppressWarnings("unchecked")
    public static <T> void convert(List<Object> ori, List<T> list) {
    for (Object o : ori) {
    list.add((T)o);
    }
    }
      

  2.   

    java运行期没有泛型,如果你坚信传入List的每个元素都是你所想变的类型,做个转型就好
    public static void main(String[] args) {

    List<Object> list = new ArrayList<Object>();
    list.add(1224);
    list.add(124);

    List<Integer>  list2 = change(list,Integer.class);
    for(Integer i:list2){
    System.out.println(i);
    }

    }


    /**
     * 
     * @param a   任意List
     * @param clazz  目标泛型的class
     * @return
     */
    @SuppressWarnings("unchecked")
    public static<T> List<T> change(List<?> a,Class<T> clazz){
    return (List<T>)a;
    }
      

  3.   

    用关键字instanceof,判断出其类型,然后再强制转换。下面是我的示例代码: public static void main(String[] args) {
    //构造list,里面存了各种类型的数据
    List<Object> list=new ArrayList();
    list.add("abc");
    list.add('d');
    list.add(90);
    list.add(new Person("张三",30));
    //创建输出
    StringBuffer buffer=new StringBuffer();
    for(int index=0;index<list.size();index++){
    Object obj=list.get(index);
    buffer.append(index).append("\t");
    if(obj instanceof String){
    buffer.append("type=String").append("\t");
    String str=(String) obj;
    buffer.append("value=").append(str);
    }else if(obj instanceof Character){
    buffer.append("type=char").append("\t");
    char ch=(Character) obj;
    buffer.append("value=").append(ch);
    }else if(obj instanceof Integer){
    buffer.append("type=int").append("\t");
    int i=(Integer) obj;
    buffer.append("value=").append(i);
    }else if(obj instanceof Person){
    buffer.append("type=class,className=Person").append("\t");
    Person person=(Person) obj;
    buffer.append("value=").append(person);
    }
    buffer.append("\n");
    }
    System.out.println(buffer.toString());
    }
    static class Person{
    String name;
    int age;
    Person(String name,int age){
    this.name=name;
    this.age=age;
    }
    @Override
    public String toString() {
    return "Person [age=" + age + ", name=" + name + "]";
    }

    }
      

  4.   

    用关键字instanceof,判断出其类型,然后再强制转换。下面是我的示例代码:
    public static void main(String[] args) {
    //构造list,里面存了各种类型的数据
    List<Object> list=new ArrayList();
    list.add("abc");
    list.add('d');
    list.add(90);
    list.add(new Person("张三",30));
    //创建输出
    StringBuffer buffer=new StringBuffer();
    for(int index=0;index<list.size();index++){
    Object obj=list.get(index);
    buffer.append(index).append("\t");
    if(obj instanceof String){
    buffer.append("type=String").append("\t");
    String str=(String) obj;
    buffer.append("value=").append(str);
    }else if(obj instanceof Character){
    buffer.append("type=char").append("\t");
    char ch=(Character) obj;
    buffer.append("value=").append(ch);
    }else if(obj instanceof Integer){
    buffer.append("type=int").append("\t");
    int i=(Integer) obj;
    buffer.append("value=").append(i);
    }else if(obj instanceof Person){
    buffer.append("type=class,className=Person").append("\t");
    Person person=(Person) obj;
    buffer.append("value=").append(person);
    }
    buffer.append("\n");
    }
    System.out.println(buffer.toString());
    }
    static class Person{
    String name;
    int age;
    Person(String name,int age){
    this.name=name;
    this.age=age;
    }
    @Override
    public String toString() {
    return "Person [age=" + age + ", name=" + name + "]";
    }

    }
      

  5.   

    你需要的是做成一个方法,那就传入一个源list,一个目的list,遍历源list将里面的对象转成需要的对象类型,然后存在目的list中间就可以了。然后返回目的list
      

  6.   

    import java.util.ArrayList;
    import java.util.List;
    public class Cast {
    public static void main(String[] args){
    /*如何将一个List<object> 强制转换为一个List<指定类型>        
     * 指定类型根据场景不同会发生变化,也就是说指定类型是不确定的。*/
    List<Object> list=new ArrayList<Object>();
    List<Number> list1=new ArrayList<Number>();
    /**把对象list的全部元素由Object转换成指定类型T*/
    castlist(list,list1);
                   System.out.println(list1);
    } private static <T extends Object> void castlist(List<Object> list,List<T> list1) {
    for(int i=0;i<list.size();i++){
    list1.add((T)(list.get(i)));
    }

    }
    }
      

  7.   

    这段代码已满足要求,指定类型不确定所以必须新建一个目的集合来满足。
    private static <T extends Object> void castlist(List<Object> list,List<T> list1) 
    函数头中, <T extends Object> 是要求参数列表中对象继承Object.
      

  8.   


    java中有convert吗?
    convert函数是我自己写的