我正在尝试调用自制“Filter”类的方法,但编译器无法找到该方法。
这有点棘手,因为我在Eclipse中编写代码,一切似乎都很好。但是我必须将我的代码复制到另一个软件中并在那里编译它。另一方面,这个编译器找不到我的方法。
我认为Eclipse编译器可能“允许”更多我甚至不知道的错误。然而另一个编译器与它们挣扎。
以下是“其他”编译器打印为错误代码的内容:
C:\Program Files\Enomic\enomic-server\data\rules\testcompileboehmch\CodeTest.java:77: error: cannot find symbol filt.setHasRemoved(true);
symbol: method setHasRemoved(boolean)
location: variable filt of type tms.Filter
我不知道为什么我的班级不正确。如上所述,在日食中一切正常。
CodeTest类(缩减到重要部分):
package tms;
import tms.Filter;
import java.util.*;
Filter filt = new Filter();
filt.setHasRemoved(true);//cannot be found
我的过滤器类:
package tms;
import java.util.ArrayList;
import java.util.List;
public class Filter {
private List<Object> remainingList;
private List<Object> removedList;
private Object typ;
private boolean hasRemoved;
public Filter()
{
this.remainingList = new ArrayList<Object>();
this.removedList = new ArrayList<Object>();
this.typ = new Object();
this.hasRemoved = false;
}
public Filter(List<Object> remaining, List<Object> removed, Object typ, boolean hasRemoved)
{
this.remainingList = new ArrayList<>();
if(remaining != null)
{
this.remainingList.addAll(remaining);
}
this.removedList = new ArrayList<>();
if(removed != null)
{
this.removedList.addAll(removed);
}
this.typ = typ;
this.hasRemoved = hasRemoved;
}
//Set-Methoden
public void setRemainingList(List<Object> list)
{
this.remainingList.clear();
this.remainingList.addAll(list);
}
public void setRemovedList(List<Object> list)
{
this.removedList.clear();
this.removedList.addAll(list);
}
public void setTyp(Object val)
{
this.typ = val;
}
public void setHasRemoved(boolean val)
{
this.hasRemoved = val;
}
//Get-Methoden
public List<Object> getRemainingList()
{
return this.remainingList;
}
public List<Object> getRemovedList()
{
return this.removedList;
}
public Object getTyp()
{
return this.typ;
}
public boolean getHasRemoved()
{
return this.hasRemoved;
}
}
我真的不知道为什么这不起作用。我看不出有什么错误吗?
答案 0 :(得分:1)
下面:
C:\ Program Files \ Enomic \ enomic-server \ data \ rules \ testcompileboehmch \ CodeTest.java:77:error:找不到
并且
package tms;
重点是:java编译器期望文件夹结构类似于包结构。
所以你的问题是你的类在名为tms
的目录中存在不。
eclipse在这里工作也很奇怪。从这个意义上说:例如,您想阅读here或there。
不,只有极少数微妙的东西,其中eclipse java编译器的工作方式与其他产品不同。请放心:作为新手遇到此类事情的可能性非常接近于零。您的问题是由于您不了解java文件的编译基础这一事实引起的。 (当你开始使用像eclipse这样的IDE学习编程时,这是一个缺点 - IDE隐藏了很多这些东西。然后,当你需要它时 - 你根本不知道发生了什么。)
答案 1 :(得分:1)
By renaming my Filter Class I was able to solve the problem. It looks like the Compiler never knew exactly to which class i was referring. Nevertheless thanks for all the help, you directed me into the right direction.
Note to myself (and maybe others too): Come up with your own class names!