struts中调用接口时候的Cannot make a static reference to the non-static method问题

用struts想实现一个注册的功能,注册成功就跳转到success的页面,失败就跳回到注册页面写了一段DAO:public interface AddStudentDAO {public boolean addStudent(AddStudentForm studentForm);}实现DAO的方法:public class Student implements AddStudentDAO {@Overridepublic boolean addStudent(AddStudentForm studentForm) {return false;}}action的代码:public class AddStudentAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//转型AddStudentForm addStudentForm=(AddStudentForm)form;//调用接口AddStudentDAO student=new AddStudentDAO(); boolean successful=false;successful=AddStudentDAO.addStudent(addStudentForm); //关键字String returnURLKeyWord = "addFailure";if(successful == true){returnURLKeyWord = "addSuccess";}return mapping.findForward(returnURLKeyWord);}}调用接口部分报错,我是按教学视频中来的,视频中DAO这个接口实例化了。。。如果我把//调用接口AddStudentDAO student=new AddStudentDAO();boolean successful=false;successful=AddStudentDAO.addStudent(addStudentForm);改成 Student student=new Student();boolean successful=false;successful=AddStudentDAO.addStudent(addStudentForm);最后的那行successful=AddStudentDAO.addStudent(addStudentForm)还是报错,Cannot make a static reference to the non-static method如果在Student类中把addStudent方法变成static的,那又会提示Illegal modifier for the interface method addStudent; only public & abstract are permitted大家指点指点
2026年09月25日 15:33
有3个网友回答
网友(1):

楼上回答的不知所以!
AddStudentDAO是接口,不能被实例化,变量引用也不对!下面是我给你改的。
劝楼主一句话,忠言逆耳:还是先学好j2se基础再学框架吧。

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

//转型
AddStudentForm addStudentForm=(AddStudentForm)form;

//调用接口
AddStudentDAO student=new Student();
boolean successful=false;
successful=student.addStudent(addStudentForm);
//关键字
String returnURLKeyWord = "addFailure";
if(successful == true){
returnURLKeyWord = "addSuccess";
}

return mapping.findForward(returnURLKeyWord);
}

网友(2):

这种应该是java基础
AddStudentDAO.addStudent(addStudentForm)
类名.方法名 这种要求方法是该类的静态方法
studentDao..addStudent(addStudentForm)
实例.方法名 方法可以静态可以是普通的

网友(3):

AddStudentDAO你的这个接口里面没有定义那个类,你定义一下即可调用。实现类里面的必须在接口里面也存在,否则不能调用。