美文网首页
Java之转型

Java之转型

作者: 吴世浩 | 来源:发表于2017-03-16 22:00 被阅读22次

    一、浩言

    无论怎样,该失去的,还是在失去。

    二、背景

    最近挺烦的,因为拿到一家公司的offer,但是公司需要银行流水,我报工资的时候报高了,哎,好郁闷,不知道怎么破,所以了,昨天到今天上午都很烦躁的,所以上面的语句就是不管怎样,该失去的还是会失去,只能顺其自然了,我个人觉得我现在拿到的是看能力,跟之前的工资没关。怎么感觉就是我自己的观点了。。。

    三、内容

    3.1 数组复制

    最近补数据结构的知识,看ArrayList的东西,如下面代码

    public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
            T[] copy = ((Object)newType == (Object)Object[].class)
                ? (T[]) new Object[newLength]
                : (T[]) Array.newInstance(newType.getComponentType(), newLength);
            System.arraycopy(original, 0, copy, 0,
                             Math.min(original.length, newLength));
            return copy;
        }
    

    这里面的代码刚刚看的时候涉及到转型问题,如果是Object类型,就是用Object对象,否则使用反射获取对象数组。
    关于转型的我也好久没看了,这次就记载下来

    3.2 数据转型

    所以说说转型,直接上代码看看

    package com.mouse.moon.obj;
    public class Person {
        public void say(String something){
            System.out.println(something);
        }
    }
    
    package com.mouse.moon.obj;
    public class Man extends Person {
        public void say(String something){
            System.out.println("man------>"+something);
        }
    }
    
    package com.mouse.moon.obj;
    public class Main {
        public static void main(String args[]){
            Person person = new Man();
            person.say("person");
            //这里强转出错
    //      Man man1 = (Man)new Person();
    //      man1.say("man");
            Man man2 = (Man)person;
            man2.say("man2");
            Object obj = "123";
            String  Str =(String)obj;
            Object obj1 = 123;
            String  Str1 =(String)obj1;//报错
        }
    }
    
    

    上面的代码在Man man1 = (Man)new Person();这里会出错,因为类型不对,需要看指向的引用类型。
    所以对比下面的字符串的转换,下面这个123的数字转换为String就会报错。

    3.3 数据泛型

    上面的T,U都是泛型的指定,有几个泛型就指定几个泛型

    public <T,U> Map<T,U> getData(){
            return null;
    }
    
    public <T,K,V> Map<K,V> getSomething(Class<T> clz){
            return null;
    }
    

    所以了,这都是泛型,个人别没有什么很大区别

    相关文章

      网友评论

          本文标题:Java之转型

          本文链接:https://www.haomeiwen.com/subject/mafsnttx.html