2015-09-07 11:44:36 -06:00
|
|
|
|
// containers/AsListInference.java
|
2015-11-14 16:18:05 -08:00
|
|
|
|
// <20>2016 MindView LLC: see Copyright.txt
|
2015-06-15 17:47:35 -07:00
|
|
|
|
// Arrays.asList() makes its best guess about type.
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
class Snow {}
|
|
|
|
|
class Powder extends Snow {}
|
|
|
|
|
class Light extends Powder {}
|
|
|
|
|
class Heavy extends Powder {}
|
|
|
|
|
class Crusty extends Snow {}
|
|
|
|
|
class Slush extends Snow {}
|
|
|
|
|
|
|
|
|
|
public class AsListInference {
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
List<Snow> snow1 = Arrays.asList(
|
|
|
|
|
new Crusty(), new Slush(), new Powder());
|
|
|
|
|
|
|
|
|
|
// Won't compile:
|
|
|
|
|
// List<Snow> snow2 = Arrays.asList(
|
|
|
|
|
// new Light(), new Heavy());
|
|
|
|
|
// Compiler says:
|
|
|
|
|
// found : java.util.List<Powder>
|
|
|
|
|
// required: java.util.List<Snow>
|
|
|
|
|
|
|
|
|
|
// Collections.addAll() doesn't get confused:
|
|
|
|
|
List<Snow> snow3 = new ArrayList<>();
|
|
|
|
|
Collections.addAll(snow3, new Light(), new Heavy());
|
|
|
|
|
|
|
|
|
|
// Give a hint using an
|
|
|
|
|
// explicit type argument specification:
|
|
|
|
|
List<Snow> snow4 = Arrays.<Snow>asList(
|
|
|
|
|
new Light(), new Heavy());
|
|
|
|
|
}
|
2015-09-07 11:44:36 -06:00
|
|
|
|
}
|
|
|
|
|
/* Output: (None) */
|