Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 17

Как переопределить метод интерфейса в дженерике

01.05.2019, 13:05. Показов 5746. Ответов 26

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, поисковики кипят уже, как и мой мозг!
Как переопределить метод интерфейса в классе дженерике? Ведь туда будут приходить экземпляры разных классов, и у каждого свой метод?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Box <T> implements Area {
  private T obj;
 
  public Box(T obj) {
    super();
    this.obj = obj;
  }
 
  public T getClass() {
    return obj;
  }
 
  public void setClass(T obj) {
    this.obj = obj;
  }
// метод из интерфейса
  @Override
  public double getArea() {
    ?????????????????????????????
    return ????????
  }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2019, 13:05
Ответы с готовыми решениями:

Переопределить метод интерфейса Comparable для подкласса
Медленными шагами развиваюсь по книге Хорстмана и Корнелла, наткнулся на такую проблему: У меня есть следующие классы: Pet import...

Как правильно переопределить метод?
Есть подобная классовая структура, наследование по типу public. В классе А определен метод Logic: virtual void Logic(float) {}; ...

Как переопределить метод toString
public Flat getBestSpace() { double bestSpace = 0; Flat flatBestSpace = null; for (int i = 0; i &lt;...

26
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
01.05.2019, 13:06
код интерфейса не судьба показать?
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 17
01.05.2019, 13:14  [ТС]
Так он один для всех классов там нет ничего, я ведь сказал, каждый класс переопределяет этот метод сам.
Java
1
2
3
public interface Area {
  double getArea();
}
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
01.05.2019, 13:19
farGoPrime, https://docs.oracle.com/javase... unded.html
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 17
01.05.2019, 13:27  [ТС]
korvin_, и где там про переопределение метода интерфейса, да еще и который что-то должен возвращать?
Пробовал вот так, но не работает...
Java
1
2
3
4
5
6
@Override
  public double getArea() {
    Box <T> box = new Box<>(obj);
    box.setClass(obj);
    return box.getArea();
  }
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
01.05.2019, 13:29
Цитата Сообщение от farGoPrime Посмотреть сообщение
и где там про переопределение метода интерфейса, да еще и который что-то должен возвращать?
Прям в центре.
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 17
01.05.2019, 13:41  [ТС]
Как же я люблю форумы, вот это по Вашему отвечает на мой вопрос?
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class NaturalNumber<T extends Integer> {
 
    private T n;
 
    public NaturalNumber(T n)  { this.n = n; }
 
    public boolean isEven() {
        return n.intValue() % 2 == 0;
    }
 
    // ...
}
Там используется метод из библиотеки java, класс никаких интерфейсов не имплементирует и ничего не переопределяет. Мне надо чтобы этот метод отрабатывал на экземпляре переданного в Вох класса и возвращал то, что прописанно в переопределенном методе с таким же названием из того класса.

Добавлено через 3 минуты
Например в Вох придет экземпляр вот этого класса с готовым методом.
Java
1
2
3
4
5
6
7
8
9
public class Square implemets Area {
......
 
......
  @Override
  public double getArea() {
    return this.getLength() * this.getLength();
  }
}
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
01.05.2019, 15:36
farGoPrime, зачем классу Box имплементировать интерфейс Area?


Цитата Сообщение от farGoPrime Посмотреть сообщение
вот это по Вашему отвечает на мой вопрос?
Да. Это ответ
Цитата Сообщение от farGoPrime Посмотреть сообщение
public class NaturalNumber<T extends Integer> {
Что если сделать Box <T extends Area> например?
0
230 / 199 / 71
Регистрация: 21.10.2016
Сообщений: 449
01.05.2019, 15:48
Java
1
2
3
public double getArea() {
    return obj.getArea();
}
1
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 17
01.05.2019, 16:08  [ТС]
Java
1
2
3
public double getArea() {
    return obj.getArea();
}
Так тоже пробовал, в obj.getArea();он не видит метод getArea();, пробовал наследоваться, импортировал классы, ничего не помогает
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
01.05.2019, 16:39
farGoPrime, объясните чего конкретно вы хотите от программы и подробнее опишите её структуру, тогда людям будет проще вам помочь

Не по теме:

Впрочем, возможно я один тут ничерта не понимаю

0
230 / 199 / 71
Регистрация: 21.10.2016
Сообщений: 449
01.05.2019, 16:44
Лучший ответ Сообщение было отмечено farGoPrime как решение

Решение

Java
1
2
3
4
public interface Area {
 
    double getArea();
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Box<T extends Area> {
 
    private T obj;
 
    public Box(T obj) {
        this.obj = obj;
    }
 
    public T getObj() {
        return obj;
    }
 
    public void setObj(T obj) {
        this.obj = obj;
    }
 
    public double getArea() {
        return obj.getArea();
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Square implements Area {
 
    private double length;
 
    public Square(double length) {
        this.length = length;
    }
 
    @Override
    public double getArea() {
        return length * length;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
class BoxDemo {
 
    public static void main(String[] args) {
        Square square = new Square(5.0);
 
        Box<Square> box = new Box<>(square);
 
        double area = box.getArea();
 
        System.out.println(area);
    }
}
Bash
1
2
3
const@mate ~/progs $ javac BoxDemo.java
const@mate ~/progs $ java BoxDemo
25.0
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
01.05.2019, 19:26
Цитата Сообщение от farGoPrime Посмотреть сообщение
Как же я люблю форумы, вот это по Вашему отвечает на мой вопрос?
Как же я люблю людей, которые не умеют читать. На их фоне я становлюсь ещё более ценным и высокооплачиваемым специалистом.
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 17
01.05.2019, 20:49  [ТС]
Вот форум ведь не только ведь для профи, это мой первый опыт работы с дженериками, и я понятия не имел что имплементируя здесь интерфейс надо писать не implements а extends, и нигде на этом внимания не акцентируется. Я ведь перед тем как обратиться сюда перелопатил кучу информации, и хоть где нибудь, хоть кто нибудь заикнулся бы об этом....
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
01.05.2019, 20:56
Цитата Сообщение от farGoPrime Посмотреть сообщение
и я понятия не имел что имплементируя здесь интерфейс надо писать не implements а extends
Там где имплементируется интерфейс применяется слово implements. В этом случае интерфейс не имплементируется поэтому заострять внимание тут не на чем.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
01.05.2019, 20:56
Цитата Сообщение от farGoPrime Посмотреть сообщение
и нигде на этом внимания не акцентируется. Я ведь перед тем как обратиться сюда перелопатил кучу информации
Я не знаю, что ты там лопатил, действительно какие-то кучи чего-то, видимо. А надо было просто заглянуть в документацию.
0
01.05.2019, 20:58

Не по теме:

Цитата Сообщение от korvin_ Посмотреть сообщение
На их фоне я становлюсь ещё более ценным и высокооплачиваемым специалистом.
к сожалению работая на рынок бывшего СССР, высокооплачиваемым стать не получится

0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 17
01.05.2019, 20:58  [ТС]
Короче я тебя понял, гнида ты еще та, ты тут сидишь самоутверждаешься на форуме куда люди за помощью приходят?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
01.05.2019, 21:26

Не по теме:

Цитата Сообщение от KEKCoGEN Посмотреть сообщение
к сожалению работая на рынок бывшего СССР, высокооплачиваемым стать не получится
Отчего же? Вполне может. Да и не обязательно, проживая здесь, ограничиваться только этим рынком.



Цитата Сообщение от farGoPrime Посмотреть сообщение
Короче я тебя понял, гнида ты еще та, ты тут сидишь самоутверждаешься на форуме куда люди за помощью приходят?
Бомбануло?
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 17
01.05.2019, 21:30  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Бомбануло?
korvin_, да не,нормально всё, прямо представил тебя, такой заморыш, сидишь тут самоутверждаешься на новичках и школьниках, но такие тоже нужны, продолжай, ты нужен этому городу!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.05.2019, 21:30
Помогаю со студенческими работами здесь

Как наследовать и переопределить метод?
Доброго времени суток! Такой вопрос - можно ли наследовать метод и при этом переопределить его? Пробовал вот так: class...

Как переопределить встроенный метод .append()
надо переопределить метод .append(), не могу найти его название, например как у метода __str__(self): помогите, пожалуйста

Как переопределить метод родителя класса?
Есть класс TDot, который есть классом-наследником для класса TTriangle В классе TDot есть метод setColor(), который меняет цвет и метод...

Как переопределить виртуальные метод в потомке потомка?
Есть некий абстрактный класс TParser, который наследован от TThread. В свою очередь от TParser наследуется класс TVKParser и другие. Как...

Как переопределить метод компонента имеющий параметры?
uses Classes, SysUtils, StdCtrls, Windows; { TEdit } type TEdit = class(StdCtrls.TEdit) protected ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru