2012-09-30 156 views
0

有类似这样的在这里回答: How to pass a function as a parameter in Java?错误:“找不到符号”

但提供不工作的正确答案。我有一个类:

public class randomClass { 
    2 
    3   public String name; 
    4   private int x; 
    5   private boolean y; 
    6 
    7   public randomClass(String name){ 
    8     this.name = name; 
    9     setAttributes(1,true, "test"); 
10     System.out.println(x + "," + y); 
11   } 
... 
21 
22   public int xMethod(){ 
23     return 1; 
24   } 
25 
26   public void passMethod(){ 
27     testMethod(new Callable<Integer>() { 
28         public Integer call(){ 
29           return xMethod(); 
30         } 
31     }); 
32   } 
33 
34   public void testMethod(Callable<Integer> myFunc){ 
35 
36   } 

内部功能passMethod我试图通过xMethodtestMethod,但我得到的错误是:

cannot find symbol
symbol : class Callable

,我不知道为什么。

此外,我尝试使用xMethod的返回类型字符串,你可以传递一个函数与不同的返回类型,然后整数?

+5

你有没有'进口java.util.concurrent.Callable'? (我假设这是你正在寻找的类) – amit

+0

@amit:'java.util.concurrent.Callable'的接口在这种情况下可以,但它也会提示一个并发上下文,我不一定看这里。像番石榴的功能界面会更普遍使用。 – nansen

回答

0

我认为你需要导入Callable作为import java.util.concurrent.Callable;,然后在你的课堂上使用它之后才能使用它。

入住这里:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Callable.html

http://kamleshkr.wordpress.com/2009/10/02/java-threads-callable-and-future/

+0

是的,这使得错误消失,但在docs.oracle中的哪里说输入路径? – Saad

+0

在指定名称的顶部,您可以看到包含该名称的包以及应在代码中导入的包。 – heretolearn