关于JAVA中抽象类输入参数类型的问题?
比如有一个抽象类,里面定义了抽象方法,抽象方法要根据输入的参数自动进行识别并进行相应的处理,我想除了以下的方法之外,有没有自己定义一个宽泛些的对象类型,使得输入的数据能够支持从字节流到文本到数组等等所有内容都包括进去?然后按照对象类型(貌似同C的构造体应该相似吧。)
public void abstractfunc1(int input);
public void abstractfunc1(String input);
我表述不太清楚还希望大家见谅。
------解决方案--------------------是这个意思么?
public Object input(Object o){
if(o typeof O){
...
}else if(o typeof X){
...
}
...
}
------解决方案--------------------首先不建议这样写。
其次,你说的这个是参数的封装问题,可以把需要的各种参数类型封装到一个类里,然后用这个类作为抽象方法的参数,比如:
public class Param(){
private byte[] b;
private String s;
.......
}
------解决方案--------------------
你的想法很好,想到以后扩展,但是这样做不但不能很好的扩展还会失去了面向对象设计的基本原则,你写个Object,别人谁都看不懂你想要什么类型,输入什么才能正确,不能传入就报错,或者叫调用者看你源码。扩展是通过一些设面向对象特性,计原则来实现的,包括很好的使用设计模式,等等。其实重载和重写本身就是多态的引用也是为了更好兼容和扩展设计的。
程序设计是严格的,是一就不是二。你这个问题java.io早都考虑到了,你去看看InputStream 他为什么有3个read()方法。为什么不写一个。
建议你看看面相对象设计原则,java设计模式前几章。