Java中的工厂模式示例
我尝试了一个工厂模式的例子。这给了我一个ArrayIndexOutOfBoundsException的感觉。有人能解释一下吗
java.lang.ArrayIndexOutOfBoundsException: 0 at com.factory.SalutationFactory.main(SalutationFactory.java:10)
这是我的课
package com.factory;
public class SalutationFactory {
public static void main(String[] args) {
try
{
SalutationFactory factory = new SalutationFactory();
factory.getPerson(args[0], args[1]);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public Person getPerson(String name, String gender){
if(gender.equals("M"))
return new Male(name);
else if(gender.equals("F"))
return new Female(name);
else
return null;
}
}
package com.factory;
public class Person {
private String name;
private String gender;
public String getName(){
return name;
}
public String getGender(){
return gender;
}
}
package com.factory;
public class Female extends Person {
public Female(String fullname){
System.out.println("Hello Ms " + fullname);
}
}
package com.factory;
public class Male extends Person {
public Male(String fullname){
System.out.println("Hello Mr " + fullname);
}
}
谢谢 发展
# 1 楼答案
这里使用的是命令行参数,因此在运行此应用程序时,必须传递命令行参数
使用
这里Santosh将分配给args[0],M将分配给args[1]
如果不传递任何命令行参数而运行此程序,则args的长度将为0,并且在main()内调用args[0],这会导致ArrayIndexOutOfBounds异常
# 2 楼答案
因为这是唯一使用数组的行:
我怀疑您没有提供2个命令行参数。您将需要以下内容:
# 3 楼答案
您必须先检查null或对象,然后才能使用它们。只要加一行就行了
# 4 楼答案
我尝试过同样的例子,在尝试之后,这里是解决方案。创建此代码
这会奏效的
你的输出应该是“女性”