import java.util.*;
public class bigjavach1p7balprob{
public static void main(String[] args){
int balance = 10000;
int year = 0;
while (balance < 20000){
year += 1;
double interest = (double)balance * .05;
balance = Integer.parseInt(balance) + interest;
System.out.println("year " + year + ": " + balance);
}
}
}
控制台
Function<StringBuilder,Integer> function = StringBuilder::length;
System.out.println(function.apply(new StringBuilder("abcd")));
问题重新解决!!!
jdk bug
https://bugs.openjdk.java.net/browse/JDK-8162779
答案 0 :(得分:1)
看起来它正在尝试访问AbstractStringBuilder
,即实现length
方法的类,但它具有本地可见性。
您可以通过反思更改它,但解决此问题的最简单方法是将代码更改为:
Function<StringBuilder,Integer> function = sb -> sb.length();
System.out.println(function.apply(new StringBuilder("abcd")));
答案 1 :(得分:1)
StringBuilder扩展了AbstractStringBuilder。 如果对StringBuilder :: length使用方法引用,那么它将引用AbstractStringBuilder.length()。 并且因为AbstractStringBuilder具有默认访问修饰符,所以它不能从默认包(java.lang)外部访问,因此它将抛出该错误