我目前正在使用' Intermediate'预订java但他们没有提供大多数问题的答案(可能应该得到一本新书)。 但在书中他们提出这个问题并说这很容易。
编写一个实现Filter接口的ShortWordFilter类,只接受少于5个字符的单词。即如果字符数小于5,则接受方法将返回true;否则,accept方法返回false。
所以我在eclipse上实现了它,这就是代码:
@Override
public boolean accept(Object x) {
return false;
}
我的意思是,我完全不知道,而且我没有导师帮助我,所以我希望你们能给我一些指导,因为我尝试过的东西都不起作用。
答案 0 :(得分:2)
尝试
@Override
public boolean accept(Object x) {
if (x instanceOf String) and ((String)x).length() < 5)
return true;
else
return false;
}
答案 1 :(得分:2)
作为nullPointer方法的变体(即使我认为它更好):
@Override
public boolean accept(Object x) {
if (x == null) {
return false;
}
return (x.toString().length() < 5);
}
这个接受任何对象,并将其转换为字符串。作为一种特殊情况,它会为空对象返回false
。
答案 2 :(得分:1)
一旦Object为String,您就可以使用length方法(此处的String for API是您的朋友)。
答案 3 :(得分:1)
您确定x
参数的类型必须是Object
吗?你能想到代表一系列字符的任何类型吗?
如果您的变量必须是Object
类型,那么您需要将其转换为上述类型(提示:String
),以便将其视为一系列字符。
如果您想要找到String
的长度,那么您已经拥有了length()
方法。
然后,您可以使用>
或>=
或<
或<=
进行比较。
@Override
public boolean accept(Object x) {
// cast x to "sequence of characters" type
// check the length of the sequence of characters and return appropriate true / false as appropriate
}
答案 4 :(得分:1)
您不希望处理null的对象以及不是字符串的对象,以便您可以
public boolean accept(Object obj) {
if (null == obj) {
return false;
}
if (! (obj instanceof String)) {
return false;
}
String str = (String)obj;
return (str.length() < 5);
}