2014-07-16 3 views
0

Я читал исходный код для проекта GitHub (JClouds-Chef) и наткнулся на most peculiar looking Java:Ключевое слово 'из' в Java

Iterable<Module> modules = 
    ImmutableSet.<Module> of(new SshjSshClientModule(), new SLF4JLoggingModule(), 
     new EnterpriseConfigurationModule()); 

Что такое of? Как эта действительная Java? Есть of метод? Если да, то где это определено? Это какой-то странный, неясный Java-оператор, который вряд ли когда-либо используется? Это что-то странное, как лямбда? Я разрываю волосы, пытаясь понять, где это, что он делает, и где это определено!

+0

В java нет ключевого слова "из". Hmm – dharr

+1

https://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/ImmutableSet.html#of%28%29 – Ambrish

+1

Пожалуйста, избегайте нескольких вопросительных и восклицательных знаков, особенно при задании тривиальных вопросов , – AlexR

ответ

6

Это метод ImmutableSet (из Google Collections), конечно. Стационарный генератор <Module> отбрасывает вас? Он также должен работать без него, так как это можно сделать из начальной части, поэтому его можно было бы написать как ImmutableSet.of(...).

+0

Я думаю, что это пространство, которое меня бросило. Обычно я не писал «ImmutableSet». ('так что я бы не ожидал' ImmutableSet. of (' –

+0

Спасибо @ Kayaman (+1) - это было пространство для меня, а если бы это было' ImmutableSet. of (...) 'Я бы смотрел на него в течение 5 - 10 секунд, а затем понял это. Спасибо! – IAmYourFaja

+1

Просто будьте благодарны, что метод не был статически импортирован;) – Kayaman

3

Проверьте документацию here. Это общий статический метод. This Oracle tutorial может рассказать вам больше об этом.

Общие статические методы позволяют указать, что параметры или возвращаемые типы статических методов должны быть выведены или указаны при вызове метода.

Пример из учебника заключается в следующем:

public class Util { 
    // Generic static method 
    public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) { 
     return p1.getKey().equals(p2.getKey()) && 
       p1.getValue().equals(p2.getValue()); 
    } 
} 
Смежные вопросы