Java
文章平均质量分 81
remarkable_29
这个作者很懒,什么都没留下…
展开
-
动态代理相较于静态代理的优势
静态代理在静态代理中,我们需要创建一个代理类,这个代理类实现被代理类同样的接口,并且代理类中存在一个被代理类接口类型的成员变量。下面用一个例子来说明:代码:public interface Animal { public void eat();}public class Cat implements Animal{ public void eat() { System.out.println("a cat is eating..."); }}pu原创 2021-10-09 20:38:05 · 371 阅读 · 0 评论 -
Collections中的synchronizedMap(Map<K,V> m)方法
Java中Map有两种:Hashtable、HashMapHashtable线程安全,HashMap线程不安全synchronizedMap(Map<K,V> m)方法返回指定集合对象对应的同步对象。如果参数是HashMap对象,有没有可能返回一个线程安全的Hashtable对象?从方法的返回值来看,该推测没有逻辑上的错误。我们首先通过代码进行测试:public class test { /** * hashtable的key、value不能是null,否.原创 2020-12-26 12:08:32 · 347 阅读 · 0 评论 -
为什么Hashtable不允许使用null值作为key或value,而HashMap可以?
我们查看两个类的put方法的源码。Hashtable:public synchronized V put(K key, V value) { // Make sure the value is not null if (value == null) { throw new NullPointerException(); } // Makes sure the key is not already in the ha原创 2020-12-26 11:41:56 · 3414 阅读 · 3 评论 -
Java变量默认值的误区
误区:Java的所有变量都可以不用初始化直接使用。因为一直记得Java中的默认值的概念,直到今天在测试字符串的时候,如下代码编译不通过:错误原因是必须先初始化:Java中只有成员变量可以不用初始化,Java虚拟机自动分配默认值。局部变量必须初始化,否则编译不通过。...原创 2020-12-25 14:54:53 · 120 阅读 · 0 评论 -
为什么重写方法不能抛出比被重写方法范围更大的异常
一、理解在思考这个问题前,首先要考虑重写方法的意义。重写方法是Java中多态的体现。首先阅读如下代码:public class Father { void say(){ System.out.println("I'm father"); }}public class Son extends Father{ @Override void say() { System.out.println("I'm son"); }}publ原创 2020-12-24 21:03:07 · 1464 阅读 · 3 评论