anchor.diff:  assertThat(foo.m(), is("bar"));
   ----
   
  +[[working-with-unloaded-classes]]
  +=== 操作没有加载的类
   
   [source,{java_source_attr}]
   ----
  
positive.code: new ByteBuddy().rebase(Foo.class)
  ----
  
  
  [source,{java_source_attr}]
  ----
  
negative.code:   .make();
  ----
  
  如果没有明确的命名会怎么样呢？Byte Buddy 与 http://en.wikipedia.org/wiki/Convention_over_configuration[约定大于配置] 息息相关，为你提供了我们认为比较方面的默认配置。至于类型命名，Byte Buddy 的默认配置提供了 `NamingStrategy`，它基于动态类型的超类名称来随机生成类名。此外，名称定义在与父类相同的包下，这样父类的包级访问权限的方法对动态类型也可见。如果你将示例子类命名为 `example.Foo`，那么生成的名称将会类似于 `example.Foo$$ByteBuddy$$1376491271`，这里的数字序列是随机的。这个规则的例外情况就是当子类是从 `java.lang` 包下的类扩展时，就是 `Object` 所在的包。Java 的安全模型不允许自定义类型存放在这个命名空间下。因此，默认命名策略下，这些类型名称将会冠以 `net.bytebuddy.renamed` 的前缀。
  
  默认行为也许对你来说并不方便。感谢约定大于配置原则，你总是可以根据你的需要来选择默认行为。这正是 `ByteBuddy` 的优越之处。通过 `new ByteBuddy()` 创建实例，你就创建了整套的默认配置。通过调用在这个配置上的方法，你就可以根据你的需要来订制它。让我们试试：
  
  [source,{java_source_attr}]
  ----
  