讨论:意外的发现,java中,是不是无法import默认包中的类?

jinxfei 2009-08-27 07:09:07
加精
假如有一个类,直接不加package,也就是属于默认包:


public class ClassInDefaultPackage {

public void doSomething(){
System.out.println("I am in default package.");
}
}


另外一个类,处于com包(或者任何非默认包),如何使用上面这个属于默认包的类?
package com;

import ??;
public class ClassInComPackage {

public static void main(String[] args){
ClassInDefaultPackage obj=new ClassInDefaultPackage();
obj.doSomething();
}
}


我试了,
import *;
import *.*;
import ClassInDefaultPackage;
都不行,Eclipse也无法自动引入。

是java特性规定无法引用默认包的类吗?


...全文
3301 115 打赏 收藏 转发到动态 举报
写回复
用AI写文章
115 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbendaidai518 2011-07-12
  • 打赏
  • 举报
回复
我遇到了这个问题,很棘手!
python5200000000 2011-07-10
  • 打赏
  • 举报
回复
早年的贴子,却解决了现在我java学习之路中前辈也曾同样经历的弯路了!
kimsung 2009-11-20
  • 打赏
  • 举报
回复 1
[Quote=引用 10 楼 bao110908 的回复:]
从 J2SE 1.4 开始,Java 编译器不再支持 import 进未命包名的类、接口。

详见 J2SE 1.4 与 J2SE 1.3 兼容性文档,第 8 点第二部分:

http://java.sun.com/javase/compatibility_j2se1.4.html

The compiler now rejects import statements that import a type from the unnamed namespace. Previous versions of the compiler would accept such import declarations, even though they were arguably not allowed by the language (because the type name appearing in the import clause is not in scope). The specification is being clarified to state clearly that you cannot have a simple name in an import statement, nor can you import from the unnamed namespace.

To summarize, the syntax

    import SimpleName;

is no longer legal. Nor is the syntax

    import ClassInUnnamedNamespace.Nested;

which would import a nested class from the unnamed namespace. To fix such problems in your code, move all of the classes from the unnamed namespace into a named namespace.

[/Quote]

学会了。。。
谢谢。
hfliyy 2009-10-20
  • 打赏
  • 举报
回复
我还以为发现新大陆了呢,这就像一个人没有名字,你怎么喊他?不是一个道理吗,这有什么奇怪的!!
zlllyk110 2009-09-02
  • 打赏
  • 举报
回复
利用ClassLoad类,轻松搞定!
gaoch_2000 2009-09-01
  • 打赏
  • 举报
回复
楼主你太厉害了,这都能发现。默认包下的类确实没有办法import,所以java强烈建议所有的类都要放在一定的包下面。或者说上面的原因和结果反一下。
wenfenshuma 2009-09-01
  • 打赏
  • 举报
回复
我遇到过这个问题
machiatto001 2009-09-01
  • 打赏
  • 举报
回复
之前也遇到过这样的问题,估计是一些漏洞吧?
sadfsdfgregfer 2009-09-01
  • 打赏
  • 举报
回复
看一看!!!!!!!!
学习!!!!
南南北北 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bao110908 的回复:]
至于为什么 unnamed package 还没有被去除掉?因为这可以很方便地编写一些小程序,也可以方便初学者进行学习。


http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.4.2
[/Quote]

你一天都学啥呢?这也知道.知识太全面了...
xiechunmei13 2009-08-31
  • 打赏
  • 举报
回复
我还真没遇到过这个问题。
因为我从来不放到默认包中。
学习了。
angel6709 2009-08-31
  • 打赏
  • 举报
回复
默认包不需要导入,已经导入了,,,,其实就是一个classpath的问题
jipq1234 2009-08-31
  • 打赏
  • 举报
回复
学习了 看来我的习惯还是挺好的
iosjoi 2009-08-31
  • 打赏
  • 举报
回复
受教了!
lifeiscool 2009-08-31
  • 打赏
  • 举报
回复
学习了
紫炎圣骑 2009-08-31
  • 打赏
  • 举报
回复
长见识了
MXL0207 2009-08-31
  • 打赏
  • 举报
回复
从来不用默认包。
wal812834184 2009-08-31
  • 打赏
  • 举报
回复
向高手们学习了啊!!!!!
chwoyaofei 2009-08-31
  • 打赏
  • 举报
回复
看到这个帖子后,立马试了下
果然细节决定成败
xzdylmh 2009-08-31
  • 打赏
  • 举报
回复
学习了
加载更多回复(93)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧