.class文件可以new 吗?

bloodrate 2007-12-20 11:11:05
以前经常写这样的程序:
class c1{
}
---------c1.java-------

class c2{
public static void main(){
c1 myc1=new c1();
}
}
---------c2.java-------

然后编译带main函数的类,得到c2.class和c1.class,运行c2.class

但是现实中往往c1对其他人也有用,此时c1已经编成class了,那么另一个人在c3里面还可不可以new c1??

我在写代码的时候发现一个问题,在lib里面引用都是第三方写好的class文件,但是在自己的代码中可以直接new,我就不明白了,编译器能认识class文件么?还分析出里面的方法和参数??另外我写的JAVA文件在SRC目录下,我尝试把一个包里的class文件考到SRC下和我写的JAVA文件并列放置,class文件显示不出来,也不能NEW了。莫非lib目录对class文件有特殊的解释能力?

有人说class文件只能用class.forName()运行时加载,可是确实经常new,这是怎么个原理?
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACCP4_0 2007-12-21
  • 打赏
  • 举报
回复
我先回答你的问题1(编译器能认识class文件么?)
因为第三方的.class文件你用了import关键字那么jvm就会把你的类加载到内存以及这个类下的所有方法
不过方法都是虚的,所以应叫虚方法. 而你的new 是在内存中创建一块连续的区域jvm具有解析.class文件的能了
不管你放在什么地方只要是import包名.类名就是可以的
newflypig 2007-12-21
  • 打赏
  • 举报
回复
class文件不是new出来的,对象是new出来的,就像你上面例子中的myc1是new出来的,class文件是JVM编译出来的,如果JVM找到现成的class文件则直接到这个字节码文件中找这个类的相关信息,如果找不到class文件则找对应文件夹(包)中的java文件从而编译成class文件
老紫竹 2007-12-21
  • 打赏
  • 举报
回复
class 文件就是字节码的类文件,当然是用来new的啦。
只要你的编译器能够在 classpath 找到你new的对象就可以。
所以import 就很重要,你要告诉编译器,你要使用哪些类。

集成编译器会替你把您引入的包自动放到classpath里面,所以,你只要import就可以用了。

62,623

社区成员

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

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