相关疑难解决方法(0)

匿名扩展类并同时实现接口?

假设我有一个名为Interface的接口,以及一个名为Base的具体类,为了使事情变得更复杂,有一个需要一些参数的ctor.

我想创建一个扩展Base并实现Interface的匿名类.

就像是

 Interface get()
 {
     return new Base (1, "one") implements Interace() {};
 }
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来很合理,但它不起作用!

(PS:实际上,接口和基础也是通用类:D.但我现在会忽略它)

java anonymous-class

7
推荐指数
2
解决办法
7389
查看次数

使用&的Strange Java强制语法

(实际上,这个问题与lambdas没有直接关系,但是对于使用边界的强制转换,所以标记为重复的问题并没有提供这个问题的答案.你会在这里找到我的问题的答案:我应该如何为Java转换具有多个边界的泛型?)

就在最近,我参加了SW工艺会议.在其中一个讨论的例子中,我遇到了一些这样的演员,它似乎是自Java 8以来的有效Java.

Object aTest = (String & CharSequence) "test";
Run Code Online (Sandbox Code Playgroud)

我的问题:有人可以告诉我这背后的成语以及它究竟能为我们做些什么吗?该示例的演示者无法解释它,我没有找到任何提及(我甚至不知道它的名称).

除了Oleksandr之外,我还要在这里提出另一个答案,因为这个问题已被标记为重复,因此被锁定.

与此同时,我能够构建一个(人为的)用例,只是为了明确这个想法.

假设我们有泛型方法foo(),它的唯一参数是通用的,而type参数有两个上限(反对ComparableSerializable):

public static <T extends Comparable & Serializable> void foo(T t) {
    System.out.println(t);
}
Run Code Online (Sandbox Code Playgroud)

进一步假设,我们有一个类AClass,实现ComparableSerializable

public class AClass implements Comparable, Serializable {
    @Override
    public int compareTo(Object other) {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

进一步假设设计的部分,我们有一个AClass对象instance,它被分配给一个类型的变量Object:

Object instance = new AClass();
Run Code Online (Sandbox Code Playgroud)

如果,在代码的另一个地方,我们想要传递instancefoo(),并且我们不知道动态类型 …

java casting bounded-types type-bounds java-8

6
推荐指数
1
解决办法
318
查看次数