簡體   English   中英

如何在Java中使用一個方法在一個類中創建另一個實例?

[英]How can I use a method in one class to create an instance of another in Java?

我有兩個類,一個是計算對象(Cyber​​Pet.java),另一個是測試計算對象(TestCyber​​Pet.java)。 在TestCyber​​Pet中,我有一個名為createPet()的方法,該方法將使用用戶輸入實例化Cyber​​Pet的實例。 我已經做完了

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不在Cyber​​Pet類中使用。 如何使用createPet創建Cyber​​Pet的實例?

我希望我在這里放足夠的信息...這是我關於StackOverflow的第一篇文章,因此,如果我需要添加更多內容,請告訴我! :)

好吧,似乎您對這些類應如何理解有所混淆。

如果要創建測試對象,則不需要用戶輸入。 您應該只使用已知值。 它更快並且達到了相同的目的。 其次,如果要訪問private static方法,則需要從類內部進行訪問。 可以通過以下方式訪問它:

TestCyberPet.createPet();

這將返回一個CyberPet類型的實例。

注意

  • 首先,您需要查看JUnit之類的測試框架 這將為您自動化測試過程,並使編寫這類測試變得更加容易。

  • 其次,修改您對OOP的知識。 您不應該對該類之外的類執行用戶輸入的驗證。 只有班級本身應該知道它需要什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM