2017-03-15 107 views
0

程序返回給定輸入的所有同義詞。但是這個代碼是針對java 1.8的。 如何轉換此代碼爲Java 1.6。Lambda表達式將Java 1.8代碼轉換爲Java 1.6

model.listIndividuals().forEachRemaining(ind -> { 

if(((Resource)ind).getLocalName().toString().equalsIgnoreCase(input)){    
System.out.println("Synonyms of " + ((Resource)ind).getLocalName().toString() + " are:");    
      ind.listPropertyValues(isSynonymOf).forEachRemaining(val -> {     
    System.out.println(" * " + ((Resource) val).getLocalName().toString()); 

      }); 
     } 
    }); 
+0

不平凡。首先,Java 1.6(和1.7)是生命的終結;爲什麼你必須使用它?其次,[scala 2.11.1](http://www.scala-lang.org/news/2.11.1)在Java 6上運行;並確實有lambda(但語法略有不同)。 –

+0

@Elliott Frisch實際上,我不得不使用Java 1.6。我不知道如何轉換上面的代碼(重寫)爲Java 1.6 – Tolga

+1

['Iterator.forEachRemaining(java.util.function.Consumer)'](https://docs.oracle.com/javase/8/docs/api /java/util/Iterator.html#forEachRemaining-java.util.function.Consumer-)Javadoc說(部分)*默認實現的行爲如下:'while(hasNext())action.accept(next()); '*(你可以在Java 1.6中實現),或者你可以使用scala。我不會爲你轉換這個,因爲這不是一個代碼寫作服務,我即將上牀睡覺,而且我無法測試它。 –

回答

3

試試這個:

Iterator<Individual> iterInd = model.listIndividuals(); 
while (iterInd.hasNext()) { 
    Individual ind = iterInd.next(); 
    if (ind.getLocalName().equalsIgnoreCase(input)) { 
     System.out.println("Synonyms of " + ind.getLocalName() + " are:"); 
     NodeIterator iterVal = ind.listPropertyValues(isSynonymOf); 
     while (iterVal.hasNext()) { 
      System.out.println(" * " + iterVal.next().getLocalName()); 
     } 
    } 
} 
+0

你想看看我新發布的問題嗎?謝謝 – Tolga