总是抛出异常,注释的很清晰大家帮我看看,头都晕了
/**
* Sofar.java,这是个测试类
* @author Sunny
* Intention:本代码主要是演示单例模式的应用及java反射机制的练习
* 主要加载了两个类Sofar.java和Sofar2.java
*
* ideal outcome: toString返回对象自身
* 发现first的信息
* 发现second的信息
* 发现third的信息
* 找到第1个非String类型的变量
*
* Bug: 已标识
*
* 完成日期:2007年8月5号
*/
import java.lang.reflect.*;
public class Sofar {
private static final String Sofar2 = null;
String num;
public Sofar(String num) {
this.num = num;
}
public String toString() {
return num + "返回对象自身";// 返回此对象本身
}
public static void main(String[] args) {
int i = 0;
Sofar t = new Sofar("toString");
System.out.println(t);
try {
Class c = Class.forName("tata.Sofar2");
Field[] fields = c.getDeclaredFields();//取得声明的域成员代表对象
for (Field field : fields) {
String m = field.getName();//显示域成员名称
if ((field.getType().getName()).equals("java.lang.String")//Sofar2声明的域成员类型为String且不为空
&& !m.equals("")) {
System.out.println("发现" + tata.Sofar2.getone(m));//调用Sofar2的getone()方法,传递的为String类型的m
} else {
System.out.println("找到第" + ++i + "个非String类型");
}
}
} catch (ClassNotFoundException e) {
System.out.println("找不到指定的类!");
}
}
}
/***********************************************************************
*************************************************************************
*Sofar2.java
************************************************************************
*/
import java.util.*;
public class Sofar2 {
public static final String first="first的信息";
public static final String Second="second的信息";
public static final String Third="third的信息";
private static Map<String,String> map;
//单例模式的应用
public static Map getonereg(){
if(map==null){
Map<String,String> map = new HashMap<String,String>();
declareone();
}
return map ;
}
private static final void declareone(){
demo(first,"first");
demo(Second,"second");
demo(Third,"third");
}
private final static void demo(String value,String key){//注意这里的顺序
try{
map.put(key,value);//代码的问题出在这里,异常处理是自己加的
}
catch(NullPointerException e){
System.out.println(e);
}
}
public static Object getone(String key){
try{
return getonereg().get(key);//这里也抛出异常
}
catch(NullPointerException e){
System.out.println(e);
return "抛出异常";
}
}
}