持有对象

java类型的变化
package holding;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

class Snow{}
class Power extends Snow{}
class Light extends Power{}
class Heavy extends Power{}
class Crusty extends Snow{}
class Slush extends Snow{}

/**
 * 主要是Arrays.asList的用法值得注意,以及:在用它时,继承只管上一级,除非像snow4 一样,显式地告诉编译器,Snow类型是我的目标类型
 * @author fireliuwei
 *
 */
public class AsListInterface {
	public static void main(String[] args) {
	   Snow snow = new Heavy(); 
      List<Snow> snow1 = Arrays.asList(new Crusty(),new Slush(),new Power());
      //下面这句话不能编译,原因如上
      //List<Snow> snow2 = Arrays.asList(new Light(),new Heavy());
      //snow3,snow4能编译,原因如上,
      List<Snow> snow3 = new ArrayList<Snow>();
      //Collections.addAll,参数snow3告诉了编译器,目标类型是snow
      Collections.addAll(snow3, new Light(),new Heavy());
      List<Snow> snow4 = Arrays.<Snow>asList(new Light(), new Heavy());
	}

}


下面是注意Arrays的用法
package holding;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class AddingGroups {
	public static void main(String[] args) {
		Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
		Integer[] moreInts = { 6, 7, 8, 9, 10 };
		collection.addAll(Arrays.asList(moreInts));

		Collections.addAll(collection, 11, 12, 13, 14, 15);
		Collections.addAll(collection, moreInts);

		@SuppressWarnings("unused")
		List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);
		list.set(1, 99);
		//list.add(21);运行出错,因为Arrays.asList()底层是固定大小数组,不可扩充的
	}

}

你可能感兴趣的:(对象)