A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ko889910 中级黑马   /  2015-3-6 13:53  /  1155 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

普通的Person类
  1. public class Person {
  2.         private int id;
  3.         private String name;
  4.         private int age;
  5.         public int getId() {
  6.                 return id;
  7.         }
  8.         public void setId(int id) {
  9.                 this.id = id;
  10.         }
  11.         public String getName() {
  12.                 return name;
  13.         }
  14.         public void setName(String name) {
  15.                 this.name = name;
  16.         }
  17.         public int getAge() {
  18.                 return age;
  19.         }
  20.         public void setAge(int age) {
  21.                 this.age = age;
  22.         }
  23.         @Override
  24.         public String toString() {
  25.                 return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
  26.         }
  27.         public Person(int id, String name, int age) {
  28.                 super();
  29.                 this.id = id;
  30.                 this.name = name;
  31.                 this.age = age;
  32.         }
  33.         public Person() {
  34.                 super();
  35.         }
  36.        
  37. }
复制代码
用于实现添加删除更新功能的接口
  1. public interface Service {

  2.         void addNew(Person person);

  3.         void delete(Integer id);

  4.         void update(Person person);

  5. }
复制代码

实现接口的业务类
  1. public class ServiceImp implements Service {
  2.         private Map<Integer, Person> map= new HashMap<Integer,Person>();
  3.         public ServiceImp(){//空异常
  4.                 map.put(1001, new Person(1002,"tom1", 15));
  5.                 map.put(1002, new Person(1002,"tom1", 15));
  6.                 map.put(1003, new Person(1002,"tom1", 15));
  7.                
  8.         }
  9.         public Map<Integer, Person> getMap() {
  10.                 return map;
  11.         }

  12.         public void setMap(Map<Integer, Person> map) {
  13.                 this.map = map;
  14.         }

  15.         @Override
  16.         public void addNew(Person person) {
  17.                 // TODO Auto-generated method stub
  18.                 map.put(person.getId(), person);
  19.         }

  20.         @Override
  21.         public void delete(Integer id) {
  22.                 // TODO Auto-generated method stub
  23.                 map.remove(id);
  24.         }

  25.         @Override
  26.         public void update(Person person) {
  27.                 // TODO Auto-generated method stub
  28.                 map.put(person.getId(), person);
  29.         }

  30. }
复制代码
测试类
  1. public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                 Service target=new ServiceImp();//直接报空异常
  4.        
  5.                

  6.         }

  7. }
复制代码
在测试类中一new对象就在业务类中报空异常
Exception in thread "main" java.lang.NullPointerException
    at com.sun.proxy.ServiceImp.<init>(ServiceImp.java:10)
    at com.sun.proxy.TestProxy.main(TestProxy.java:11)
求助高手 实在不知道怎么回事



5 个回复

倒序浏览
private Map<Integer, Person> map= new HashMap<Integer,Person>();
这个要放在构造函数里吧
回复 使用道具 举报
构造函数()
{
      Map<> map = new HashMap<>();
      map.put();
      ........
}
回复 使用道具 举报
说句实话,我没看懂你这个程序的要求,不知道你要干嘛。
随便写了一个,看看是不是你想要的。
我没用过eclipse。但是一个.java文件只能有一个公共类对吧。
错误一大堆。
  1. package pack;
  2. import java.util.Map;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Iterator;
  6. import java.util.Set;
  7. class Person {
  8.         private String id;
  9.                 private String name;
  10.                 private int age;
  11.                 Person(String id,String name,int age){
  12.                         this.id=id;
  13.                         this.name=name;
  14.                         this.age=age;
  15.                 }
  16.                 public String getID(){
  17.                         return id;
  18.                 }
  19.                 public String getName(){
  20.                         return name;
  21.                 }
  22.                 public int getAge(){
  23.                         return age;
  24.                 }
  25.                 public String toString(){
  26.                         return "Person:["+id+":"+name+"--"+age+"]";
  27.                 }
  28.         
  29. }
  30. class PersonDemo{
  31.         public static void main(String[] args){
  32.                 HashMap<Integer,Person>map=new HashMap<Integer,Person>();
  33.                 map.put(1,new Person("01","tom1", 15));
  34.         map.put(2,new Person("02","tom1", 15));
  35.         map.put(3,new Person("03","tom1", 15));
  36.                 Set<Map.Entry<Integer,Person>>entry=map.entrySet();
  37.                 Iterator<Map.Entry<Integer,Person>>it=entry.iterator();
  38.                 while(it.hasNext()){
  39.                         Map.Entry<Integer,Person>me=it.next();
  40.                         Integer key=me.getKey();
  41.                         Person value=me.getValue();
  42.                         System.out.println(key+"--"+value);
  43.                 }
  44.         }
  45. }
复制代码
回复 使用道具 举报
艺多不压身丶 发表于 2015-3-6 15:13
说句实话,我没看懂你这个程序的要求,不知道你要干嘛。
随便写了一个,看看是不是你想要的。
我没用过ecli ...

想模拟动态代理 另外我是三个.java文件不是写在一个里的
回复 使用道具 举报
kuweida 发表于 2015-3-6 14:54
构造函数()
{
      Map map = new HashMap();

一样也是报错试过了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马