Nikolaus Hartlieb
Nikolaus Hartlieb

Reputation: 339

Groovy to Java Code

I know that such "general" questions shouldn't be asked, but can someone help me translate the following code from Groovy to Java. My main problem is, that I really do not know which datatypes in Java are similar to the ones of Groovy. Any help is welcome!

Many thanks!

  def registrations = [:]

  public void register(Class clazz, MessageListener listener) {
      def listeners = registrations.get(clazz)
      if (!listeners) {
          listeners = [] as Set;
          registrations.put(clazz, listeners)
       }
       listeners << listener
   }

Upvotes: 2

Views: 1157

Answers (3)

Stmated
Stmated

Reputation: 495

It would be something like this (untested):

Map<Class, Set<MessageListener>> registrations = new HashMap<Class, Set<MessageListener>>();

public void register(Class clazz, MessageListener listener) {
    Set<MessageListener> listeners = registrations.get(clazz);
    if (listeners == null) {
        listeners = new HashSet<MessageListener>();
        registrations.put(clazz, listeners);
     }
     listeners.add(listener);
 }

Upvotes: 3

tim_yates
tim_yates

Reputation: 171054

Not an answer to the question (@Stmated has that covered), but if this is for a comparison to compare Groovy and Java, I believe your Groovy code could be better:

def registrations = [:].withDefault { [] as Set }

public void register(Class clazz, MessageListener listener) {
  registrations[ clazz ] << listener
}

Upvotes: 2

Michael Borgwardt
Michael Borgwardt

Reputation: 346240

Simply use java.util.HashMap and java.util.HashSet for registrations and listeners respectively.

Upvotes: 1

Related Questions