2016-05-09 121 views
1

出於某種原因,這是行不通爲什麼我不能做methodThatReturnsIterator()。next()。length()?

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; 
} 
} 

在主要的一條線給了我一個「找不到符號錯誤」,但在設置類似於它的方法()方法的工作。爲什麼是這樣?當我刪除.length()時,它在主體中工作得很好,但是在它不起作用的情況下。

回答

3

你的方法setIterator,不Iterator<String>返回類型,所以當你從方法的返回收到Iterator,機器無法知道什麼是它的內部,從而length不能在一般Object使用。

爲了解決這個問題,添加Iterator<String>返回類型,而不是Iterator

爲了澄清,這基本上是在工作封裝。 set之外的方法不知道里面的內容,只是它返回Iterator

2

您正在返回一個原始迭代器,並且length()方法未定義其元素。更改您的set()方法返回Iterator<String>

相關問題