2016-07-11 5 views
0

Как создать интерфейс, который, когда Overridden может иметь разные типы? Иногда я хотел бы, чтобы метод принимал элемент типа «HtmlPage», а иногда я хотел бы, чтобы он взял тип «Документ». Позже они могут измениться на еще большее количество типов.Java Создать метод в интерфейсе и изменить тип параметра

Пример:

public interface MyInterface{ 
    void checkThis() throws Exception; 

    Output Show(Input input, String url) throws Exception; 
} 

public class HeadLevel extends MyInterface<HtmlPage,String>{ 
    Output scrape(HtmlPage page, String url) throws Exception; 
} 

public class MyClass implements HeadLevel<Output>{ 
    @Override 
    public void checkThis(Document page, String url){ 

    } 
} 

Я имею в виду то, как это должно быть достижимо. Я попытался оглянуться, используя ключевые слова «Перегрузка» и «Переопределить» в моих поисках, но не могу найти что-то, что может работать так. Как вы видите, «MyClass» переопределил метод и определил используемые параметры.

Любая помощь в том, как это сделать или почему вы не можете этого сделать, очень ценится. С дополнительной информацией, которую я получаю для этого, я обновлю это сообщение и сделаю это лучше, я просто сейчас не знаю, как это назвать.

+0

Прежде всего вашего синтаксиса является неправильным. Второй класс может расширять другой класс, а не интерфейс, а класс фактически реализует интерфейс. – Unknown

+0

Это просто общее сходство с моим проектом. – L1ghtk3ira

+1

Это технически невозможно, так как 'checkThis (Document, String)' не поддерживает и не может переопределить 'checkThis()'. Однако, если вы сообщите нам, что вы пытаетесь сделать с этим, мы могли бы найти способ обхода. – Zircon

ответ

0

В этом случае вам не нужен какой-либо интерфейс, вы не можете делать то, что хотите, вам нужно понять концепцию интерфейсов перед его использованием.

https://docs.oracle.com/javase/tutorial/java/concepts/interface.html

+0

Есть ли способ, которым я это делаю с интерфейсом? – L1ghtk3ira

+0

Или, может быть, альтернатива, подобная? – L1ghtk3ira

+0

Почему вы хотите использовать интерфейсы? Что вы действительно хотите сделать, объясните свою проблему. – Renan

0

Реализация я искал, оказалось, не существует, однако есть лучший способ, чтобы иметь возможность делать то, что я искал с помощью ввода и вывода.

public interface MyInterface<Input, Output> { 
    void checkThis(Input input, Output output) throws Exception; 

    Output Show(Input input, String url) throws Exception; 
} 

public class HeadLevel extends MyInterface<HtmlPage,String>{ 
    Output scrape(HtmlPage page, String url) throws Exception; 
} 

public class MyClass implements HeadLevel<Output>{ 
    @Override 
    public void checkThis(Document page, String url){ 

    } 
} 

Кажется, ответ был на самом деле у меня под носом. Я неправильно понял, какие типы ввода/вывода и как вы можете их использовать. Ввод и вывод могут быть в любое время, когда вы ожидаете прийти или выйти из приложения.

ввод является любой информацией, которая необходима для вашей программы, чтобы завершить его execution.There много форм, что ввод программы может принимать

входа может принимать форму различных типов, такие как HTMLPage, Документ и Строка. Используя вход, вы можете переопределить свой метод и иметь нужные вам типы.

Вы можете прочитать больше о вводе и выводе here

+0

Никогда не объявляйте метод с 'throws Exception'. –

+0

Обычно для типичных типов используются одиночные буквы верхнего регистра, то есть 'I' или' O', поэтому их не путать с фактическими классами. Вы могли бы, конечно, также создать генерированный «Исключение» ...: 'public interface MyInterface ' – Turing85

+0

Мне нужен метод с исключительным исключением в моей реализации. – L1ghtk3ira