如何使用 class 中的方法在 Java 中创建另一个方法的实例?
How can I use a method in one class to create an instance of another in Java?
我有两个 classes,一个是计算对象 (CyberPet.java),另一个是测试计算对象 (TestCyberPet.java)。在 TestCyberPet 中,我有一个名为 createPet() 的方法,它将使用用户输入来实例化 CyberPet 的一个实例。我已经完成了
CyberPet pet3 = null;
这是 createPet():
private static CyberPet createPet()
{
/*** Local variables ***/
Scanner scanner = new Scanner( System.in );
final String formatString = "%22s: ";
String name;
String size;
String activity;
/*** Get user input ***/
System.out.println();
System.out.printf( formatString, "Enter your pet's name" );
name = scanner.nextLine().trim();
System.out.println();
System.out.printf( formatString, "Enter your pet's size (big or small)" );
size = scanner.nextLine().trim().toLowerCase();
System.out.println();
System.out.printf( formatString, "Enter your pet's current activity (eating, sleeping, or thinking)" );
activity = scanner.nextLine().trim().toLowerCase();
/*** Validate input, notify user of errors ***/
if ( name.length() == 0 )
{
System.out.println( " Invalid input. Name cannot be blank." );
name = CyberPet.DEFAULT_NAME;
}
// else leave as entered string
if ( size == "big" || size == "small" )
{
System.out.println( " Invalid input. Size must be either big or small." );
size = CyberPet.DEFAULT_SIZE;
}
// else leave as entered string
if ( activity == "eating" || activity == "sleeping" || activity == "thinking" )
{
System.out.println( " Invalid input. Activity must be eating, sleeping, or thinking." );
activity = CyberPet.DEFAULT_ACTIVITY;
}
// else leave as entered string
/*** Create cyberpet ***/
CyberPet pet = new CyberPet( name, size, activity );
return pet;
}
在尝试执行此操作之前,我一直在使用它(我认为!)
pet3.createPet();
因为 createPet 不在 CyberPet class 中,因此无法在那里使用它。如何使用 createPet 创建 CyberPet 实例?
我希望我在这里提供了足够的信息...这是我在 Whosebug 上的第一个 post,所以如果我需要添加更多内容,请告诉我! :)
嗯,看来您对这些 class 应该如何理解有点混乱。
如果您要创建测试对象,则不需要用户输入。您应该只使用已知值。它更快并且服务于相同的目的。其次,如果你想访问 private static
方法,那么你需要从 class 中进行。可以通过以下方式访问:
TestCyberPet.createPet();
这将 return 类型 CyberPet
的实例。
备注
首先,你需要看一下testing frameworks like JUnit。这会为您自动执行测试过程,并使编写此类测试变得更加容易。
其次,温习OOP知识。您不应在 class 之外对 class 的用户输入执行验证。只有 class 本身应该知道它需要什么。
我有两个 classes,一个是计算对象 (CyberPet.java),另一个是测试计算对象 (TestCyberPet.java)。在 TestCyberPet 中,我有一个名为 createPet() 的方法,它将使用用户输入来实例化 CyberPet 的一个实例。我已经完成了
CyberPet pet3 = null;
这是 createPet():
private static CyberPet createPet()
{
/*** Local variables ***/
Scanner scanner = new Scanner( System.in );
final String formatString = "%22s: ";
String name;
String size;
String activity;
/*** Get user input ***/
System.out.println();
System.out.printf( formatString, "Enter your pet's name" );
name = scanner.nextLine().trim();
System.out.println();
System.out.printf( formatString, "Enter your pet's size (big or small)" );
size = scanner.nextLine().trim().toLowerCase();
System.out.println();
System.out.printf( formatString, "Enter your pet's current activity (eating, sleeping, or thinking)" );
activity = scanner.nextLine().trim().toLowerCase();
/*** Validate input, notify user of errors ***/
if ( name.length() == 0 )
{
System.out.println( " Invalid input. Name cannot be blank." );
name = CyberPet.DEFAULT_NAME;
}
// else leave as entered string
if ( size == "big" || size == "small" )
{
System.out.println( " Invalid input. Size must be either big or small." );
size = CyberPet.DEFAULT_SIZE;
}
// else leave as entered string
if ( activity == "eating" || activity == "sleeping" || activity == "thinking" )
{
System.out.println( " Invalid input. Activity must be eating, sleeping, or thinking." );
activity = CyberPet.DEFAULT_ACTIVITY;
}
// else leave as entered string
/*** Create cyberpet ***/
CyberPet pet = new CyberPet( name, size, activity );
return pet;
}
在尝试执行此操作之前,我一直在使用它(我认为!)
pet3.createPet();
因为 createPet 不在 CyberPet class 中,因此无法在那里使用它。如何使用 createPet 创建 CyberPet 实例?
我希望我在这里提供了足够的信息...这是我在 Whosebug 上的第一个 post,所以如果我需要添加更多内容,请告诉我! :)
嗯,看来您对这些 class 应该如何理解有点混乱。
如果您要创建测试对象,则不需要用户输入。您应该只使用已知值。它更快并且服务于相同的目的。其次,如果你想访问 private static
方法,那么你需要从 class 中进行。可以通过以下方式访问:
TestCyberPet.createPet();
这将 return 类型 CyberPet
的实例。
备注
首先,你需要看一下testing frameworks like JUnit。这会为您自动执行测试过程,并使编写此类测试变得更加容易。
其次,温习OOP知识。您不应在 class 之外对 class 的用户输入执行验证。只有 class 本身应该知道它需要什么。