单项选择题

1. import java.util.*; 
2. class SubGen { 
3. public static void main(String [] args) { 
4. //insert code here 
5. } 
6. } 
class Alpha { } 
class Beta extends Alpha { } 
class Gamma extends Beta { } 
和四段代码片段: 
s1. ArrayList〈? extends Alpha〉 list1 = new ArrayList〈Gamma〉(); 
s2. ArrayList〈Alpha〉 list2 = new ArrayList〈? extends Alpha〉(); 
s3. ArrayList〈? extends Alpha〉 list3 = new ArrayList〈? extends Beta〉(); 
s4. ArrayList〈? extends Beta〉 list4 = new ArrayList〈Gamma〉(); ArrayList〈? extends Alpha〉 list5 = list4; 
哪些片段分别插入到第4行,可允许代码编译?()  

A.只有s1
B.只有s3
C.只有s1和s3
D.只有s1和s4