现在的位置: 首页 > 综合 > 正文

instance of 泛型

2014年12月03日 ⁄ 综合 ⁄ 共 1333字 ⁄ 字号 评论关闭

java的instanceof自己的一点总结
www.diybl.com    时间 : 2009-08-22  作者:匿名   编辑:小张 点击:  1060 [ 评论 ]
-
-
A  instanceof B;

A必需是具体实例,B是一种类(或接口)。

B不能是确定泛型参数的泛型。

如果A在编译时能过确定具体类型,那么a必须是可以通过(B)a转换成B类型的,不然编译器会报错。

如果A不能转换为B,则可以(Object)a instanceof B。

如果A实在运行时得到的,那么没有如此限定。

具体例子时在论坛上得到的:

package instan;

import java.util.List;

public class Test {

    public static void main(String[] args) {
        //编译时无法确定getObject()返回的引用类型的具体类型,下面两句都能通过编译
        System.out.println(getObject() instanceof Object);
        System.out.println(getObject() instanceof String);
        System.out.println(getObject() instanceof Test);

        //编译时可以确定类型的,能够cast则编译通过,否则编译失败
        Test test = new Test();
        System.out.println(test instanceof Test);//ok
        System.out.println(test instanceof Object); //ok
        // System.out.println(test instanceof String);//error,可以通过下面方法
        System.out.println((Object)test instanceof String);
       

        //跟泛型相关的注意一下
        //List是泛型类型,如果不指定泛型参数,成功编译
        System.out.println(test instanceof List);
        //如果不限定类型界限,通过编译
        System.out.println(test instanceof List<?>);

        //指定泛型参数,编译时可确定类型,如果不能cast,编译不通过
//       System.out.println(getObject() instanceof List<Test>); //error
//       System.out.println(test instanceof List<Test>);//error
    }

    public static Object getObject() {
        return new Test();
    }
}

文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/3_program/java/javajs/20090822/169641.html

抱歉!评论已关闭.