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);
}
}
转载于:https://blog.51cto.com/westsky/1571326