阅读一篇文章状态我来到主题目标打字时我自己有点混淆当我阅读以下段落时:
ActionListener l = (ActionEvent e) -> ui.dazzle(e.getModifiers());
这种方法的一个含义是,相同的lambda表达式在不同的上下文中可以有不同的类型:
Run Code Online (Sandbox Code Playgroud)Callable<String> c = () -> "done"; PrivilegedAction<String> a = () -> "done";
在第一种情况下,lambda表达式
() -> "done"
表示的实例Callable
.在第二种情况下,同一表达式表示PrivilegedAction的实例.编译器负责推断每个lambda表达式的类型.它使用表达式出现的上下文中的预期类型; 此类型称为目标类型.lambda表达式只能出现在目标类型是功能接口的上下文中.
访问这里的完整文章
您能否以一种简单的方式向我解释以上段落所遵循的这些要点:
如果你还给我一个代码片段,我将非常感激
有两个类Super1
和Sub1
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
但它是如何发生的?
是一个非常新的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) 昨天这个问题由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==s2
和s3==s4
返回true
和true
我是非常有信心.突然间,他说不是错误的输出然后我认为他可能是在开玩笑或试图失去信心,但直到最后他说错了.当我检查输出是true
和false
.我也在想如何通过给出适当的答案来解决我的困惑.提前致谢.
在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添加泛型内容?
由于 Python 3.8 即将发布,只是想知道The final decorator 和 The Final annotation之间的区别。
java ×4
apache-spark ×1
constructor ×1
generics ×1
java-10 ×1
lambda ×1
pyspark ×1
python ×1
python-3.8 ×1
python-3.x ×1
string ×1
super ×1
type-hinting ×1