【问题标题】:Why can I not do methodThatReturnsIterator().next().length()? [duplicate]为什么我不能执行返回 Iterator().next().length() 的方法? [复制]
【发布时间】:2016-09-04 10:42:41
【问题描述】:

由于某种原因,这不起作用

    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 中工作得非常好,但是有了它,它就不起作用了。

【问题讨论】:

    标签: java string iterator


    【解决方案1】:

    您的方法set 的返回类型为Iterator,而不是Iterator&lt;String&gt;,因此当您从方法的返回中收到Iterator 时,机器无法知道其中的内容,因此length不能用于一般的Object

    要解决此问题,请将 Iterator&lt;String&gt; 添加为返回类型,而不是 Iterator

    澄清一下,这本质上是工作中的封装。 set 之外的方法不知道它内部发生了什么,只知道它返回一个Iterator

    【讨论】:

      【解决方案2】:

      您正在返回一个原始迭代器,而 length() 方法的元素未定义。将您的 set() 方法更改为返回 Iterator&lt;String&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 2015-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-11
        • 2023-03-06
        相关资源
        最近更新 更多