小编aj_*_*blk的帖子

使用Generic Class和Generic Collections类型的声明之间的区别是什么

我将向您展示两种泛型声明.在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)

java generics java-5

4
推荐指数
1
解决办法
231
查看次数

为什么只允许messageSource作为ResourceBundleMessageSource的bean id?

对于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)

java spring

2
推荐指数
1
解决办法
969
查看次数

标签 统计

java ×2

generics ×1

java-5 ×1

spring ×1