当前位置: 首页 > wzjs >正文

国内大中型网站建设知名公司成都做网络推广的公司有哪些

国内大中型网站建设知名公司,成都做网络推广的公司有哪些,公司手机网站模板,有专业制作网站的公司吗文章目录 一、module-info.java 的所有关键字1. 模块定义关键字2. 依赖声明关键字3. 包导出关键字4. 服务相关关键字5. 反射访问关键字 二、关键字表三、关键字的搭配与实际场景1. 依赖与导出2. 服务提供与消费3. 反射控制 四、注意事项五、完整示例六、总结 一、module-info.j…

文章目录

      • 一、module-info.java 的所有关键字
        • 1. 模块定义关键字
        • 2. 依赖声明关键字
        • 3. 包导出关键字
        • 4. 服务相关关键字
        • 5. 反射访问关键字
      • 二、关键字表
      • 三、关键字的搭配与实际场景
        • 1. 依赖与导出
        • 2. 服务提供与消费
        • 3. 反射控制
      • 四、注意事项
      • 五、完整示例
      • 六、总结

一、module-info.java 的所有关键字

在 Java 模块化系统(JPMS)中(jdk9后的新特性),module-info.java 文件使用以下关键字来定义模块的结构、依赖和服务。以下是按照功能分组的列表:

1. 模块定义关键字
  • module

    • 作用:定义模块的名称,标志模块声明的开始。

    • 语法:module <模块名> { … }

    • 示例:

      module com.example.myapp {// 模块内容 }
      
    • 说明:模块名通常遵循反向域名规则(如 com.example.myapp),是模块的唯一标识。

2. 依赖声明关键字
  • requires

    • 作用:声明当前模块依赖的其他模块。

    • 语法:requires [修饰符] <模块名>;

    • 修饰符(可选):

      • transitive:依赖是传递的,依赖当前模块的模块也会自动依赖它。
      • static:依赖是可选的,编译时需要,运行时可以没有。
    • 示例:

      module com.example.myapp {requires java.base;         // 默认依赖基础模块   requires transitive java.sql; // 传递依赖    requires static java.logging; // 可选依赖 
      }
      
    • 说明:java.base 是所有模块的默认依赖,无需显式声明。

3. 包导出关键字
  • exports

    • 作用:声明当前模块的某个包可以被其他模块访问。

    • 语法:

      • exports <包名>;(开放给所有模块)
      • exports <包名> to <模块名列表>;(限制给特定模块)
    • 示例:

      module com.example.myapp {exports com.example.myapp.api;           // 开放给所有模块    exports com.example.myapp.util to com.example.client; // 仅限特定模块 
      }
      
    • 说明:

      • 包必须存在于模块中,否则编译报错。
      • 未导出的包对外部模块不可见。
4. 服务相关关键字
  • provides

    • 作用:声明当前模块为某个服务接口提供具体实现。

    • 语法:provides <接口全限定名> with <实现类全限定名>;

    • 示例:

      module com.example.myapp {    provides com.example.service.MyService with com.example.myapp.MyServiceImpl; 
      }
      
    • 说明:

      • 与 with 配合使用,指定实现类。
      • 表示模块是服务提供者,供其他模块通过 ServiceLoader 加载。
  • with

    • 作用:配合 provides 使用,指定服务接口的具体实现类。

    • 语法:出现在 provides 语句中,with 后接实现类的全限定名。

    • 示例:

      provides javax.tools.JavaCompiler with com.example.myapp.MyCompiler;
      
    • 说明:

      • 实现类必须是接口的合法实现(实现接口或继承抽象类)。
      • 可以为一个接口提供多个实现,用多个 with 分隔。
  • uses

    • 作用:声明当前模块使用某个服务接口,期待其他模块提供实现。

    • 语法:uses <接口全限定名>;

    • 示例:

      module com.example.myapp {    uses com.example.service.MyService; 
      }
      
    • 说明:

      • 表示模块是服务消费者,通过 ServiceLoader 加载接口实现。
      • 常与 provides 配合使用,形成服务提供-消费模式。
5. 反射访问关键字
  • opens

    • 作用:声明某个包对反射开放,允许其他模块在运行时通过反射访问。

    • 语法:

      • opens <包名>;(开放给所有模块)
      • opens <包名> to <模块名列表>;(限制给特定模块)
    • 示例:

      module com.example.myapp {    opens com.example.myapp.data;            // 开放给所有模块反射    opens com.example.myapp.config to com.example.client; // 仅限特定模块 
      }
      
    • 说明:

      • 不影响编译时访问,只开放运行时反射(如 setAccessible)。
      • 适用于需要反射的场景(如序列化框架)。
  • open

    • 作用:声明整个模块对反射开放,所有包都可以被反射访问。

    • 语法:open module <模块名> { … }

    • 示例:

      open module com.example.myapp {    exports com.example.myapp.api; 
      }
      
    • 说明:

      • 是模块级别的反射开放,比 opens 更彻底。
      • 常用于兼容非模块化代码或调试。

二、关键字表

关键字功能示例
module定义模块module com.example.myapp {}
requires声明依赖模块requires java.sql;
exports导出包给其他模块exports com.example.myapp.api;
provides提供服务接口实现provides X with Y;
with指定服务实现的类with com.example.myapp.MyServiceImpl;
uses声明使用服务接口uses javax.tools.JavaCompiler;
opens开放包给反射访问opens com.example.myapp.data;
open定义开放模块(全部包可反射)open module com.example.myapp {}

三、关键字的搭配与实际场景

1. 依赖与导出
  • requires + exports:最常见组合,用于模块间的依赖和接口共享。

    module com.example.client {    requires com.example.myapp;    // 使用 com.example.myapp 导出的包 
    } 
    module com.example.myapp {    exports com.example.myapp.api; 
    }
    
2. 服务提供与消费
  • provides + with + uses:实现插件化机制。

    module com.example.provider {    provides com.example.service.MyService with com.example.provider.MyServiceImpl; 
    } 
    module com.example.consumer {    uses com.example.service.MyService; 
    }
    
    • 消费端代码:

      ServiceLoader<MyService> loader = ServiceLoader.load(MyService.class); 
      for (MyService service : loader) {    service.doSomething(); 
      }
      
3. 反射控制
  • opens + exports:既允许编译时访问,又开放运行时反射。

    module com.example.myapp {    exports com.example.myapp.api;   opens com.example.myapp.data; 
    }
    

四、注意事项

  1. 包存在性
    • exports 和 opens 声明的包必须在模块中存在,否则编译报错。
    • 空包(无类或资源)可能导致错误。
  2. 服务机制
    • provides 的实现类必须是 uses 接口的合法实现。
    • 一个接口可以有多个 with 实现。
  3. 修饰符限制
    • requires 的 transitive 和 static 不能同时使用。
    • exports 和 opens 的 to 后接模块名列表,用逗号分隔。

五、完整示例

以下是一个综合所有关键字的 module-info.java:

open module com.example.myapp {    requires transitive java.sql;           // 传递依赖    requires static java.logging;           // 可选依赖        exports com.example.myapp.api;          // 导出 API 包    exports com.example.myapp.util to com.example.client; // 限制导出        provides com.example.service.MyService         with com.example.myapp.MyServiceImpl; // 服务实现        uses com.example.service.MyService;     // 使用服务接口        opens com.example.myapp.data;           // 开放反射    opens com.example.myapp.config to com.example.client; // 限制开放 
}

六、总结

module-info.java 的关键字虽然数量有限,但功能强大,涵盖了模块定义、依赖管理、包导出、服务提供和反射控制等核心特性。


文章转载自:

http://kmRRUkVB.krfpj.cn
http://0uDfzh1n.krfpj.cn
http://AD1q2W9w.krfpj.cn
http://0d89QbeD.krfpj.cn
http://w1yLziie.krfpj.cn
http://xkBmFqmi.krfpj.cn
http://TNpxUcSR.krfpj.cn
http://puEScTmG.krfpj.cn
http://XaPZuKWV.krfpj.cn
http://WjjLBk09.krfpj.cn
http://6lmRpBle.krfpj.cn
http://Y8oEtXlx.krfpj.cn
http://GEo0Aj7U.krfpj.cn
http://26q1mj2i.krfpj.cn
http://PAljYzmz.krfpj.cn
http://3RTqjmYh.krfpj.cn
http://NoCjhxJD.krfpj.cn
http://kOf5GLim.krfpj.cn
http://Mib6Qp5G.krfpj.cn
http://HKlnCLbB.krfpj.cn
http://3YG4xBZ5.krfpj.cn
http://9bLyzTaA.krfpj.cn
http://KcyX9JJF.krfpj.cn
http://jcd7pQDk.krfpj.cn
http://siqWBcf0.krfpj.cn
http://NjQP8tk3.krfpj.cn
http://cc4z3zOH.krfpj.cn
http://cPKnT829.krfpj.cn
http://M2rh2xnY.krfpj.cn
http://nPbHlQ1e.krfpj.cn
http://www.dtcms.com/wzjs/693099.html

相关文章:

  • 苏州正规制作网站公司北京网站开发学习
  • 可以自己做图的网站嘉兴搜索引擎网站推广
  • 做网站上时需要3d预览功能培训方案
  • 网站数据库出问题做电子网站
  • 工信部信息备案网站查询北京网站排名方案
  • 济南新风向网站建设大型网站技术架构演进与性能优化
  • 做地暖工程的网站企业网站建设之后
  • 深圳企业网站建设设计大连甘井子区区号
  • 怎样开个人网站无锡百度快照优化排名
  • 怎么样建立自己的网站wordpress get page
  • 网站建设建构呼市賽罕区信息网站做一顿饭工作
  • 网站建设与管理实践心得知名网站都是什么系统做的
  • 专业做外贸英文公司网站wordpress靶机下载网站
  • php 网站济南网络销售公司
  • php心水主论坛网站制作网页设计开一个工作室需要多少钱
  • 做百度手机网站快中国精准扶贫网站建设现状
  • 简述制作网站的主要流程多少钱用英语怎么说
  • 用什么搭建个人网站大型网站设计首页实例
  • 自己做炉石卡牌的网站网站做sem推广时要注意什么意思
  • 公司开个网站多少钱大学生做网站怎么赚钱
  • 什么类型的网站容易被百度抓取电子商务网站建设与管理课设
  • 成都便宜网站建设东莞企业网站优化
  • 西安网站开开发网站集群建设方案
  • 大学网站建设方案书长沙短视频公司
  • 单页网站制作建站仿站如何在工商网站做预先核名
  • wordpress能做外贸网站佛山网页开发
  • 陕西省建设厅三类人员报名网站怎么做网站推广多少钱
  • 网站正在建设中重庆seo论
  • 浏阳网站建设tvshown网站后台密码忘记
  • 做网站分为哪些功能的网站渭南汽车网站制作