整理好了!2024年最常见 100 道 Java基础面试题(四十三)

上一篇地址:整理好了!2024年最常见 100 道 Java基础面试题(四十二)-CSDN博客

八十五、Java 常用的元注解有哪些?

在Java中,元注解(Meta-Annotation)是指那些用于其他注解上的注解,它们提供了有关其他注解是如何工作的额外信息。Java 5引入了一些标准的元注解,用于定义如何使用注解以及注解的生命周期。以下是Java中一些常用的元注解:

  1. @Retention

    • 这个元注解指定了注解的保留策略,即注解信息应该在什么阶段可用。它有三个枚举值:
      • RetentionPolicy.SOURCE:注解仅在源代码中保留,在编译时丢弃。
      • RetentionPolicy.CLASS:注解在源代码和字节码中都保留,在运行时丢弃。
      • RetentionPolicy.RUNTIME:注解在源代码、字节码和运行时都保留。
  2. @Target

    • @Target 元注解用于指定其他注解可以应用于哪些Java元素上(如类、方法、变量等)。
  3. @Inherited

    • 当一个注解被标记为 @Inherited,它会被传递给子类,这意味着子类继承了父类的该注解。
  4. @Documented

    • 这个元注解用于指定注解是否应该被包含在JavaDoc中。
  5. @Repeatable

    • Java 8引入的 @Repeatable 元注解允许同一个注解在一个元素上使用多次。它需要指定注解的容器类型,用于存储重复的注解实例。

示例

import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME) // 指定注解在运行时保留
@Target(ElementType.METHOD) // 指定注解可以应用于方法
@Inherited // 指定注解可以被子类继承
@Documented // 指定注解应该被包含在JavaDoc中
public @interface MyAnnotation {String value() default "default value";
}// 从Java 8开始,可以使用@Repeatable来定义可重复的注解
@Repeatable(MyAnnotations.class) // 指定重复注解的容器类型
public @interface MyRepeatableAnnotation {String value();
}// 定义一个存储重复注解的容器类型
public @interface MyAnnotations {MyRepeatableAnnotation[] value();
}

在这个示例中,MyAnnotation 是一个自定义注解,它使用了 @Retention@Target@Inherited@Documented 元注解。MyRepeatableAnnotation 是一个可重复的注解,它使用了 @Repeatable 元注解。

注意事项

  • 元注解本身也是注解,它们定义了其他注解的行为。
  • 元注解不能用于除了注解以外的其他Java元素上。

总结

元注解是Java注解系统的重要组成部分,它们提供了关于注解如何工作和如何应用的额外信息。通过使用元注解,开发者可以更精确地控制注解的行为,从而创建更强大的框架和库。理解元注解的用途和如何使用它们对于开发自定义注解框架非常重要。

八十六、Java 泛型中的 T、R、K、V、E 分别指什么?

在Java泛型中,TRKVE 是类型参数的常见占位符,它们代表具体的类型,这些类型在编译时会被具体的类型所替换。这些占位符通常用于泛型类、泛型接口或泛型方法的定义中,以提供类型安全的集合操作和增强代码的可读性。下面是每个占位符的常见用途:

  1. T (Type)

    • T 是最常用的泛型类型参数,通常代表“类型”(Type)。它可以用来指代任何类型,并且经常用于泛型类和泛型接口中。
    public class GenericClass<T> {private T value;
    }
  2. R (Return Type)

    • R 通常用于泛型方法的返回类型。它代表方法返回值的类型。
    public <R> R executeAndGetResult() {// ...
    }
  3. K (Key)

    • K 常用于表示键(Key)的类型,特别是在定义涉及键值对的泛型接口或类时,如Map<K, V>
    public interface KeyValue<K, V> {K getKey();V getValue();
    }
  4. V (Value)

    • V 常用于表示值(Value)的类型,同样在涉及键值对的泛型结构中使用较多。
    public class Pair<K, V> {private final K key;private final V value;
    }
  5. E (Element)

    • E 通常用于表示元素类型,如在泛型集合类中存储的具体对象类型。
    public class ElementList<E> {private List<E> elements = new ArrayList<>();
    }

注意事项

  • 这些占位符通常用于泛型定义中,它们使得泛型类、接口和方法更加灵活和可重用。
  • 占位符的选择主要基于代码的可读性和约定,它们本身没有特定的语义含义,可以互换使用,但为了保持可读性和清晰性,建议按照约定使用。
  • 泛型的实际类型参数在创建实例或调用方法时指定。

示例

public class Example<T, V> {private T id;private V data;public Example(T id, V data) {this.id = id;this.data = data;}public static <K, V> Map<K, V> createMap() {return new HashMap<>();}
}

在这个示例中,Example 类使用了两个泛型参数 TV,而 createMap 静态方法使用了 KV 来创建一个 Map 实例。

总结

泛型中的 TRKVE 是类型参数的占位符,它们用于增强泛型类的类型安全性和灵活性。选择合适的占位符并遵循常见的编码约定,可以提高代码的可读性和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Native 之 开发环境搭建(一)

1. 安装Node.js&#xff1a; Node.js是React Native开发的基础&#xff0c;因此首先需要安装Node.js。强烈建议始终选择 Node 当前的 LTS &#xff08;长期维护&#xff09;版本&#xff0c;一般是偶数版本&#xff0c;不要选择偏实验性质的奇数版本。 如果你希望更方便地管理…

k8sCRD

k8s&&CRD 概念创建一个简单的自定义资源Operator 概念 CRD: CustomResourceDefinition&#xff0c;CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format <.spec.name>.<.spec.group&…

基于SpringBoot+微信小程序的订餐(点餐)配送系统设计与实现+毕业论文(12000字)

系统介绍 本微信小程序在线订餐系统管理员功能可以修改个人中心&#xff0c;用户管理&#xff0c;菜品分类管理&#xff0c;菜品信息管理&#xff0c;订单信息管理&#xff0c;取消订单管理&#xff0c;订单配送管理&#xff0c;菜品评价管理以及系统管理。微信小程序用户可以…

实训一:设计系统主页作业

1.题目 设计系统主页。 2.目的 (1)熟悉Web前端项目开发环境。 (2)掌握如何建立Web前端项目&#xff0c;学会规划项目结构。 (3)掌握动态生成页面内容的方法。 (4)理解如何使用Flash显示图片新闻。 (5)会在应用系统中编写播放动态新闻的程序。 3.内容 建立项目结构&#xff0c;并…

在excel的内置瀑布图模板中,能在数据标签里同时显示数值和百分比吗?

瀑布图是由麦肯锡顾问公司所创的图表类型&#xff0c;因为形似瀑布流水而称之为瀑布图( Waterfall Plot)。这种图表常用于表达数个特定数值之间的数量增减变化关系。 在Excel中&#xff0c;瀑布图是可以通过簇状柱形图来完成创建。从excel2016版起&#xff0c;excel添加了内置…

【AIGC】Mac Intel 本地 LLM 部署经验汇总(CPU Only)

书接上文&#xff0c;在《【AIGC】本地部署 ollama(gguf) 与项目整合》章节的最后&#xff0c;我在 ollama 中部署 qwen1_5-14b-chat-q4_k_m.gguf 预量化模型&#xff0c;在非 Stream 模式下需要 89 秒才完成一轮问答&#xff0c;响应速度实在是太慢&#xff0c;后续需要想办法…

IT行业现状与未来趋势-技术创新日新月异

目录 一、引言 二、IT行业现状 技术创新日新月异 市场需求持续增长 人才竞争激烈 网络安全问题凸显 三、IT行业未来趋势 人工智能将更加普及 区块链技术将改变商业模式 网络安全将成为重要战略 数字化转型将加速推进 四、结语 一、引言 随着科技的飞速发展&#x…

通过 OmniPlan 4 解决项目管理中的实际问题

项目管理是一个复杂的过程&#xff0c;涉及规划、执行、监控和控制等多个方面。OmniPlan 4作为一款专业的项目管理软件&#xff0c;能够帮助项目经理和团队成员解决实际项目管理中遇到的各种问题。以下是通过OmniPlan 4解决一些常见项目管理问题的介绍。 OmniPlan 4 下载 https…

大型医疗挂号微服务“马上好医”医疗项目(4)设计一个医院方接口

如何构建一个医院方接口 一、如何进行数据库建模 数据库建模一般需要使用工具PowerDesign&#xff0c;但是其实在navicat中是有类似的功能的 二、分析医院接口会有什么字段 其实很多的同学在入行的时候会有一个问题&#xff0c;没有设计思维。 表字段的设计方案 状态字段…

江苏省生态环境工程专业技术资格条件

江苏省生态环境工程专业技术资格条件评审文件链接江苏省生态环境厅 人事管理 省专业技术人员职称&#xff08;职业资格&#xff09;工作领导小组关于印发《江苏省生态环境工程专业技术资格条件&#xff08;试行&#xff09;》的通知评审工作的通知江苏省生态环境厅 年度职称评审…

怎么把图片大小缩小到1M?教你几招图片你压缩

当我们的图片数量越来越多的时候&#xff0c;占用的内存也就越来越多&#xff0c;时间长了之后&#xff0c;会导致我们空间不足或者设备比较卡顿&#xff0c;为了缓解这个问题&#xff0c;很多人会选择去删除一些不必要的图片文件&#xff0c;其实还有个方法就是利用图片压缩的…

Workfine签章方案使用说明

概述 为支持绝大部分第三方签章平台&#xff0c;Workfine针对性添加了部分动作事件与message支持。用户只需要自己开发中间代理程序&#xff0c;用于Workfine与签章平台的通讯即可完成整套签章方案。 整体业务流程图如下&#xff1a; 设计端添加发送PDF动作事件&#xff0c;生…

Duplicate entry ‘1‘ for key ‘sys_patient_info.user_id‘

报错信息 Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 1 for key sys_patient_info.user_id ### The error may exist in file [D:\learn\Project\RuoYi-Vue-master\ruoyi-system\target\classes\mapper\system\Sys…

JavaScript DOM 获取元素的各种方法

在JavaScript中&#xff0c;DOM&#xff08;文档对象模型&#xff09;提供了许多方法来获取元素。这些方法可以通过元素的标签名、类名、ID和选择器等来获取元素。下面是一些常用的获取元素的方法和相应的代码示例。 通过标签名获取元素 var elements document.getElementsB…

宁夏银川最牛起名大师的老师颜廷利:宝与饱,饿跟恶

对于中国优秀传统文化之根-汉语而言&#xff0c; 恶&#xff0c;对应着‘饿’&#xff1b; 宝&#xff0c;对应着‘饱’… 由此可见&#xff0c;无论是‘饿’&#xff08;与‘恶’同音&#xff09;&#xff0c;还是‘饱’&#xff08;与‘宝’通音&#xff09;&#xff0c;实际…

SqlServer2016安装

1、下载 下载地址&#xff1a; https://www.microsoft.com/en-us/server-cloud/products/sql-server-2016/ 或者 MSDN, 我告诉你 - 做一个安静的工具站 开发版下载地址&#xff1a;https://myprodscussu1.app.vssubscriptions.visualstudio.com/downloads KB2919442下载地址…

四川在线教育系统平台,培训机构这个行业以后会如何发展?前景怎样?

说到培训机构&#xff0c;其实存在的时间也不算了&#xff0c;但是这个行业以后会如何发展?其实&#xff0c;很多人心里还没有底&#xff0c;担心这个行业没有未来?但事实是否如此?其实&#xff0c;部分人还有不少的疑惑&#xff0c;所以&#xff0c;想了解下这个行业的情况…

Django 安全性与防御性编程:如何保护 Django Web 应用

title: Django 安全性与防御性编程&#xff1a;如何保护 Django Web 应用 date: 2024/5/13 20:26:58 updated: 2024/5/13 20:26:58 categories: 后端开发 tags: CSRFXSSSQLUploadHTTPOnlyPasswordSession 跨站请求伪造&#xff08;CSRF&#xff09; 跨站请求伪造&#xff0…

【一站式学会Kotlin】第五节匿名函数

作者介绍&#xff1a; 百度资深Android工程师T6&#xff0c;在百度任职7年半。 目前&#xff1a;成立赵小灰代码工作室&#xff0c;欢迎大家找我交流Android、微信小程序、鸿蒙项目。文章底部&#xff0c;csdn有为我插入微信的联络方式&#xff0c;欢迎大家联络我。 一&#x…

C++:重载、重写与重定义

一、重载、重写与重定义的概念 C中&#xff0c;重载、重写和重定义是三个与函数和类成员相关的概念&#xff0c;但它们具有不同的含义和用途。 重载&#xff1a;是指在同一作用域内&#xff0c;可以有多个名称相同但参数列表&#xff08;参数类型、参数个数或参数顺序&#x…