小编Rou*_*han的帖子

java 8目标打字

阅读一篇文章状态我来到主题目标打字时我自己有点混淆当我阅读以下段落时:

ActionListener l = (ActionEvent e) -> ui.dazzle(e.getModifiers());

这种方法的一个含义是,相同的lambda表达式在不同的上下文中可以有不同的类型:

Callable<String> c = () -> "done";

PrivilegedAction<String> a = () -> "done";
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,lambda表达式() -> "done"表示的实例Callable.在第二种情况下,同一表达式表示PrivilegedAction的实例.

编译器负责推断每个lambda表达式的类型.它使用表达式出现的上下文中的预期类型; 此类型称为目标类型.lambda表达式只能出现在目标类型是功能接口的上下文中.

访问这里的完整文章

您能否以一种简单的方式向我解释以上段落所遵循的这些要点:

  1. 目标类型
  2. 上下文

如果你还给我一个代码片段,我将非常感激

java lambda

8
推荐指数
2
解决办法
4270
查看次数

如果在构造函数中使用super调用重写方法会发生什么

有两个类Super1Sub1

Super1.class

public class Super1 {
    Super1 (){
        this.printThree();
    }

    public void printThree(){
        System.out.println("Print Three");
    }    
}
Run Code Online (Sandbox Code Playgroud)

Sub1.class

public class Sub1 extends Super1 {
    Sub1 (){
        super.printThree();
    }

    int three=(int) Math.PI;

    public void printThree(){
        System.out.println(three);
    }

    public static void main(String ...a){
         new Sub1().printThree();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用printThree类的方法时,Sub1我希望输出为:

打印三
3

因为Sub1构造函数调用了super.printThree();.

但我真的得到了

0
打印3
3

我知道0是默认值,int但它是如何发生的?

java constructor super

7
推荐指数
1
解决办法
651
查看次数

向pyspark Dataframe添加新行

是一个非常新的pyspark,但对熊猫很熟悉。我有一个pyspark数据框

# instantiate Spark
spark = SparkSession.builder.getOrCreate()

# make some test data
columns = ['id', 'dogs', 'cats']
vals = [
     (1, 2, 0),
     (2, 0, 1)
]

# create DataFrame
df = spark.createDataFrame(vals, columns)
Run Code Online (Sandbox Code Playgroud)

想要添加新的行(4,5,7),以便输出:

df.show()
+---+----+----+
| id|dogs|cats|
+---+----+----+
|  1|   2|   0|
|  2|   0|   1|
|  4|   5|   7|
+---+----+----+
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark

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

如果两个字符串具有相同的引用,为什么输出不被排除(true)?

昨天这个问题由Interviewer询问该线路的输出是什么.

public class StringTest {

  public static void main(String[] args) {
      String s1 = "abc";
      String s2 = "abc";
      String s3 = s1+s2;
      String s4 = s1+s2;

      //check s1 == s2
      System.out.println(s1==s2);

      //check s3 == s4
      System.out.println(s3==s4);
  }
}
Run Code Online (Sandbox Code Playgroud)

当我看着这个问题,然后思考面试官提出的简单问题.我告诉他,输出s1==s2s3==s4返回truetrue我是非常有信心.突然间,他说不是错误的输出然后我认为他可能是在开玩笑或试图失去信心,但直到最后他说错了.当我检查输出是truefalse.我也在想如何通过给出适当的答案来解决我的困惑.提前致谢.

java string

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

var不会给泛型发出警告

在Java 10中,这给了我一个警告 -

ArrayList a = new ArrayList<>();
a.add(23);
a.add("str");
Run Code Online (Sandbox Code Playgroud)

"ArrayList是一个原始类型.应该参数化对泛型类型ArrayList的引用"

原因是Generic背后,但对于这个代码

var b = new ArrayList<>();//Object type
b.add(3);
b.add("string");
Run Code Online (Sandbox Code Playgroud)

为什么编译器没有给出任何警告?

注意: - 我知道var仅限于方法范围.只是想知道切换到var的泛型的设计概念

编辑1: - 不要像我想知道的内部设计那样重复标记,以及为什么java没有为var添加泛型内容?

java generics local-variables java-10

0
推荐指数
1
解决办法
269
查看次数

python3.8中的最终注释和装饰器

由于 Python 3.8 即将发布,只是想知道The final decorator 和 The Final annotation之间的区别。

type-hinting python-3.x python-3.8

-2
推荐指数
1
解决办法
1812
查看次数