Raw types in Java are legacy generic types used without type parameters. They can interoperate with generic code (A is correct) and require explicit casting at runtime (C is correct). They do NOT take type parameters (B is incorrect - that's what makes them 'raw'), and they do NOT provide type safety (D is incorrect - raw types bypass generic type checking). Raw types exist mainly for backward compatibility with pre-Java 5 code.