Java 理解静态方法的调用
我得到了这段代码,我想知道为什么方法task1被称为Exam.task1。我尝试将呼叫改为task1,一切正常。我知道静态方法必须从类中调用,但为什么在这个示例中代码没有这种调用就可以工作呢Java 理解静态方法的调用,java,Java,我得到了这段代码,我想知道为什么方法task1被称为Exam.task1。我尝试将呼叫改为task1,一切正常。我知道静态方法必须从类中调用,但为什么在这个示例中代码没有这种调用就可以工作呢 import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.function.Cons
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Predicate;
public class Exam {
public static <T> void task1(Iterable<T> collection,Predicate<T> filter,Consumer<T> action){
Set<T> set = new HashSet<>();
for(T data : collection){
if(filter.test(data) && set.add(data)){
action.accept(data);
}
}
}
public static void main(String[] args) {
List<String> list = Arrays.asList("c","d","a","a","de","e","gt","d","f","e");
List<String> dest = new ArrayList<>();
Exam.task1(list,str -> str.length() == 1, str -> dest.add(str));
for(String s : dest){
System.out.format("%s ",s);
}
}
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.HashSet;
导入java.util.List;
导入java.util.Set;
导入java.util.function.Consumer;
导入java.util.function.Predicate;
公开课考试{
公共静态void task1(Iterable集合、谓词筛选器、使用者操作){
Set=newhashset();
对于(T数据:收集){
if(过滤测试(数据)和设置添加(数据)){
行动.接受(数据);
}
}
}
公共静态void main(字符串[]args){
列表=数组。asList(“c”、“d”、“a”、“a”、“de”、“e”、“gt”、“d”、“f”、“e”);
List dest=new ArrayList();
任务1(列表,str->str.length()==1,str->dest.add(str));
for(字符串s:dest){
系统输出格式(“%s”,s);
}
}
}
因为main
是一个static
方法,并且您在同一个类中,所以test.task1
是隐式的 是的,它类似于this
在方法中是隐式的,因此如果一个类有字段x
,那么您不需要键入this.x
在方法中引用它。@DavidS除非x
恰好也是一个局部变量请仔细阅读以下答案:。