Java上路08-包间互访
当类文件很多时,我们按类的功能划分,放到不同的文件夹里。此时类之间的互相调用涉及到包互访的问题。包,就是文件夹。比如我在C盘根目录有个带主函数的Test文件,一个External文件,一个internal文件夹,在文件夹里有个Internal文件。我要从Test中调用External,在External中调用Internal。如下,
Test.java文件:
class Test
{public static void main(String[] args){System.out.println("Test调用外部类Ext");External e=new External();e.show();}
}
External.java文件:
import internal.Internal; //导入和本类同级目录下的类public class External
{public voidshow(){System.out.println("这是外部Ext,调用内部的Int");Internal i=new Internal();i.show();}
}
Internal.java文件:
package internal; //需要指定所在包,才能被和此包同级的类访问到public class Internal
{public voidshow(){System.out.println("内部Int,被外部Ext调用");}
}
现在我想在Test中调用Internal,从Internal调用External,但是因为Java对于默认包的限制,不能从Internal中直接调用默认包中的External.class。所以我们需要给External一个包。
External文件:
package external;public class External
{public void show(){System.out.println("这是外部Ext,调用内部的Int");}
}
Internal文件:
package internal; //需要指定所在包,才能被和此包同级的类访问到
import external.External; //导入需要的类public class Internal
{public void show(){System.out.println("内部Int,被外部Ext调用");External e=new External();e.show();}
}
要想编译Test,须要首先存在Internal,要想编译Internal,须要首先存在External。
如果我们事先在根目录新建个external文件夹,在其中放入External.java文件是最容易理解的。我们不这样做,直接将External.java反正根目录,通过一个带参的编译命令也很容易完成这个动作。
这里我将默认包设为了e:\javatest。使用带-d参数的javac命令可以自动创建目录并将编译成的class文件放入。点空格和目录名空格的效果是一样的。
然后编译Internal文件,
再编译运行Test文件,
关于访问默认包下的类,整的我很凌乱。查找多方资料,说从 J2SE 1.4 开始,Java 编译器不再支持 import 进未命包(默认包)名的类、接口。非默认包(子包)中的类调用默认包里的类要用到反射。
我们修改三个文件,
编译中出现标注,略过,
Java上路08-包间互访相关推荐
- java包间通信,诊断Java代码: 消除包间的耦合关联[Java编程]
赞助商链接 本文"诊断Java代码: 消除包间的耦合关联[Java编程]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自 ...
- java包间通信,我想开个程序员餐厅
我想开个程序员餐厅 我真想开个程序员餐厅了,进门时先写代码再进,一楼餐厅分C包间.java包间.Linux/Unix包间-,搞开源软件的就坐大厅里,搞ruby的上二楼- 现在就来聊聊这餐厅的初期设想吧 ...
- 【java笔记】线程间通信(2):生产者和消费者案例分析
[java笔记]线程间通信(1):等待唤醒机制_m0_52043808的博客-CSDN博客 类: 资源类:包子类:皮,馅,有无 生产者: 包子铺类(线程类)(继承Thread) 设置线程任务(run) ...
- JAVA并发类包介绍
JAVA并发Apl介绍合集 1. java.util.concurrent包 1.1 Executors线程池 1.2 Queues队列 1.3 Concurrent Collections 1.4 ...
- Java 打 jar 包的几种方式详解
一.制作只含有字节码文件的 jar 包 只含有字节码文件,即只含有class文件的jar包制作,这是最简单的形式 1.最简单的jar包--直接输出hello 最终生成的jar包结构 META-INF ...
- java:程序包不存在的问题怎么解决
java:程序包xxxx不存在问题怎么解决 这个问题曾逼疯初学者的我.不过弄清楚原理后就很简单了. 出现这问题要么是没导入坐标,要么jar下载的时候出问题了.前者的话你在看看自己的代码. 后者的话有两 ...
- Java中jar包怎么使用_java中jar包的使用方法
java中jar包的使用方法 发布时间:2020-06-23 11:08:05 来源:亿速云 阅读:162 作者:Leah 这篇文章将为大家详细讲解有关java中jar包的使用方法,小编觉得挺实用的, ...
- java.util.concurrent包API学习笔记
newFixedThreadPool 创建一个固定大小的线程池. shutdown():用于关闭启动线程,如果不调用该语句,jvm不会关闭. awaitTermination():用于等待子线程结束, ...
- 【ArrayList】为什么java.util.concurrent 包里没有并发的ArrayList实现?
2019独角兽企业重金招聘Python工程师标准>>> 为什么java.util.concurrent 包里没有并发的ArrayList实现? 问:JDK 5在java.util.c ...
最新文章
- 关于常用mysql的文件
- 《企业软件交付:敏捷与高效管理精要》——3.8 结论
- VTK:小部件之ImagePlaneWidget
- volatile指令重排_有多少人面试栽到Volatile上?面试问题都总结到这儿了
- 为什么async/await方法不能有lock或Monitor
- 【Pandas】dataframe 设置完全显示所有列
- C语言线性表之单链表
- HDOJ1018 ( Big Number ) 【斯特林公式---处理阶乘及阶乘位数的问题】
- 基于Hexo+Node.js+github+coding搭建个人博客——基础篇
- feignclient url_Feign-自定义FeignClient
- 豆瓣电影爬虫Ⅱ 豆瓣电影数据的整理
- ToolScanner.java:8: 错误: 编码GBK的不可映射字符 //澹版槑绫? JAVA输出中文乱码
- 计算机职高会考知识,高职考试语文基础知识
- Excel表格导入校验
- 计算几何之 旋转卡壳 代码模板与证明
- 单引号与双引号的用法
- Windows10 运行 WSA
- 561. 数组拆分 I(javascript)561. Array Partition I
- LCD液晶显示屏闪屏问题解析
- 微信小程序时间加法_微信小程序日期转换、比较、加减