请问java中有没有不使用forName和实例化对象就能直接得到某个类的Class对象的方法呀?

jiaoxkxk 2007-03-21 10:41:00
通过判断类的是否是某个类的子类或者是否实现了某个接口,可以在程序里区别对待不同的对象。比如,
做一个显示表格的类,对于类型为字符串的单元格,可以简单调用drawString来显示,但对于某些自定义类的对象,比如说,定义一个接口StringRetrieveable,如果该对象实现了这个接口,则可以调用该接口的getString方法,获得字符串,然后再调用drawString方法显示。现在的问题是,我能够得到这个对象的Class,但不知道怎么写能够把这个Class和StringRetrieveable进行比较以判断该对象是否实现了这个接口。
下面是我已经知道的方法:
1. 使用forName("StringRetrieveable")获得接口StringRetrieveable的Class对象,调用该对象的isInstance,把单元格对象作为参数传递进去。但forName调用看样子是一种运行时获取Class对象的方法。效率上可能稍微有些损失。如果有像C或C#里面typeof关键字的方法就好了。
2. 使用异常机制,强制将单元格转换成StringRetrieveable接口,如果抛出异常,就在catch块内作相应处理。但这种变态使用异常的方法是在不怎么样,效率也不会高的。

请问java里面有没有类似typeof的关键字或什么别的机制,能够在编译时刻就能在程序里指定某个Class对象呢?
我这里先谢谢了。
...全文
415 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaoxkxk 2007-03-22
  • 打赏
  • 举报
回复
不好意思,我是在做J2ME的程序,试着这样写过,但不成功,编译时报错“cannot access java.lang.NoClassDefFoundError”。是j2sdk1.4.2,不知道和版本有没有关系。
不使用StringRetrieveable.class就没有问题。使用forName缺可以。这个错误很多人都说是找不到需要的类。我有点儿糊涂了。
hwldm0101 2007-03-22
  • 打赏
  • 举报
回复
我想自学JAVA,请问一下各位前辈,学JAVA前要先具备哪些知识
大概要多久才能入门
就是多久才能把基本的程序看明白
gtlang78 2007-03-22
  • 打赏
  • 举报
回复
直接用 类名.class
例如 String.class StringRetrieveable.class
jiaoxkxk 2007-03-22
  • 打赏
  • 举报
回复
我又作了一下试验,具体步骤如下:
javac -target 1.1 -classpath ..\midp2.0fcs\classes;.\tmpcls .\src\*.java
其中我实现编译好的接口类StringRetrieveable.class已经放在了tmpcls目录下,J2ME所需要的类在midp2.0fcs\classes下,需要编译的文件在src目录下。这么编译没有问题能够通过。
但J2ME要求指定-bootclasspath为 ..\midp2.0fcs\classes,一旦做了这个制定,编译的时候就报java.lang.NoClassDefFoundError错误。看来使用[类名].class的语法,编译器在产生代码的时候可能用到了什么方法,而该方法可能会使用到 java.lang.NoClassDefFoundError这个错误,而J2ME不能支持这个错误。javac的help对于-bootclasspath选项的说明是:"-bootclasspath <path> Override location of bootstrap class files" 而估计java.lang.NoClassDefFoundError可能在bootstrap class files里有了什么特殊的处理,使得这个错误不能被编译器所接受。所以在编译的时候就报了这个错误。
假如不指定-bootclasspath,虽然能够编译成功,但在后面的preverify过程里,就会报一个VERIFIER ERROR,错误还是java.lang.NoClassDefFoundError这个错误。
看来有可能在J2ME程序里是没法用[类名].class这种写法的了。
如果哪位大师级的高手能够把这个问题给在下解释一下,那将感激不尽。
jiaoxkxk 2007-03-21
  • 打赏
  • 举报
回复
耐心(且焦急地)等待中...
代码转载自:https://pan.quark.cn/s/40891257dd4d 在当代的web前端开发领域,达成响应式布局的设计、处理元素定位的技术、数据型的识别以及布局单位的认知和函数参数对象的解析是基础且核心的知识要点。以下将详细阐释相关知识点:**响应式布局的达成方式**响应式布局的设计能够确保网页在不同尺寸的设备上提供一致的用户界面。实现策略大致可以归纳为以下几种:- 百分比布局:通过将元素的宽度、高度、边距、内边距等属性设定为相对于父元素的百分比,以此适应多种屏幕尺寸。然而,部分属性如border不支持百分比设定。- 媒体查询:借助CSS3的@media规则,针对不同的屏幕宽度设定特定的样式,从而达成更为精细的布局控制。但该技术不适用于IE6、IE7浏览器。- rem布局:采用rem作为单位,相对于根元素的font-size大小来设定元素尺寸。在不同的分辨率条件下,借助媒体查询或JavaScript动态计算并调整html的font-size值,进而实现元素的缩放效果。- vw/vh布局:视口宽度和高度的单位,其1vw等同于视口宽度的1%,1vh等同于视口高度的1%。这种单位提供了一种与视口大小直接关联的布局手段。- Flex弹性布局:通过将元素的display属性设置为flex,并运用flex相关的属性(例如flex-wrap、flex-flow、justify-content、align-items等)来进行布局的调整。**三种技术实现一个 div 在水平和垂直方向上的居**- 结合定位与transform属性:将div的position属性设置为absolute或fixed,然后通过left/top属性将其定位至50%位...
内容概要:本文介绍了YOLOv11目标检测模型在芯片封装引脚缺陷检测的实战应用,重点阐述了其在高强度反光、密集小目标场景下的技术优势。通过引入SPPF与C2PSA模块实现多尺度特征融合与注意力聚焦,提升对引脚缺损、桥接、翘曲等微小缺陷的识别能力。结合TensorRT进行FP16/INT8量化部署,配合批量推理、Agnostic NMS优化和最大检测数限制,实现了微秒级高速推理,满足工业产线实时性需求。代码实例详尽展示了模型导出、加速推理与后处理优化的全流程,体现了从算法设计到工业落地的完整闭环。; 适合人群:具备计算机视觉基础,从事工业检测、智能制造或嵌入式AI开发的工程师,以及希望将深度学习应用于半导体质检领域的研究人员和技术人员;; 使用场景及目标:①应用于QFN、BGA等芯片封装测试环节的自动光学检测(AOI)系统;②实现实时引脚缺陷识别并触发剔除机制,提升产线良率;③探索模型轻量化、高速推理与工业级鲁棒性部署的最佳实践; 阅读建议:学习者应结合代码实践TensorRT引擎导出与推理优化技巧,重点关注INT8量化校准、Agnostic NMS处理重叠框及防御性编程策略,深入理解如何将先进算法稳定落地于高节拍工业环境。
内容概要:本文围绕“独立储能的现货电能量与调频辅助服务市场出清协调机制”展开研究,基于Matlab平台实现了完整的仿真建模与算法验证。内容涵盖电力市场独立储能系统参与现货电能量市场和调频辅助服务市场的协同优化机制,重点构建了多目标协调出清模型,综合考虑储能运行特性、充放电约束、市场报价策略及系统调度需求,通过优化算法求解实现储能收益最大化与电网运行效率提升的双重目标。该资源突出科研导向,强调机制设计与代码实现的紧密结合,适用于电力市场机制创新、储能商业化运营模式探索及相关算法复现研究。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力,从事电力市场、储能调度、综合能源系统等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究独立储能在多电力市场环境下的协同运行与竞价策略;②构建并求解电能量与调频服务联合出清模型,提升资源配置效率;③支撑高水平论文撰写、科研项目申报及实际系统仿真验证。; 阅读建议:建议结合文提及的其他相关研究(如微电网调度、鲁棒优化等)进行系统学习,重点关注模型构建逻辑、目标函数设计与Matlab代码实现细节,宜在仿真环境调试运行程序,深入理解市场机制与优化算法的融合机理。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧