Declared in the same class, they are override-equivalent and will cause a compilation error.
From the Java Language Specification
It is a compile-time error to declare two methods with override-equivalent signatures in a class. 
where 
Two method signatures m1 and m2 are override-equivalent iff either m1
  is a subsignature of m2 or m2 is a subsignature of m1.
and
The signature of a method m1 is a subsignature of the signature of a method m2 if either: 
- m2 has the same signature as m1, or
- the signature of m1 is the same as the erasure (§4.6) of the signature of m2.
The bolded case is the problem here. 
The erasure of Class<?> is Class. 
Is there any difference between void f(Class c) and void f(Class c) in Java?
From a caller's perspective, no. Within the body of the method, yes. In the first case, the parameter has the raw type Class. In the second case, the parameter has the parameterized type Class<?>.