Best approach to tackle class naming collisions between namespaces
Asked Answered
C

1

6

I'm hitting a problem with a helper class I am working on to translate between 2 classes of the same name. Both classes are outside my scope of control, so I can't simply rename them.

My basic options all involve declaring the namespace in full for at least one of the types:

import com.myco.second.long.package.namespace.MyObject;
public class MyObjectConvertor {

    MyObject transform(com.myco.first.long.package.namespace.MyObject o) {}
}

Or the reverse approach:

import com.myco.first.long.package.namespace.MyObject;
public class MyObjectConvertor {

    com.myco.second.long.package.namespace.MyObject transform(MyObject o) {}
}

Or declaring both namespaces, for a more explicit pattern:

public class MyObjectConvertor {

    com.myco.second.long.package.namespace.MyObject 
        transform(com.myco.first.long.package.namespace.MyObject o) {}
}

Is there another solution that might tidy up these method signatures? I'm wondering if some kind of C++ "typedef" style solution might be possible?

Castara answered 4/7, 2011 at 11:41 Comment(0)
S
9

There's no way to tidy up the signatures, at least one class will have to be referenced by the fully qualified classname.

And in your special case, I'd even say: don't import any of those classes, use version 3 in your source code so everyone is fully aware, that your transforming classes with the same name that are defined in different packages.

Scarabaeoid answered 4/7, 2011 at 11:59 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.