@Override - 可以覆盖除一个接口之外的所有接口方法

时间:2014-01-25 23:02:19

标签: java override

我实现了一个接口。我在所有方法上使用@Override,没有问题。除了一种方法。

我只为这个方法得到了错误,它没有真正覆盖超类型, 当我取出注释时,它会编译,但当然,导入界面的应用程序(由界面实现初始化 - maven + swing)有问题识别此方法(但不是所有其余的)。可能是什么原因?可能是因为返回类型很复杂? 好吧,我添加了更多信息: 接口:

package de.htw_berlin.f4.ai.kbe.kurznachrichten;

import java.util.Date;
import java.util.List;
import java.util.Set;

public interface ShortMessageService {

    Long createMessage(String userName, String message, String topic);

    Long respondToMessage(String userName, String message, Long predecessor);

    void deleteMessage(String userName, Long messageId) throws AuthorizationException;

    void createTopic(String userName, String topic);

    Set<String> getTopics();

    List<List<Message>> getMessageByTopic(String topic, Date since);

    void createUser(String userName, String city);

    void deleteUser(String userName);

    Set<User> getUsers(); 

}

我确实有两个不同的类,即实现Message的MeinMessage。 infterface是包中的Message。 MeinMessage的实现导入包。但是我在这个接口的其他方法中遇到了这些父子类的问题,没有问题。

在实施中:

package de.htw_berlin.f4.ai.kbe.kurznachrichtenImpl;

import de.htw_berlin.f4.ai.kbe.kurznachrichten.*;
import de.htw_berlin.aStudent.model.*;

import de.htw_berlin.aStudent.repository.*;
import java.util.*;
import java.util.Set;
import de.htw_berlin.aStudent.repository.MeinAuthorizationException;   
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;


@Service("smsImpl")
public class ShortMessageServiceImpl implements ShortMessageService{


    @Autowired
    MeinUserRepository meinUserRepository;

    @Autowired
    MeinMessageRepository meinMessageRepository;

    @Autowired
    TopicRepository topicRepository;

    public ShortMessageServiceImpl(){

    }

    @Override 
    @Transactional
    public List<List<Message>> getMessageByTopic(String topic, Date since){

        if(topic == null)
            throw new NullPointerException("Given parameter can not point on NULL");    

        Topic refTopic = topicRepository.getTopicByString(topic);
        if(refTopic == null)
            throw new IllegalArgumentException("Topic does not exist");

            List<MeinMessage> messagesOfTopic = new ArrayList(refTopic.getMessages());
            List<List<Message>> result = new ArrayList<List<Message>>();


            for(MeinMessage var : messagesOfTopic){ //for 1

                if(var.isOrigin()){
                    List<Message> temp = new ArrayList<Message>();
                    temp.add(var);
                    result.add(temp);
                }
                else{
                    Long predecessor = var.getPredecessor();
                    for(List<Message> chain: result)
                        if(chain.get(0).getMessageId() == predecessor)
                            chain.add(var);
                }
            }

        return result;
    }

接口的所有其他方法都没有问题。 当我拿走它时,我得到:

java: cannot find symbol
  symbol:   method getMessageByTopic(java.lang.String,java.util.Date)
  location: variable ms1 of type de.htw_berlin.f4.ai.kbe.kurznachrichten.ShortMessageService

它不可能是进口。 ShortMessageService的所有其他方法,我在ShortMessageServiceImpl中使用@Override实现,我可以在App中没有问题的情况下运行。

0 个答案:

没有答案
相关问题