2013-03-01 3 views
1

Twitter выпустила клиентскую библиотеку Java и включал в себя следующий пример кода для его использования: объявлениеЧто это означает: MyClassName <String> в Java означает?

// Connect to the filter endpoint, tracking the term "twitterapi" 
Hosts host = new BasicHost(Constants.STREAM_HOST); 
StreamingEndpoint endpoint = new StatusesFilterEndpoint(); 
endpoint.trackTerms(Lists.newArrayList("twitterapi")); 

// Drop in the oauth credentials for your app, available on dev.twitter.com 
Authentication auth = new OAuth1("consumerKey", "consumerSecret", 
          "token", "tokenSecret"); 

// Initialize a queue to collect messages from the stream 
BlockingQueue<String> messages = new LinkedBlockingQueue<String>(100000); 

// Build a client and read messages until the connection closes. 
ClientBuilder builder = new ClientBuilder() 
    .name("FooBarBaz-StreamingClient") 
    .hosts(host) 
    .authentication(auth) 
    .endpoint(endpoint) 
    .processor(new StringDelimitedProcessor(messages)); 
Client client = builder.build; 
client.connect(); 

while (!client.isDone()) { 
    String message = messages.take(); 
    // Do something with message 
} 

релиз по адресу: https://dev.twitter.com/blog/the-hosebird-client-streaming-library

Что угловые скобки означают?

+6

Он указывает на [общий тип] (http://docs.oracle.com/javase/tutorial/java/generics/types.html), [Википедия] (http://en.wikipedia.org/wiki/ Generics_in_Java). – Lion

ответ

0

Это означает, что messages является экземпляром LinkedBlockingQueue, который работает над объектами типа String. См. Java's HashMap для другого примера и wikipedia для краткого введения в Generics в java.

+0

Благодарим вас за ответ. Это было полезно и указывало мне в правильном направлении. Извините, у меня пока нет достаточной репутации, чтобы ее повысить. –

3

Один из суперинтерфейсов BlockingQueue<String> - это коллекция. Это означает, что он реализует функциональность java.util.Collection, и он дает вам возможность использовать дженерики и делать коллекции cast-save! С родовым:

BlockingQueue<String> 

у вас есть только возможность работать с String, внутри BlockingQueue. Попробуйте добавить другое значение, и ваша IDE сообщит вам о несоответствии. Это большое преимущество, потому что проверка не выполняется во время выполнения вашего приложения.

+0

Благодарим вас за ответ. Для всех здесь представлена ​​документация для [java.util.Collection] (http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html) и [BlockingQueue] (http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html). –

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