不好意思,突然想到这个问题.
这样规定有什么好处吗?
这样规定有什么好处吗?
解决方案 »
- 下面是实现了部分功能的画图工具,每次都覆盖了前面的图,为什么
- 怎样把自己写的类打包成jar,供其他程序调用。
- 有没有知道显示JVM内存设置的JAVA命令.就是显示Xmx,-Xms 那几个参数是多少的命令.不是设置.是显示.查看哦.
- 如何用Java语言实现打印九九乘法表
- 为什么数组元素是从0开始的,result.getstring是从1开始的?
- 如果文件里既有图片又有文字,怎么把它读到数据库里,又把它从数据库里拿出来显示呢?有相应的源代码吗
- JNI 谁能给讲讲,比如俺要去本机CPU
- 求一个基于http的文件传输工具,500分
- jdk文檔問題
- VSS的客户端安装程序netsetup我的VSS里怎么没有呢???
- Think in java 的一个例题,有些不明白,望高手指教。。。
- 请教高手:java里面的数组机制
(1) 如果B.java中是public class A, 那么编译后生成A.class还是B.class
(2) ClassLoader根据package名及class名(如class A, 但文件名是B.class)得到Class对象, 就得先在文件中去搜索了,效率差了很多
楼上误解了..
kingfish(POWER OF JAVA ) 是在举例子給楼主呢!!
个人觉得会引起混乱,导致效率低
(1) 如果B.java中是public class A, 那么编译后生成A.class还是B.class。
------------------------------
好像不对,既然是一个类class,当然是A.class。
就算B.java中还有class B,class C,也是没有问题的,它就生成三个字节码文件:A.class B.class C.class。
kingfish(POWER OF JAVA) 只是打个比方,推理一下如果这样会造成什么样的混乱!不过楼上的说的很好!
如:A.java:public class A{
public static class B{
}
}
那么编译出来就有2个class文件,A.class,A$B.class
->如果B.java中是public class A, 那么编译后生成A.class还是B.class
(1)如果仅不强行规定主类名与文件名一致的话,那不论文件名是什么,只要你有public class A,
编译后生成的当然是A.class. ->ClassLoader根据package名及class名(如class A, 但文件名是B.class)得到Class对象,
->就得先在文件中去搜索了,效率差了很多
(2)这条不至于吧, 编译结果应该仍可以与类名一致呀.
to donnyfox(唐朝):
"既然是一个类class,当然是A.class", 这个显然是基于以类名命名class文件名基础上
既然楼主讨论这个问题,我们也可以讨论开来,比如文件名与类名没什么直接关联
to Dan1980(也该有一些作为了):首先说明一下,2个星星什么都不代表,除了代表在csdn浪费了很多时间
所以不要为了这个改变你的看法. 另外你说的"与JAVA的隐藏机制和开源策略有关"我也赞同,但我觉得
最重要的是根据class名找到那个class文件,并不是所有的java应用都开源to yedi_chu(夜帝): 楼主,可能我对你的标题理解与你的本意不一致.
我1楼的看法是建立在文件名与类名没什么关联的基础上的,比如A.class中不一定是class A其实这也没啥好讨论的,列举一下好处与坏处, 显然是好处多. 加之是"乌龟的屁股"--规定.
那些人厌烦了在数十万行c程序中找一个函数调用的定义(也就是源代码,我想大家想象下80万行代码被几批人改来改去是什么样子就可以估计出来)。我认为他们不太喜欢用ide,那时候的ide也没有现在那么发达
所以他们在设计java的时候就把package和目录对应,类名和文件名对应,设定import机制,让你不借助ide可以迅速定位到这个类的src
说public类必须和文件名一致有些不恰当,应该是所有外部类都应和文件名一致
编译后也是相同的class名,可能是便于搜索,jvm是一个lazy loading的机制。
其实java的优点在于他是一个确定的语言,省去了很多不必要的特性(或者说麻烦)..