小编MKo*_*Kod的帖子

为什么带有泛型声明的HashMap"<?super ArrayList>不接受值"put方法中的新对象()"?

在处理面试问题时,我遇到了以下代码:

List<Object> list = new ArrayList();
Map<Object, ? super ArrayList> m = new HashMap<Object,  ArrayList>();
m.put(1, new Object());
m.put(2, list);
Run Code Online (Sandbox Code Playgroud)

上面两个put方法都是抛出编译时错误.但是,当我添加m.put(3, new ArrayList());它时添加到map没有编译时错误.

我很清楚我可以添加new Object()一个值,HashMap因为map声明属于类型< ? super ArrayList>; 这意味着我可以补充一点,高于任何值ArrayList(即超级ArrayList)和ArrayList下面反对过,但没有什么ArrayList.

这个特殊的概念在Kathy Sierra和Bert Bates的SCJP 6中写得非常好,基于该理论和实例,我认为它应该按照我的理解工作.有人可以帮我理解错误吗?

java generics wildcard hashmap superclass

11
推荐指数
2
解决办法
2712
查看次数

为什么抽象类"DocumentBuilderFactory"允许实例化新实例

最近,我一直在使用XML解析器.这只是我的开始,我设法了解如何在java中使用DOM解析器类,DocumentBuilderFactoryDocumentBuilder解析XML文档.

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
DocumentBuilder db = dbf.newDocumentBuilder();            
Run Code Online (Sandbox Code Playgroud)

我问自己是怎么一个抽象类,如DocumentBuilderFactoryDocumentBuilder,被允许实例化新实例?然后在另一个例子中我看到:

Calendar calendar = Calendar.getInstance();  
System.out.println(calendar.get(Calendar.DATE)); 
Run Code Online (Sandbox Code Playgroud)
  1. 据我所知,你不能为抽象和接口类实例化(换句话说,创建一个对象).我对么?
  2. do getInstance()newInstancce()方法是否创建了上述抽象类的实例?

我是否遗漏了使用抽象类及其新对象的内容?

java oop abstract-class instantiation

5
推荐指数
1
解决办法
2616
查看次数

java中的垃圾收集示例?

class Beta { }

class Alpha {
static Beta b1  ;
Beta b2;
}

public class Tester {

public static void main(String[] args) {

    Beta b1 = new Beta();
    Beta b2 = new Beta();
    Alpha a1 = new Alpha();
    Alpha a2 = new Alpha();

    a1.b1 = b1 ;
    a1.b2 = b1 ;
    a2.b2 = b2 ;

    a1 = null ;
    b1 = null;
    b2 = null;

    System.out.println(" Line 1    " + " a1   "  + a1.b1);
    System.out.println(" Line 2    " …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection

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

了解java中的instanceof以及if条件?

我不确定树(引用变量)如何在我的示例程序53,00中成为对象Tree的实例?我期待"Pine"和"oops"作为输出,但为什么"Tree"包含在输出中?我还没有给Tree tree = new Tree().

    class Tree{}  
class Pine extends Tree{}  
class Oak extends Tree{}  
public class forrest {    

    public static void main( String[] args )      
    {    
        Tree tree = new Pine();   


        if( tree instanceof Pine )      
            System.out.println( "Pine" );   
        if( tree instanceof Tree )       
            System.out.println( "Tree" );  
        if( tree instanceof Oak )      
            System.out.println( "Oak" );   
        else System.out.println( "Oops" );  
    }  
}
Run Code Online (Sandbox Code Playgroud)

java instanceof

3
推荐指数
1
解决办法
2408
查看次数

在Java中测试给定数字是否为十六进制?

有人可以帮忙吗?

一个测试给定数字是否为十六进制的程序?该号码必须从用户输入.如果它不是十六进制,则必须抛出异常.例外必须是用户定义的.

java hex exception

-1
推荐指数
1
解决办法
4506
查看次数