我想使用this feature
示例中最简单的事情对我不起作用:
import java.math.*;
import java.util.Scanner;
public class CheckPrimeNumber {
public static void main(String[] args)
{
int flag=0;
BigInteger input;
try{
Scanner sc= new Scanner(System.in);
System.out.println("Enter a valid positive number: ");
String strinput=sc.nextLine();
input = new BigInteger(strinput);
sc.close();
if(input.equals(0) ||input.equals(1)){
System.out.println(input+" is not a prime number.");
}
else{
for(BigInteger i=2; i < input.divide(2); i++){
if(input.remainder(2) == 0){
System.out.println(input+" is not a prime number.");
flag=1;
break;
}
}
if(flag==0)
System.out.println(input +" is a prime number.");
}
}
catch(Exception e){
System.out.println("Please enter only valid positive number: ");
}
finally{
System.out.println("Thank you...!!!");
}
}
}
但我得到了
lateinit val foo = 1
val bar = foo::lateinitVar.isInitialized()
我在Android-Studio(也是那里安装的Kotlin 1.2.10插件)中通过gradle使用Kotlin 1.2.10
答案 0 :(得分:13)
代码中没有名称为lateinitVar
的变量,因此出现错误。再看一下这个例子:
this::lateinitVar.isInitialized
在lateinitVar
中定义了一个变量this
,该函数被调用。示例中的代码段可以展开(列表开头的小加号),如下所示:
class Foo {
lateinit var lateinitVar: String
fun initializationLogic() {
println("isInitialized before assignment: " + this::lateinitVar.isInitialized)
lateinitVar = "value"
println("isInitialized after assignment: " + this::lateinitVar.isInitialized)
}
}
这可能会更清楚。
另请注意,lateinit
无法应用于val
,但仅适用于var
。