Java编程思想之范型(1)

Java范型是在Java5.0(1.5)版本中提出的,虽然Oracle已经发布了Java 1.9,Java 12的feature也已经在讨论中,但对于很多程序员来讲,对范型的理解和运用并不好,接下来的系列文章带大家一起深入理解Java范型。该系列问题第一篇先请感兴趣的同学看一些范型相关的问题,答案随后给出。

  1. 定义两个List:
List<Number> numbers = newArrayList<Number>();
List<Integer> integers = new ArrayList<>();

有个方法:

public static void printItem(List<Number>list) {
      for (Numbernumber : list) {
           System.out.println(number+ "");
      }
}

问:printItem(numbers)和printItem(integers)是否有问题?

  1. 声明一个List<Object> objectList =new ArrayList<>();以下选项哪些是正确的?
1) list.add(2L);

2) list.add(1);

3) list.add(1.0);

4) list.add(null);

5) list.add(new Object());
  1. 声明一个list,List<?>list = new ArrayList<>();以下语句哪些是对的?
1) list.add("a");

2) list.add(1);

3) list.add(new Object())

4) list.add(null);
  1. 针对上一问题,如果把list改为List<Object>list = new ArrayList<>();4个选项哪些是正确的?

  2. 声明一个List<? extends Number>extendsNumberList = new ArrayList<>();以下选项哪些是正确的?

1) list.add(2L);

2) list.add(1);

3) list.add(null);
  1. 声明一个List<? super Number> superNumberList= new ArrayList<>();以下选项哪些是正确的?
1) list.add(2L);

2) list.add(1);

3) list.add(1.0);

4) list.add(null);

5) list.add(newObject());
  1. 通过上述两题,请说出在范型中extends和super关键字的用法,可以通过一个具体的类来说明,例如List<?extendsNumber> vs List<? super Number>

  2. 声明一个List<Integer> intList = newArrayList,以下代码片段编译、执行都正常吗:

if(intList instanceof List){
    System.out.println("List<Integer> is list");
}
  1. 声明一个List<Integer> intList = newArrayList,代码片段编译、执行都正常吗:
if(intListinstanceof List<Integer>){
    System.out.println("List<Integer> is list");
}
  1. Java引入范型(Generics)的目的有哪些?

  2. 以下代码片段编译、运行是否有问题?

public class GenericTest{
    interface Int{
        void m1();
    }
    static class Clz{
        void m2(){
            System.out.println("in Clz m2");
        };
    }
    static class Gclz<T extends Clz & Int >{
        void printClz(T t){
            System.out.println("T:" + t.getClass().getName());
            System.out.println("T:" + t.getClass().getSimpleName());
            t.m1();
            t.m2();
        }
    }
    static class AnyClz extends Clz implements Int{
        @Override
        public void m1() {
            System.out.println("in AnyClz m1");
        }
    }
    public static void main(String ... args){
        AnyClz anyClz = new AnyClz();
        Gclz<AnyClz> gclz = new Gclz<>();
        gclz.printClz(anyClz);
    }
}
  1. 如下两个方法签名能否定义在同一个类中,为什么?
public static void printList(List<?> list){...}
public static void printList(List<Object> list){...}
  1. 定义一个List<Integer>list = Arrays.asList(5,6),调用上题中定义的两个方法打印list元素,是否有问题?

加入公众号获取上述问题答案:

公众号二维码1.jpg

加入“Java编程思想读书会”微信群,和大量技术专家们讨论技术:

Java编程思想读书会群二维码.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,296评论 18 399
  • 又是一年中秋将至 如水的月光下 你会想起谁 是童年的老屋? 是薄雾中神秘的屋后小山? 还是一起上学的伙伴? 叫我峰...
    郑雪峰阅读 399评论 0 5
  • 十年的光景,真的好长,长到甚至几乎忘记想念,忘记在一起的感觉;又真的好短,短到不知道一切不知从何说起,更不知该向你...
    日月凌空阅读 139评论 0 0
  • 二美命题:在你生命中有没有哪一件事情曾经让你全力以赴? 我的脑海里一下子冒出去年女儿签证的那件事情。 女儿5月15...
    cola的春天阅读 547评论 0 1
  • 牧雪※晒雪※种雪 1.※牧雪※ 入夜,是谁催促着雪花,赶快动身。 雪花们个个精神百倍,像圈久了的羊群,心中没有一天...
    阿十木阅读 767评论 71 106