(JAVA)工厂模式的问题?
package shier;
interface Fruit
{ // 定义一个水果标准
public void eat() ; // 吃
}
class Apple implements Fruit
{
public void eat()
{
System.out.println("吃苹果。") ;
}
}
class Orange implements Fruit
{
public void eat()
{
System.out.println("吃橘子。") ;
}
}
class Factory1
{ // 此类不需要维护属性的状态
public static Fruit getInstance(String className)
{
if ("apple".equals(className))
{
return new Apple() ;
}
if ("orange".equals(className))
{
return new Orange() ;
}
return null ;
}
}
public class factory
{
public static void main(String args[])
{
Fruit f = Factory1.getInstance(args[1]) ; // 初始化参数
// System.out.println(args[2]);
f.eat() ;
}
}
这是书上的代码,args[0]报了数组下标越界异常,这是为什么呢? Factory1类的getInstance方法为什么要传args[0]参数进去?应该怎样修改呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
回复
@tcxu : 第一段代码的运行结果是:命令行没有输入数据。运行终止。第二段代码的运行结果是 输入的整型数: 输入的浮点数: 输入的非数字: 这是怎么回事?
回复
你所说的 "第一段...、第二段代码..."是否是指 上面在 DOS 窗口 编译和运行 T.java 的记录显示?如实这样,第一行指令:"javac T.java" 实现了 java 代码的成功编译。接下来一行的指令;"java T .1415 56 ...." 的指令,是通过命令行,输入字符串数组形式的数据,运行(解释)编译好的字节码文档。
回复
接下来的数行:"输入的整型数:...输入的浮点数:... 输入的非数字:...", 是运行这段代码的结果(输出)。即,输出解析(分析)用户输入数据的结果。分别列出不同类型的数据。在 DOS 窗口环境 调试/编译/运行 java 程序,是程序员学习java语言最基本的技能, 必须首先牢牢掌握。
回复
@tcxu : 没有在DOS窗口中运行, 我是在eclipse中直接运行。有什么区别吗?
回复
若 用 eclipse 运行,那必须将 eclipse 设置成"在命令行输入数据"的模式来运行。学习java语言,就要学会在 DOS 窗口里编译(指令 javac)、运行(指令 java) java 代码。
以下代码案例,显示
不是传人了args[0]作为参数吗?
main方法是程序执行入口,其参数是需要外部传入的,你直接运行没有传入参数自然是数组越界