zoukankan      html  css  js  c++  java
  • 面试题 —— 面向对象

    1. 举一个内部类的实例(jdk 中)

    • java Collection 容器的 iterator() 成员函数的实现,比如 ArrayList 内部的 iterator 的实现:

      public class ArrayList<E> {
      
          public Iterator<E> iterator() {
              return new Itr();
          }
          // 实现了 Iterator 接口的内部类
          private class Itr implements Iterator<E> {
              public boolean hasNext() {
                  return cursor != size;
              }
              public E next() {
                  ...
              }    
          }
      }
    • Arrays.asList

      public class Arrays {
          public static <T> List<T> asList(T... a) {
              return new ArrayList<>(a);
          }
          // 这里的 ArrayList 是内部类,未重写 AbstractList 的 add 等会修改内部状态的方法,
          // Arrays.asList 返回的内部类实例,仅用来显示和查看,而不能修改;
          private static class ArrayList<E> extends AbstractList<E> {
      
          }    
      }

      AbstractList 的 add 方法为:

          public void add(int index, E element) {
              throw new UnsupportedOperationException();
          }

      因此 Arrays.asList() 返回得到的内部类实例,仅用来显示和查看,而不能修改;

  • 相关阅读:
    工厂方法模式
    代理模式
    观察者模式
    策略模式
    单例模式
    简单工厂模式
    lintcode:等价二叉树
    lintcode:被围绕的区域
    lintcode:二叉树的所有路径
    lintcode:快乐数
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9420935.html
Copyright © 2011-2022 走看看