Interface default methods
June 24, 2014 Leave a comment
I am coding feverishly to complete a web interface to the JVM internals like memory, threads etc. This is my first set of default methods in an interface.
I have not read the JLS comparison between this and other inheritance mechanisms but this serves a purpose.
package com.memory.probe; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.util.AbstractQueue; import java.util.concurrent.ArrayBlockingQueue; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import org.apache.log4j.Logger; public interface Probe { Logger l = Logger.getLogger("generation.gc"); AbstractQueue<Long> abq = new ArrayBlockingQueue<Long>(100); default void connectJMXRemote(int port){ JMXServiceURL url; try { url = new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://localhost:" + port + "/jmxrmi"); JMXConnector jmxc = JMXConnectorFactory.connect(url, null); l.debug("Remote JMX connection is successful"); } catch (IOException e) { l.debug(getStackTrace(e)); } } default String getTrace(Throwable t){ return getStackTrace(t); } static String getStackTrace(Throwable t){ StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); t.printStackTrace(pw); return sw.toString(); } }