2017-02-18 3 views
-1

Я не запрограммирован в Java некоторое время, и я столкнулся с этим кодом в уроках Apache Kafka. Я не понимаю, что делают точки в начале инструкций. Означает ли это создание новой переменной «wordCounts» типа KTable, назначить textLines, а затем вызвать wordCounts.flatMapValues ​​(), wordCounts.map(), а затем wordCounts.countByKey()? Я вижу эту запись в JavaScript, как хорошо, но я не знаю, что это называется .:java синтаксис, начинающийся с точки

KTable wordCounts = textLines 
    // Split each text line, by whitespace, into words. 
    .flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\W+"))) 

    // Ensure the words are available as record keys for the next aggregate operation. 
    .map((key, value) -> new KeyValue<>(value, value)) 

    // Count the occurrences of each word (record key) and store the results into a table named "Counts". 
    .countByKey("Counts") 
+2

Разрывы строк на Java не значительны. Представьте, что комментариев и разрывов строк там не было. – user2357112

+1

Они просто отделяют их для ясности. Он интерпретируется как 'textLines.flatMapValues ​​(...). Map (...). CountByKey (...)' – Li357

ответ

1

Заявление начинается с textLines и затем продолжается на следующей строке, но метод flatMapValues в настоящее время вызывается textLines. То есть тогда map ed и считается. Этот стиль иногда называют fluent interface.

+0

Doh. Спасибо. Я не поймал конец полутонов в конце и подумал об удалении всех пробелов. Теперь это очевидно. – Shark

2

Это:

KTable wordCounts = textLines 
// Split each text line, by whitespace, into words. 
.flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\W+"))) 

фактически то же самое, как это:

KTable wordCounts = textLines.flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\W+"))) 

пробельные и комментарии на самом деле не имеют значения для компилятора, то «точка» просто разыменование последнего символа , который был переменной textLines.

0

Они просто вызвать метод flatMapValues, который ассоциируется с объектов TextLine .flatMapValues ​​нет в стартовой линии, они только что вошли, чтобы держать его в новой линии для лучшего разъяснения кода, Там нет понятия, чтобы начать метод с . (точка) при запуске в JAVA, а также на любом языке

+0

«Java» не выдерживает, так что это не во всех случаях. Это просто имя. –

Смежные вопросы