如题,本人是新手,希望各位多多关照,谢谢!
最近在做一个串口小程序,代码如下:public class CommTest {
//主方法如下
public static void main(String[] args) {
CommPortIdentifier portId;
SerialPort serial=null; //定义串口; portId=CommPortIdentifier.getPortIdentifier("COM1"); //返回CommPortIdentifier实例
serial=(SerialPort)portId.open("MyApp", 60); //这一步可以这样做让比较疑惑,javadoc里面CommPortIdentifier.open()方法返回的是CommPort类对象,而CommPort类又是SeriaPort类的父类,这里相当于做了一个强制的向下转化,但是java多态性里面说向下转化时一定要先做个向上转化,这里没这样做,然后也能用,麻烦高手帮忙看下,谢谢! serial.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
}
}顺便把javadoc的部分内容粘上:
1、CommPortIdentifier里面部分方法
open()
public synchronized CommPort open(String appname,
int timeout) throws PortInUseException
这里返回的是CommPort对象2、java.lang.Object
|
+----javax.comm.CommPort
|
+----javax.comm.SerialPortpublic abstract class SerialPort
extends CommPort SerialPort 是 CommPort 的子类
最近在做一个串口小程序,代码如下:public class CommTest {
//主方法如下
public static void main(String[] args) {
CommPortIdentifier portId;
SerialPort serial=null; //定义串口; portId=CommPortIdentifier.getPortIdentifier("COM1"); //返回CommPortIdentifier实例
serial=(SerialPort)portId.open("MyApp", 60); //这一步可以这样做让比较疑惑,javadoc里面CommPortIdentifier.open()方法返回的是CommPort类对象,而CommPort类又是SeriaPort类的父类,这里相当于做了一个强制的向下转化,但是java多态性里面说向下转化时一定要先做个向上转化,这里没这样做,然后也能用,麻烦高手帮忙看下,谢谢! serial.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
}
}顺便把javadoc的部分内容粘上:
1、CommPortIdentifier里面部分方法
open()
public synchronized CommPort open(String appname,
int timeout) throws PortInUseException
这里返回的是CommPort对象2、java.lang.Object
|
+----javax.comm.CommPort
|
+----javax.comm.SerialPortpublic abstract class SerialPort
extends CommPort SerialPort 是 CommPort 的子类
解决方案 »
- swing 皮肤包问题
- 大家看看下面的代码为什么不能运行成功????????????
- 请教大侠们一个小题目--新手提问.
- java自定义的线程类对象和Thread类对象是什么关系?
- 想得头发都白了
- 如何让我的数据库能被银行更新(加急)
- 求一本提高Java编码质量的书籍, 有当当的电子礼券送.
- 为什么我在处理多线程的问题时程序要导入java.lang.thread的包??
- 请问如何用JBuilder关联sql server中的数据库文件?
- 关于applet的路径问题
- java后端学习路线.
- exception in thread main java.lang.nullpointerexception
SerialPort serial=null;
portId=CommPortIdentifier.getPortIdentifier("COM1"); serial=(SerialPort)portId.open("MyApp", 60);
//1.serial是SerialPort类型,而open()会返回SerialPort的父类类型,就好比:我现在需要一致狗,你给我一个动物,这肯定不符合要求的(因为我要的是狗,万一你给的是猫呢),除非你声明说这个动物就是狗,这样才能符合要求。
//2.java多态性里面说向下转化时一定要先做个向上转化没见过
对象向下转换时需要强制转换时需要先做个向上转换是从一本java的基础教程中看到的,书上例子是这样的:
class A
{
}
class B extends A
{
}
public class Demo03
{
public static void main(String args[]){
A a=new A();
B b=(B)a;
}
}
编译没有问题,但是执行的时候会出现
ClassCastException:A cannot be cast to B的错误如果换成
A a=new B();
B b=(B)a;
这样就不会有错了
A的引用要是指向子类对象,也就是类型强转时,B b=(B)a;要注意,必须判断一下,否则容易产生ClassCastException。