ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

idea中分不清什么时候该新建类,什么时候需要新建包,还有包名为什么要那么多层级,idea设置打开文件时左侧目录自动展开并高亮定位

idea中分不清什么时候该新建类,什么时候需要新建包,还有包名为什么要那么多层级,idea设置打开文件时左侧目录自动展开并高亮定位

在IDEA中,包(Package)是用于逻辑分类的文件夹,类(Class)是具体代码文件。


新建包用于组织相关功能(如bean放实体类,source放数据源),而类必须放在包内。


Access类独立建包是为了遵循分层架构,实现职责分离,便于复用与维护。


包名采用“域名倒写”规范(如com.pk.flink.bean)可避免类名冲突,确保全局唯一。


开启“AlwaysSelectOpenedFile”后,打开文件时左侧目录会自动展开并高亮定位,提升开发效率。

idea中分不清什么时候该新建类,什么时候需要新建包,还有包名为什么要那么多层级。


Flink自定义单并行度数据源,用到一个自定义类Access,这个类为什么要新建一个包,我还以为单独建一个类就行。

package com.pk.flink.source; import com.pk.flink.bean.Access; import org.apache.flink.streaming.api.functions.source.SourceFunction; import java.util.Random; //自定义数据源 public class AccessSource implements SourceFunction<Access> { boolean isRunning = true; @Override public void run(SourceContext<Access> ctx) throws Exception { //产生数据 Random random = new Random(); String[] domains = {"pk1.com","pk2.com","pk3.com"}; //循环产生数据 while (isRunning) { long time = System.currentTimeMillis(); //向外发数据 ctx.collect(new Access(time,domains[random.nextInt(domains.length)],random.nextInt(1000)+1000)); //减速 Thread.sleep(200); } } @Override public void cancel() { isRunning = false; } }

这绝对是前端转 Java(尤其是刚开始用 IDEA)最经典的困惑之一。在你眼里,建个.js或.vue文件直接放在文件夹里就行了,怎么到了 Java 里,非得搞出这么多层级和“包”?

我们用前端思维来给你彻底理清这两个概念:

🧠 包(Package) vs 类(Class)

  • 包(Package)=文件夹(Directory)。它纯粹是为了做逻辑分类,解决文件太多找不着的问题。

  • 类(Class)=前端的一个具体的代码文件(如index.js或Button.vue)。里面写着真正的业务逻辑。

在 Java 里有一个铁律:你只能在“包”里面新建“类”,而不能直接在一个空文件夹里建类。所以 IDEA 才会频繁让你 New Package。


🎯为什么Access要单独建一个bean包?

在 Java(特别是大数据领域),我们非常讲究“分层架构”和“职责单一”。

如果你把Access类和AccessSource类全都塞在同一个包里,就好比你在前端把“全局状态管理(Vuex/Redux)”、“公共工具函数”和“具体的页面组件”全扔在同一个文件夹里,项目一旦变大,绝对是灾难。

企业级 Java 项目的标准包结构是这样的:

  • com.pk.flink.bean:专门放实体类(POJO)。Access只是用来承载数据的“容器”(包含时间、域名、流量),它没有任何业务逻辑,所以放在bean(豆子/实体)包里。

  • com.pk.flink.source:专门放数据源相关的类。比如AccessSource负责产生数据。

  • com.pk.flink.sink:专门放输出相关的类。

  • com.pk.flink.transform:专门放数据转换(算子)相关的类。

结论:把Access放在bean包里,是为了告诉其他程序员:“这是一个纯数据模型,全项目到处都可以复用它”。如果你把Access写在AccessSource里面(作为内部类),那其他类想用这个数据结构就抓瞎了。


❓ 为什么包名非要写成com.pk.flink这种一堆层级的格式?

这就是Java 的“域名倒写”规范,主要是为了防止类名冲突。

  • 前端防冲突:用import或者 npm 包名(比如@vue/core、lodash)。

  • Java 防冲突:假如你写了一个Access类,阿里的大佬也写了一个Access类。如果大家都放在一个叫bean的包里,代码一合并,系统直接崩溃(同名类冲突)。

为了解决这个问题,Java 强制要求使用“公司域名倒写 + 项目名 + 模块名”作为包名:

  • com.pk:代表你们的公司/组织(假设你叫 pk)。

  • flink:代表这个项目叫做 flink 学习项目。

  • bean:代表这是实体类模块。
    这三层加起来com.pk.flink.bean.Access,就是你这个类的全球唯一身份证号(全限定名)。这样就算别人也写了Access,只要前缀不一样(比如com.alibaba.xxx.Access),就不会冲突。


💡 总结:实操时怎么判断?

  1. 新建包(Package):当你觉得“这一类功能应该单独放一起了”。比如今天要写三个数据源,那就新建个source包。明天要写连接 MySQL 的工具,就新建个utils包。

  2. 新建类(Class):只要你要写一段具体的代码逻辑(一个 Java 文件),就新建类。一个类只干一件事,名字首字母大写。

前端思维类比:
com.pk.flink.bean.Access其实就是前端里的src/components/common/Access.ts。
com.pk.flink.source.AccessSource其实就是前端里的src/services/AccessSource.js。
这就很好理解了吧?


像在VScode中,已经打开的文件,默认的文件目录也是展开的,idea中,已经打开的文件,怎么设置其文件目录展开并高亮


在 IDEA 里要实现这个效果,核心功能叫“Always Select Opened File”(始终选择打开的文件)。开启后,当你切换到任意代码文件时,左侧的 Project 目录树就会自动展开、滚动并高亮定位到该文件的位置。

设置方法很简单,在左侧的 Project 面板上操作:

  1. 找到齿轮图标:在 Project 面板的右上角,找到一个齿轮形状的设置图标(⚙️)并点击。

  2. 勾选选项:在弹出的菜单里,找到并勾选“Always Select Opened File”(始终选择打开的文件)。

补充:如果用的是比较旧的 IDEA 版本,这个选项可能叫“Autoscroll from Source”(从源代码自动滚动)。

另外,IDEA 默认可能会把高亮的文件停留在面板边缘。如果希望它能尽量居中显示,可以在同一个齿轮菜单里一并勾选“Center editor on selected file”或类似选项,让定位更精准。

你找错地方啦,那个搜索框是在“按键映射”里搜快捷键,并不是开启功能的地方。

要开启“自动定位高亮”,请按照以下步骤操作:

🎯 正确开启方法

  1. 找到 IDEA 左侧的Project(项目)面板。

  2. 点击面板右上角的三个点(⋮)或齿轮图标(⚙️)。

  3. 在弹出的菜单中,选择Behavior(行为)-> 勾选Always Select Opened File(始终选择打开的文件)。


⚠️ 如果勾选后还是没效果,检查这 3 点

  1. 视图模式不对:检查 Project 面板顶部的下拉框,确保当前是Project视图,而不是Project Files、Open Files等其他模式。

  2. 节点折叠:如果你打开了文件,但目录树没有自动展开,可以勾选同一菜单下的Expand collapsed nodes when scrolling to element(滚动到元素时展开折叠的节点)。

  3. 缓存卡顿:如果以上都试了还是不行,可能是 IDEA 缓存卡住了。点击顶部菜单File->Invalidate Caches...-> 勾选Clear file system cache and Local History,然后点击Invalidate and Restart重启 IDEA。


💡 备用技巧

💡 终极快捷大法(不用找菜单)

如果你实在找不到那个齿轮在哪,直接记住这个快捷键,一秒搞定:
光标放在你正在编辑的代码上,按下Alt + F1,然后在弹出的菜单里按回车选择Project View。左侧目录树会立刻展开并高亮定位到当前文件。

(如果你觉得每次按Alt + F1太麻烦,再回头去仔细找找左侧 Project 面板顶部的齿轮菜单吧~)

  • 快捷键定位:无论设置有没有生效,随时按Alt + F1,然后选择Project View,就能立刻在左侧目录树中定位并高亮当前文件。

  • 全局动作搜索:按Ctrl + Shift + A,输入Always Select Opened File回车,也能直接触发这个设置。

    都不是!你截图里的这些(演示模式、免打扰模式、全屏等)是调整整个 IDEA 窗口外观的,和左侧文件目录的自动展开、高亮毫无关系。

    你点错菜单了。请按照下面这张“寻路指南”找:

    🎯 正确的操作位置

  • 看你 IDEA 的最左侧边缘,有一列竖着的标签,点击最上面的Project,让文件目录树显示出来。

  • 把鼠标放到文件目录树的最顶部(就是写着Project的标题栏,或者在它右侧的一排小图标里)。

  • 找到一个齿轮图标 ⚙️,或者三个点 ⋮,或者一个小箭头∨,点击它。

  • 在弹出的菜单里,找到并勾选“Always Select Opened File”(中文版可能叫:始终选择打开的文件或从源代码自动滚动)。

🎉 太棒了!恭喜成功找到并开启!

这就是 IDEA 里最经典的“神级操作”之一。这个选项勾选后,你的 IDEA 体验就会非常接近 VSCode 了:只要你在右侧点开任何一个 Java 文件,左侧的目录树就会像装了追踪器一样,自动展开并高亮对应的文件路径,再也不用自己去一层层点开找了。

给你的探索精神点赞 👍!IDEA 的设置项确实非常多,有时候藏得比较深。后续在跟着视频写 Flink 代码的过程中,如果还遇到类似 IDEA 操作习惯或者配置上的疑惑,随时发截图,我来帮你一起“寻宝”!继续加油!🚀

视图模式不对:检查 Project 面板顶部的下拉框,确保当前是 Project 视图,而不是 Project Files、Open Files 等其他模式。这是什么意思,没看到视图模式有这些选项


哈哈,这里是个超级大乌龙!是我之前的表述有歧义,加上 IDEA 的中文翻译有点“坑”,让你找错地方了。

你截图里点开的“视图模式”,指的是这个面板在屏幕上怎么摆放(是固定挂在左边、悬浮在窗口里、还是独立成一个窗口)。这和文件怎么显示毫无关系。

我之前说的“视图模式不对”,指的是面板左上角那个下拉框。

🎯 真正的“下拉框”在这里:

看你截图的最左上角,有一个写着“项目 ∨”的地方(或者是一个类似小方块的图标)。
点击那个倒三角∨,你才会看到真正的下拉菜单:

  • 项目 (Project):默认模式,按真实的文件夹层级展示(也就是你现在的状态,最推荐)。

  • 项目文件 (Project Files):混合展示,有时会把隐藏文件也弄出来。

  • 包 (Packages):把所有 Java 包拍平显示,不显示文件夹层级。

  • 打开的编辑器 (Open Files):这个最坑!如果你选了这个,左边就只有你当前打开的几个文件,没有目录树。没有目录树,你刚才勾选的“始终选择打开的文件”自然就没有展开和高亮的效果了。


💡 为什么我刚才会提醒你检查这个?

因为如果你把左上角切成了“打开的编辑器 (Open Files)”,左侧就变成类似 VSCode 的“已打开文件”列表了。
在这种情况下,你无论怎么开启“始终选择打开的文件”,它都不会自动展开目录,因为目录树根本不存在。

只要你左上角的下拉框选的是“项目 (Project)”,并且刚才勾选了“始终选择打开的文件”,那你的 IDEA 就已经完美变身 VSCode 模式了,放心用吧!

不是你说,我都没发现这里是选视图模式的意思


这个下拉框的提示(∨)确实做得非常小,而且平时大家点开后,很少会去切换它,所以特别容易被忽略。

既然你截了完整的图,我顺便用前端/后端的视角,给你“翻译”一下这几个选项到底是干嘛的,这样你以后找文件就完全不会迷路了:

🗂️ 视图模式大解密(它们有什么区别?)

  1. 项目 (Project) —— 你当前选的(最推荐)

    • 特点:完全按照真实文件夹层级显示,最直观。

    • 前端类比:就像 VSCode 左侧的默认资源管理器。你写代码绝大部分时间用这个就够了。

  2. 软件包 (Packages) —— Java 程序员最爱

    • 特点:把中间空的文件夹“拍平”折叠起来。比如src/main/java/com/pk/flink/basic,它只显示最后一级。如果你的包名很深,用这个视图能省很多点击次数。

    • 前端类比:相当于把src/components/ui/buttons/PrimaryButton.vue简化显示为.../PrimaryButton.vue。

  3. 项目文件 (Project Files)

    • 特点:把平时隐藏的乱七八糟的配置和编译文件都给你看(比如.idea文件夹里的东西)。一般不用。

  4. 生产 / 测试 (Production / Tests)

    • 特点:按代码用途分类。只显示src/main里的生产代码,或者只看src/test里的测试代码。

  5. 打开文件 (Open Files) —— 就是之前说的“坑”

    • 特点:只显示你当前在右边打开了哪几个文件。

    • 前端类比:非常像 VSCode 顶部的“已打开的编辑器”列表。如果切到这个模式,左面板就不显示目录树了,你之前设置的“始终选择打开的文件”就失去了意义。

  6. 临时文件和控制台

    • 特点:这是 IDEA 自带的“草稿本”(Scratch files),可以在这里随便写点临时笔记或测试代码,不用存在项目里。


🎯 结论

只要你左上角保持选中“项目”,并且刚才勾选了“始终选择打开的文件”,你的 IDEA 用起来就已经和 VSCode 一样丝滑了。

如果以后你觉得项目目录太长(比如src/main/java/com/pk/flink占用了好几行),可以偶尔切到“软件包”模式,会有意想不到的清爽感。继续愉快地写代码吧!🚀

返回列表