A synthetic class (or method) is a class (or method) that is generated by the compiler. For example, if you create an anonymous inner class in your code, like this:
Sun's Java compiler will create two class files when you compile this: MyClass.class and MyClass$1.class. The second one, with the $1, is a class that the compiler generates for your anonymous inner class.
Normally you don't need to deal with synthetic classes or methods when you're a Java programmer.