出于某种原因,这不起作用
import java.util.*;
public class SetExample
{
public static void main(String[] args)
{
System.out.println(set().next().length());
}
public static Iterator set()
{
List<String> arr = new ArrayList<>(Arrays.asList("one", "fableeblee", "cacao", "pablo", "thelma", "hepatitis"));
Iterator<String> itr = arr.iterator();
System.out.println(itr.next().length());
return itr;
}
}
main中的一行给我一个“找不到符号错误”,但是set()方法中的方法与它类似。为什么是这样?
,当我删除.length()时,它在main中工作得非常好。但是,使用它时,它会起作用。答案 0 :(得分:3)
您的方法Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage("com.whatsapp");
whatsappIntent.putExtra(Intent.EXTRA_TEXT, "The text you wanted to share");
try {
activity.startActivity(whatsappIntent);
} catch (android.content.ActivityNotFoundException ex) {
ToastHelper.MakeShortText("Whatsapp have not been installed.");
}
的返回类型为set
,而不是Iterator
,因此当您从方法返回时收到Iterator<String>
时,机器无法知道内部是什么因此,Iterator
不能用于一般length
。
要解决此问题,请添加Object
作为返回类型,而不是Iterator<String>
。
澄清一下,这基本上是封装工作。 Iterator
之外的方法不知道其中发生了什么,只是返回set
。
答案 1 :(得分:2)
您正在返回原始迭代器,并且length()
方法的元素未定义。将set()
方法更改为返回Iterator<String>
。