开发者

Best approach to tackle class naming collisions between namespaces

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.namespac开发者_开发知识库e.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?


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜