代码之家  ›  专栏  ›  技术社区  ›  paul

Scala中的Java泛型问号

  •  2
  • paul  · 技术社区  · 6 年前

    我有一个带有Java签名的API,返回 public Foo<?> getFoo()

    ? .

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

    我也尝试任何

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

    你知道如何在Scala中设置问号类型吗

    1 回复  |  直到 6 年前
        1
  •  3
  •   Dmytro Mitin    6 年前

    下面的代码编译

    Foo.java文件

    public class Foo<T> {
    }
    

    API.java文件

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

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

    Foo[?] 不是有效的Java语法。

    如果方法是 public static Foo<?> getFoo() API.getFoo() . 如果是的话 public Foo<?> getFoo() 你可以这样称呼它 new API().getFoo() .

    问号( ? )在Java中对应下划线( _ )在斯卡拉。