tags:

views:

61

answers:

2

I want to import these two classes, both named Query - one a JDO class, the other a JPA class, to use in different methods in the same class.

import javax.jdo.Query;
import javax.persistence.Query;

Is there a way to globally import both of them at the same time at the top of the file?

+10  A: 

I'm afraid, no. But you don't have to import class to use it: just reference one of the classes by its full name, like

javax.jdo.Query query = getJDOQuery();
query.doSomething();

Then you can import another without name collisions.

BTW, sometimes if you start getting lots of such name such collisions in your class, it's a subtle hint for refactoring: splitting functionality of one big class between several small ones.

Nikita Rybak
+1  A: 

The only purpose of an import statement is to establish a shorthand alias for a fully-qualified name. If you were allowed to imported both, you'd create an ambiguity that would require type inference to resolve, and make your code extremely difficult to read.

erickson
Not if you could say, for example, `import javax.jdo.Query as jdoQuery;``import javax.persistence.Query as jpaQuery;`
Ment
@Ment - well, the Java language does not allow that, and it doesn't support the equivalent of `typedef` either.
Stephen C
Sure, that would be cool, but it doesn't work that way (yet).
erickson