用import时的问题???????????????

eagle008 2003-09-09 09:53:51
定义了如下的类似类
//: package com.test
//Test.java
package com.test;
public class Test {
public void Test(){}
public static prt(String str){
System.out.println(str);
}
}
--------------------------------------------------------------------------
//a.java
import com.test.Test;
public class a{
public static void main(String[] args){
Test x=new Test();
Test.prt("abcdefg");
}
}
--------------------------------------------------------------------------
在用import导入时为什么用: import com.test.*; 时不出错;
而用: import com.test.test时就不出错;
如果在com目录下也有一个Test类那么它是用的哪一个Test类


...全文
74 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pxboy 2003-09-12
  • 打赏
  • 举报
回复
存在两个Test类,编译器分不清你到底是要构造哪一个,
com.bruceeckel.tools.Test a =new com.bruceeckel.tools.Test();
要这样才行
alemjann 2003-09-12
  • 打赏
  • 举报
回复
同意楼上
casemy 2003-09-12
  • 打赏
  • 举报
回复
一个package实际上就是一个目录,import xxx.*只能导入该目录下的.class文件,如果该目录下还有子目录,只能import xxx.xxx
你得a.class应该在com/test/test目录下所以只能import com.test.test
eagle008 2003-09-12
  • 打赏
  • 举报
回复
up
eagle008 2003-09-10
  • 打赏
  • 举报
回复
//: com\bruceeckel\tools目录下的Test.java
//
package com.bruceeckel.tools;
public class Test {
public void Test() {
System.out.println("com.bruceeckel.tools.Test");
}
public static void rint(Object obj) {
System.out.print(obj);
}
public static void rint(String s) {
System.out.print(s);
}
public static void rint(char[] s) {
System.out.print(s);
}
public static void rint(char c) {
System.out.print(c);
}
public static void rint(int i) {
System.out.print(i);
}
public static void rint(long l) {
System.out.print(l);
}
public static void rint(float f) {
System.out.print(f);
}
public static void rint(double d) {
System.out.print(d);
}
public static void rint(boolean b) {
System.out.print(b);
}
}


//:com\bruceeckel\Test.java
package com.bruceeckel;

public class Test {
static int i=0;
private int b;
public void Test() {
System.out.println("com.bruceeckel Test Class Test Method");
}
}


//:Test1.java

import com.bruceeckel.tools.*;
import com.bruceeckel.*;

public class Test1 {
public static void main(String[] args) {
Test a =new Test();
Test.rint(true);
a.rint(" abc");
System.out.println("");
}
}


错误提示:
D:\JFile\Test\Test1.java:8: 不能解析符号
符号:构造方法 Test ()
位置:类 in Test
Test a =new Test();
^
D:\JFile\Test\Test1.java:9: 不能解析符号
符号:方法 rint (boolean)
位置:类 in Test
Test.rint(true);
^
D:\JFile\Test\Test1.java:10: 不能解析符号
符号:方法 rint (java.lang.String)
位置:类 in Test
a.rint(" abc");
szzhfsz 2003-09-10
  • 打赏
  • 举报
回复
你的这个是大包里的小包,import com.test.*;不能够把大包(test)里面的小包(test)d导入,只能够把大包(test)里面直接的工具导入,也就是说,大包里面的小包是无法直接导入的,必须直接导入这个小包。我想你的问题就是这个原因!
zhirenshao 2003-09-10
  • 打赏
  • 举报
回复
你把错误放出来看看。

你的com.test这个package里还有别的类吗,说不定是com.test里别的类和a.java里某个类名字重复了,这样,当你只导入 com.test.Test的时候工作正常,但你导入整个package的时候就会出错。

我这个只是猜想,最好把错误信息贴出来看看
eagle008 2003-09-10
  • 打赏
  • 举报
回复
写错了应该是:
在用import导入时为什么用: import com.test.*; 时出错;
而用: import com.test.test时不出错;
eagle008 2003-09-10
  • 打赏
  • 举报
回复
up
cusor 2003-09-10
  • 打赏
  • 举报
回复
[red][/red]这些就不必看了,我以为支持的,呵呵。
cusor 2003-09-10
  • 打赏
  • 举报
回复
那时肯定要出错的。
public class Test1 {
public static void main(String[] args) {
[red]com.bruceeckel.tools.Test[/red] a =new Test();
//或[red]com.bruceeckel.Test[/red]
Test.rint(true);
a.rint(" abc");
System.out.println("");
}
}
miaoliujun 2003-09-09
  • 打赏
  • 举报
回复
当然是test里面的test了
假如你在import com.test.*; 中可以,而在import com.test.test中不可以(需要说明的是第2个test的大小写!!!!),那么是不是你要引用的一个object是不是在com.test的其他子包中?

62,615

社区成员

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

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