title: How assign a method reference value to Runnable
body: <p>I hava a problem about Java 8 <code>Runnable</code>.</p>
  
  <pre><code> public static void main(String[] args) {
      Runnable r1 = Test::t1;
      Runnable r2 = Test::t2;
      Runnable r3 = Test::t3;
  }
  
  public static void t1() {
  
  }
  
  public static String t2() {
      return "abc";
  }
  
  public static String t3(String t) {
      return t;
  }
  </code></pre>
  
  <p>As the code show, I understand <code>r1</code> is right and <code>r3</code> is wrong, but I don't understand why <code>r2</code> is also right. Can anybody help me understand it?</p>