Skip to content

Instantly share code, notes, and snippets.

@JoshRosen
Created July 11, 2012 01:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JoshRosen/3087424 to your computer and use it in GitHub Desktop.
Save JoshRosen/3087424 to your computer and use it in GitHub Desktop.
Do Scala type parameter names matter?
public class JavaTypeParamNamespace {
public static void main(String[] args) {
// This should compile:
new MyClassRenamedTypes<Integer>().map(1, new MyArgument<String>("String"));
// This fails with the error
// JavaTypeParamNamespace.java:8: <U>map(U,MyArgument<U>) in MyClass<java.lang.Integer> cannot be applied to (int,MyArgument<java.lang.String>)
new MyClass<Integer>().map(1, new MyArgument<String>("String"));
}
}
trait MyTrait[T] {
def map[U](t: T, u: MyArgument[U]) : MyArgument[U] = u
}
class MyArgument[U](u: U) {}
class MyClass[U] extends MyTrait[U] {}
class MyClassRenamedTypes[U2] extends MyTrait[U2] {}
object MyClass {
def main(args: Array[String]) {
new MyClass[Int].map(1, new MyArgument("String"))
new MyClassRenamedTypes[Int].map(1, new MyArgument("String"))
}
}
@JoshRosen
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment