Java Web总结一反射、单例模式

一、Eclipse快捷键

  1、Alt+/:智能提示

  2、Ctrl+Shift+F:格式化代码

  3、Ctrl+/:注释代码

  4、Ctrl+1:提示代码错误

  5、Ctrl+Shift+X:转大写

  6、Ctrl+Shift+Y:转小写

  7、Ctrl+Shift+O:一次导入多个对应的包

  8、Ctrl+Shift+/:多行注释

  9、选中行+Alt+上下方向键:移动行

二、Eclipse的Debug调试

  1、step over:粗粒度调试,一行一行调试。

  2、step into:细粒度调试,可以进入调用的方法内部。

三、Junit调试

  1、在需要调试的方法前面加上@Test。

  2、@Before和@After会在@Test方法执行前后各执行一次。比如在执行数据库时,可以在@Before里执行打开数据库操作,在@After里执行关闭数据库操作。

  3、@BeforeClass和@AfterClass会在调试类执行前后各执行一次。

四、可变参数

  1、参数的个数不确定。

  2、可变参数智能放在参数的最后边。

  3、可变参数最少0个,最多一个。

  4、编译器将可变参数当作一个一维数组来对待。

五、枚举

  1、当取值是某范围中的之一,这时可以使用枚举。

  2、当向用户提示严重错误时,尽可能使用抛出异常的方式通知客户端。

  3、枚举类与普通类一样,可以继承或实现,如果有抽象方法的话,可以利用每个枚举值以匿名内部类的方式实现。

  4、枚举值可以用在switch()语句中。

  5、如果枚举类只有一个枚举值,则可以当做单态设计模式使用。

  6、枚举类常用方法:

    1)name():显示枚举值

    2)ordinal():显示枚举值对应的索引,从0开始。

    3)valueOf():判段某个字符串是否属性枚举值之一

    4)values():取得该枚举类对应的所有枚举值,是一个数组

六、反射

  1、解析一个类的各个部分,形成一个对象。

  2、外存中的类,加载到内存中,会形成该对象的Class类,例如:String类,加载到内存中,就是StringClass对象。

  3、得到某个class文件对应的class对象的三种方法:

    1)类名.class

    2)对象.getClass()

    3)Class.forName("类名")

  4、使用不同的方式,取得同一个类型的字节码对象Class是相同的。

  5、通过getXxxx()只能取得该类public的类型,通过getDeclaredXxxxxx()可以取得该类非public的类型。如果要获得非public类型,还需设置设置非public类型的可访问性,默认为false,不可       访问。constructor.setAccessible(true);

  6、反射可以反射private/public的构造方法,字段,普通方法。

  7、在反射main方法时,编译器会将数组自动拆分,取第一个值。

    解决方案:

    //m.invoke(null,(Object)new String[]{"A","B","C","D"});,将数组当作对象,此时编译器不进行拆分
      m.invoke(null,new Object[]{new String[]{"A1","B1","C1","D1"}});在数组中嵌入另一个数组

小提示:

1、集合有两大类:Collection和Map。Collection包括Set和List。

2、对Map集合的两种迭代:keySet()和entrySet()。通常使用的是entrySet()进行遍历。

枚举参考代码:

package com.gnnuit.enumration2;

public enum Season {
    SPRING {
        public void show() {
            System.out.println("春天");
        }
    },
    SUMMER {
        public void show() {
            System.out.println("夏天");
        }
    },
    AUTUMN {
        public void show() {
            System.out.println("秋天");
        }
    },
    WINTER {
        public void show() {
            System.out.println("冬天");
        }
    };
    // 枚举里有抽象方法
    public abstract void show();

}

 单例模式参考代码:

package com.gnnuit.model;

/**
 * 单例/态/值设计模式(在单线程情况下)
 * 
 * @author 杨伦义
 * 
 */
public class Singleton {
    // 1、构造方法私有化
    private Singleton() {

    }

    // 2、向外部提供一个获取实例的方法
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    // 3、创建一个私有变量存储这个实例
    private static Singleton instance;
}
原文地址:https://www.cnblogs.com/FlySheep/p/3600141.html