Вопросительный знак Java Generics в Scala

2

У меня есть API с сигнатурой на Java, которая возвращает public Foo<?> getFoo()

Затем, когда я пытаюсь уничтожить этот API от Scala, жалуется ? ,

val fooValue:Foo[_] = API.getFoo()

Я также пытаюсь с помощью Any

val fooValue:Foo[Any] = API.getFoo()

Любая идея, как я могу задать тип вопроса в Scala

  • 0
    Может ли компилятор определить тип?
  • 0
    Компилятор не может определить тип подстановочного знака "?" в IDE не жалуюсь, но при компиляции ошибка поднимается
Показать ещё 1 комментарий
Теги:

1 ответ

3
Лучший ответ

Следующий код компилируется

Foo.java

public class Foo<T> {
}

API.java

public class API {
    public static Foo<?> getFoo() {
        return null;
    }
}

App.scala

object App {
  val fooValue: Foo[_] = API.getFoo()
}

Foo[?] Недействителен синтаксис Java.

Если метод является public static Foo<?> getFoo() вы можете назвать его как API.getFoo(). Если это public Foo<?> getFoo() вы можете назвать его как new API().getFoo().

Вопросительный знак (?) В Java соответствует подчеркиванию (_) в Scala.

  • 0
    Вы создаете класс Foo с универсальным T. В моем случае я не могу иметь универсальный тип T
  • 0
    Напишите свое определение класса Foo . Что вы подразумеваете под "не может иметь общего типа T"?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню