Anonymous Inner Classes Inside Methods

前端 未结 2 1947
既然无缘
既然无缘 2020-12-09 23:32

Please have a look at following code :

import java.util.ArrayList;
import java.util.List;

class Main{
     public static  List modifiedLis         


        
2条回答
  •  一向
    一向 (楼主)
    2020-12-10 00:12

    Essentially the code is rewritten by the complier as (note I didn't try to compile it..., might have errors):

    class Main$1
        extends ArrayList
    {
        private final List list;
    
        Main$1(final List a)
        {
            list = a;
        }
    
        @Override
        public boolean add(T element)
        {
            super.add(element);
            return list.add(element);
        }
    }
    

    and

    class Main{
         public static  List modifiedList(final List list)
         {
             return new Main$1(list);
         }
    
         public static void main(String[] args) 
         {
             List originalList=new ArrayList();
             List duplicateList=modifiedList(originalList);
             originalList.add("1");
             originalList.add("2");
             originalList.add("3");
             System.out.println(originalList+" "+duplicateList);
             duplicateList.add("4");
             duplicateList.add("5");
             duplicateList.add("6");
             System.out.println(originalList+" "+duplicateList);
         }
    

提交回复
热议问题