title: Does reflection require that literal strings are written among the bytecode?
body: <p>When Java (or any language capable of reflection) outputs a program, does it keep the names of the methods as strings within the bytecode?</p>
  
  <p>I'm wondering how, for example, the following is possible without this being the case:</p>
  
  <pre><code>Class c = Class.forName("foo");
  Method m[] = c.getDeclaredMethods();
  </code></pre>
  
  <p>Will the bytecode then contain Strings of each method field and name within the class?  I'm wondering because I want to make sure all parts of my code are not easily read, without having to obfuscate everything.  If there is something fundamentally wrong with my understanding of reflection, please let me know.</p>