我将向您展示两种泛型声明.在part1中,我在List上使用泛型上边界声明如下:
List<? extends Animal> totList = new ArrayList<Animal>();
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试将Animal对象添加到列表中,则会抛出如下所示的错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method add(capture#1-of ? extends Animal) in the type List<capture#1-of ? extends Animal> is not applicable for the arguments (Animal)
at GenericsType.main(GenericsType.java:39)
Run Code Online (Sandbox Code Playgroud)
但在第2部分,如果我声明如下格式的通用类中的名单,没有错误,同时增加(Animal对象)或(Animal对象的子类)到列表中抛出.
class GenericAnimal<T extends Animal>
{
List<T> genList = new ArrayList<T>();
}
Run Code Online (Sandbox Code Playgroud)
为什么在part2中,它没有抛出错误,两种声明风格之间有什么区别.
示例代码:
1.Animal.java
public class Animal {
private String name;
private int height;
public void animalJump()
{
if(height>100)
{
System.out.println(name+" with height-"+height+" can JUMP");
}
else
System.out.println(name+" with height-"+height+" …Run Code Online (Sandbox Code Playgroud) 对于Beans,通常我们可以自定义id属性,但对于ResourceBundleMessageSource类,如果我们不指定id ="messageSource",则抛出异常.
<bean id="myMessageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="message" />
</bean>
Run Code Online (Sandbox Code Playgroud)
它抛出异常
Exception in thread "main" org.springframework.context.NoSuchMessageException:
Run Code Online (Sandbox Code Playgroud)
代码
new ClassPathXmlApplicationContext("springconfig.xml").getMessage("code");
Run Code Online (Sandbox Code Playgroud)