关于Java中强制转换类型为接口类型

article/2025/10/2 9:19:47

在这里浅浅记录一下自己在Java编程中遇到的问题及理解:

问题背景如下:

自定义JDBC接口:

自定义类MySql实现JDBC接口:

创建JDBC01.properties配置文件如下:

 

    key为类名,value为创建Class对象所需类的路径全称(Class.forName方法的形参所需)

测试类如下(注释部分不需要理会):

    测试类作用:测试类主要工作是利用properties集合获取JDBC01.properties中的配置信息(value),借助value来创建相应的Class对象,利用反射来创建类的实例对象

注意语句:

已知newInstance方法返回的是Object对象,此处将该Object对象强制类型转换为JDBC接口类型 

后调用了connect方法:

运行成功!控制台输出:

"mysql连接数据库成功!"

但是注意:

jdbc1无法调用MySql类中的dis方法:

  原因:jdbc1的编译时类型为JDBC,JDBC接口中没有声明dis方法,故根据"编译看左边,运行看右边"的思路,jdbc1显然没有dis方法;假若将c.newInstance强转为MySql类型是否可以调用dis方法呢?

答案是:不行!原因还是jdbc1的编译时类型为JDBC,而JDBC接口中没有声明dis方法,根据"编译看左边,运行看右边"的思路jdbc1还是无法调用dis方法!

总结:

接口类型 变量名 = (接口类型)任意实现类对象或者实现类对象的父类对象(如Object类对象);

(Cat类与JDBC之间没有实现关系,强制类型转换编译通过,运行时失败)

  变量.方法(该方法必须在接口中声明)

 


http://chatgpt.dhexx.cn/article/k6OV9vly.shtml

相关文章

java强制double类型转换int()

写着写着,就又忘了…… 做个实验,存一下吧: 代码: // a litte testdouble asdjf 39.8;double asdjr 39.5;double asdjv 40.1;System.out.println("\nint():");System.out.println("(int)(39.8)" (int) …

java的隐式转换和强制类型转换

一、数据类型转换的场景 当数据类型不一致时进行算术运算操作,需要进行类型转换(转成一样的)操作。 二、数据类型转换的分类 1.隐式转换 1.取值范围小的转成取值范围大的。 如int转成double 2.byte、short、char类型在进行数据类型转换的…

getdate、dateadd、datediff、datename、datepart关于日期函数的用法及理解

下面是sql server实例: select GETDATE() --getdate这个函数是获取当前系统时间也就是今天的日期时间、看第1个结果select DATEADD(YY,1,GETDATE()) --dateadd这个函数是增加日期、框里mm是月份、1是增加1个月、就是说在今天的日期上再加1个月--对比一下第1个结果…

DATEDIFF() 函数

定义和用法 DATEDIFF() 函数返回两个日期之间的时间。 语法 DATEDIFF(datepart,startdate,enddate)startdate 和 enddate 参数是合法的日期表达式。 datepart 参数可以是下列的值: 实例 例子 1 使用如下 SELECT 语句: SELECT DATEDIFF(day,2008-12-2…

SQL server Date函数之DATEPART()函数

1、定义: DATEPART() 函数用于返回一个日期或者时间的单独部分,比如年、月、日、小时、分钟等等。 2、语法: DATEPART(datepart,date) date 参数是合法的日期表达式。datepart 参数可以是下列的值: datepart缩写年yy, yyyy季…

DatePart 函数

DatePart 函数 适用于: Microsoft Office Access 2007 全部显示 全部隐藏 返回变量型(整型),其中包含给定日期的指定部分。 语法 DatePart(interval, date [, firstdayofweek] [, firstweekofyear] ) DatePart 函数的语法包含以下参数 &…

DateAdd函数

在VBA日期时间函数学习中&#xff0c;有几类用到了间隔类型参数&#xff0c;比如 日期/时间增加或减少一个时间间隔&#xff1a;DateAdd(<间隔类型>,<间隔值>,<表达式>) 计算两个日期的间隔值函数&#xff1a; DateDiff(<间隔…

Linux 题库及答案永久开放共同学习进步

Linux 题库&#xff08; 一 ) 一、选择题 (每小题2分&#xff0c;共50分) 4. 下面哪个命令是用来定义shell的全局变量( D ) A. exportfs B. alias C. exports D. export 11. 在vi编辑器里&#xff0c;命令"dd"用来删除当前的( A ) A. 行 B. 变量   C. 字  …

Linux内核设计与实现 Robert Love

第一章 Linux内核简介 通常一个内核由负责响应中断的中断服务程序&#xff0c;负责管理多个进程从而分享处理器时间的调度程序&#xff0c;负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。 每个处理器在任何指定时间点上的活动必然概况为下列三…

linux下查询汇编指令手册,Linux命令大全

awk是一种编程语言&#xff0c;用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件&#xff0c;或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能&#xff0c;是linux/unix下的一个强大编程工具。它在命令行中使用&#…

Linux文本处理三剑客(grep,sed,awk)

文章目录 快捷键Shell通配符*通配符? 通配符[] 通配符 正则表达式grep&#xff08;文本过滤&#xff09;sed&#xff08;文本编辑&#xff09;替换文本内容(sed -i "s/原内容/替换内容/g" file.filetype) awk&#xff08;文本统计&#xff09;awk文本操作( awk [选项…

Linux命令教程第三期

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言awk补充说明语法形式模式示例其他语句数组的定义 col补充说明语法选项 comm补充说明语法选项参数 csplit补充说明语法选项参数实例 ed补充说明语法选项参数 egr…

Linux 私房菜 笔记(完结)

目录 第0章 计算机概论 基本知识 操作系统&#xff1a; 内核功能&#xff1a; 应用程序&#xff1a; 第一章 什么是LINUX 第0章 计算机概论 基本知识 电脑主要由五大单元组成&#xff1a; 输入单元&#xff0c;输出单元&#xff0c;cpu内部的控制单元&#xff0c;算数逻辑…

【Linux】内存管理机制

Linux内存管理机制 内存的表象层次依次为 逻辑地址------>线性地址----->物理地址 逻辑地址经过段机制转换成线性地址。 线性地址经过页机制转换成物理地址。 Linux将所有程序的段地址定为 0 - 4G&#xff08;Linux中&#xff09;&#xff0c;所有虽然逻辑地址和线性…

Linux操作系统基础知识

〇、操作系统基础 1、什么是操作系统 操作系统(Operating System, OS)&#xff0c;介于硬件资源和应⽤程序之间的⼀个系统软件。 2、操作系统的功能 操作系统位于硬件资源之上&#xff0c;管理硬件资源&#xff1b;应⽤程序之下&#xff0c;为应⽤程序提供服务&#xff0c;同…

Python描述 LeetCode 23. 合并K个升序链表

Python描述 LeetCode 23. 合并K个升序链表 大家好&#xff0c;我是亓官劼&#xff08;q guān ji &#xff09;&#xff0c;在【亓官劼】公众号、CSDN、GitHub、B站等平台分享一些技术博文&#xff0c;主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、…

进程间通信【Linux】

文章目录 1. 进程间通信1.1 什么是进程间通信1.2 进程间通信的必要性1.3 进程间通信的本质1.4 进程间通信的方式 2. 匿名管道2.1 匿名管道的概念2.2 匿名管道的原理注意 2.3 实现匿名管道pipe函数步骤1. 创建管道2. 创建子进程3. 构建单向信道子进程父进程构建一个变化的字符串…

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day33】—— 手撸算法2

大家好&#xff0c;我是陈哈哈&#xff0c;北漂五年。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深Java选手&#xff0c;深知面试重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于Java岗面试中的高频面试题&#xff0c;以每日3题的形式&…

合并k个已排序的链表

ojbk...开始以为这题没有内存要求,所以就用来一个很简单的方法合并。创建第三条链表&#xff0c;结果部分案例过不去。 这个代码&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x)…

LeetCode 88. 合并两个有序数组 C/C++/Python

欢迎加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 88. 合并两个有序数组 C语言版C版Python版 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个…