title: How is <class>::new a Runnable?
body: <p>This is a contrived code example but based on a real world testing scenario from an Android project. It involves using class constructors to determine the validity of the class (ensure its in the correct state to be used). In this case just checking that the class constructor does not throw an exception before returning an instance of the class:</p>
  
  <pre><code>public class MyTestClass {
  
      private MyTestClass() {
         // Some code which might throw an exception
      }
  
      public static MyTestClass getInstance() {
         if (tryClassConstructor(MyTestClass::new)) {
            return new MyTestClass();
         }
         return null;
      }
  
      private static boolean tryClassConstructor(Runnable condition) {
         try {
             condition.run();
         } catch (ArithmeticException ex) {
             return false;
         }
         return true;
      }
  }
  </code></pre>
  
  <p>I understand that getInstance() is passing a constructor method reference (MyTestClass::new) to its tryClassConstructor() method, but that method expects... a Runnable. So does this mean class default constructors are by default Runnable? </p>