1)泛型:

Class<?>  ?表示一个未知的类 不加上<?>也可以  但会有警告,是大写表示类

运行时会擦除

2)JAVA类和接口的命名方式。

通常JAVA的包外部的是接口,而包的内部实现策略为子包为实现类。

企业开发通常采用IXXX为接口,实现为XXXImpl。

此处JAVA各个开源项目的也比较混乱,最后成项目习惯了。

package com.chat01;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Scanner;
import java.util.logging.Level;

import com.sun.istack.internal.logging.Logger;

public class Demo1 {

	private static final Logger logger = Logger.getLogger(Demo1.class);

	/*
	 * 打开资源文件
	 */
	private static void openRes() throws FileNotFoundException{
		
		Scanner in = new Scanner(Demo1.class.getClass().getResourceAsStream("/me.txt"));
		while (in.hasNext())
			System.out.println(in.next());
		
	}
	
	public static void main(String[] args) {
		
		try {
			logger.setLevel(Level.OFF);//日志可以设置等级,相对sysout好很多。
			Demo1.openRes();
			logger.log(Level.INFO,"执行了日志系统");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

断言是不知道程序外部实现的保护语句,通常做简单的保护即可。主要用于模块中,并非全部。

常用语保护空指针,无效数据的保护。

package com.chat01;

public class Demo2 {

	/*
	 * 此代码类似于:C#,这里添加了泛型约束(限定)
	 * public static T Init<T>(params T a) where T:Object
	 */
	public static <T extends Object> T init(T... a) {
		return a[a.length /2];
	}
	
	public static void main(String[] args) {
		
		System.out.println("start...");
		
		String a =Demo2.<String>init("a","b","c","d");
		System.out.println(a);
		//泛型的类型可以省略
		int b =Demo2.init(0,1,3,555);
		System.out.println(b);
	}
}