问题:我能否安全地假设CUDA编译器在public class ReferenceToStaticMethod {
public static void main(String[] args) {
// TODO code application logic here
List numbers = Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12,13,15,16);
List primeNumbers = ReferenceToStaticMethod.findPrimeNumbers(numbers, ReferenceToStaticMethod::isPrime);
System.out.println("Prime Numbers are "+primeNumbers);
}
public static boolean isPrime(int number) {
if(number == 1 ){
return false;
}
for (int i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
public static List findPrimeNumbers(List list, Predicate predicate) {
List sortedNumbers = new ArrayList();
list.stream().filter((i) ->(predicate.test(i))).forEach((i) -> {
sortedNumbers.add(i);
});
return sortedNumbers;
}
}
表达式中的第一个ReferenceToStaticMethod.java:15: error: incompatible types: invalid method reference
List primeNumbers = ReferenceToStaticMethod.findPrimeNumbers(numbers, ReferenceToStaticMethod::isPrime);
^
incompatible types: Object cannot be converted to int
Note: ReferenceToStaticMethod.java uses unchecked or unsafe operations.
之后停止评估?
false
如果&&
为if ( condition1 && foo() )
{
// do something
}
,那么condition1
必须不 [会导致未定义的行为]
或者我应该更好地编码:
false
答案 0 :(得分:1)
运算符false
从左侧开始计算操作数。如果最左边的操作数是foo()
,则它不能继续评估。如果这是真的,评估将继续到正确的操作数等等。
在您的情况下,condition1 == false
在{{1}}时不会被调用,因为这是评估将终止的地方。所以我会使用第一个代码片段。