java泛型dao学习笔记(java dao类)

本文目录一览:

如何正确理解java中的泛型类型推导

具体类型应该是开发者编写程序调用的时候自己指定的类型,Java的泛型是一种编译时泛型,按目前的理解Java泛型只是提供了一种编译时的类型安全检查,而编译后实际运行时是没有某种被定义的”泛型”类型的(类型搽除)。

其实对于初学者对这一点可以将Java泛型简单理解为一种将因类型错误而引发的异常提前到编码阶段。当开发者在错误的调用泛型类和方法时IDE就会提示错误,而不用等到程序真正运行时再报错。

如何理解Java的泛型

型(Generic type 或者 generics)是对

简单的理解,就是对类型的参数化,比如我们定义一个类属性或者实例属性时,往往要指定具体的类型,如Integer、Person等等,

但是如果使用了泛型,我们把这些具体的类型参数化,用一个广泛的可以表示所有类型的“类型”T来定义,那这个T就是泛型的表示。

可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象。

因为 Map.get() 被定义为返回 Object,所以一般必须将 Map.get() 的结果强制类型转换为期望的类型,如下面的代码所示:

[java] view plain copy print?

Map m = new HashMap();

m.put(“key”, “value”);

String s = (String) m.get(“key”);

要让程序通过编译,必须将 get() 的结果强制类型转换为 String,并且希望结果真的是一个 String。如果map中保存了的不是 String 的数据,则上面的代码将会抛出 ClassCastException。

java 方法中如何在返回类型使用泛型

主要是一个编译期的检查,也避免了我们代码中的强制转换,比较经典的用法有泛型DAO,泛型Page的DTO。

现在我要说的是一个挺有趣但是貌似还不是太多的人在代码中使用的方法,前段时间用guava和op4j的时候发现这样的用法,看看了源码,也是很简单的。

比如guava中创建集合的方法 Listxx list = Lists.newArrayList(),这个代替了我们传统的 new ArrayListxx,为什么在=的右边不需要泛型了呢,我们看看源码。

[java] view plaincopy

public static E ArrayListE newArrayList() {

return new ArrayListE();

}

返回类型中带有泛型E,并且这个泛型的来源在 static和 ArrayList之间的位置,我自己的理解是这个就和=左边的一致,可能说的不够专业但是意思应该就这样。

于是我就依样画葫芦在自己的代码中也用了起来。

我要做的是一个仿httpsession机制的自定义协议是session。在httpsession.getAttribute方法返回的是一个

Object,然后我们再类型转换。现在我用返回类型泛型来优化这个代码,以下是我自定义协议session的getAttribute的代码。

[java] view plaincopy

@SuppressWarnings(“unchecked”)

public E E getAttribute(String key) {

return (E) map.get(key);

}

调用代码

[java] view plaincopy

Boolean isFirst = session.getAttribute(“first”);

在httpsession中我们则要这么写

[java] view plaincopy

Boolean isFirst = (Boolean)session.getAttribute(“first”);

泛型的用法还有很多,有新的心得再补充更新

java 泛型的几种用法

1. public class DAOT {

/**

* 泛型类

* 声明类的同时声明泛型类型

* 1.方法的返回值可以是使用声明的泛型类型

* 2.方法的参数也可以是声明类的泛型类型

* 3.方法体内可以使用泛型类型

*/

public T get(Integer id){

return null;

}

public void save(T entity){

}

}

2.

/**

* 泛型方法: 在方法声明时, 同时声明泛型. 在方法的返回值, 参数列表以及方法体中都可以使用泛型类型.

* public static T T get(Integer id){

* T result = null;

* return result;

* }

* 把指定类型的数组中的元素放入到指定类型的集合中

*/

java中Dao中用泛型

贴上你IA类的代码,泛型在java里面是一种语法糖,作用简单可以理解为让开发在编译阶段能发现相关的错误 而不是让错误在运行阶段才被发现 如ListString 则list里面只能放入String类型,否则编译都通不过,你可以搜搜语法糖的作用,实际泛型在形成的class文件中还是会被擦除

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/269971.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-16 13:34
下一篇 2024-12-16 13:34

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29

发表回复

登录后才能评论