Java之转型

2017-03-16  本文已影响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;
}

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

上一篇下一篇

猜你喜欢

热点阅读