亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java方法可以返回不同的對象嗎?

java方法可以返回不同的對象嗎?

瀟瀟雨雨 2024-01-17 20:53:15
假設我有兩個類 Person1 和 Person2,它們實現了 History 接口。我想在 History 接口中有一個靜態方法,它根據如下字符串返回 Person1 或 Person2 :public static Object getPerson(String p){    switch(p){        case "a":            return new Person1();        default:            return new Person2();    }}我這里沒有任何錯誤。但是如何在另一個類中使用它,以便從 Person1 或 Person2 獲取方法?我嘗試這樣做:Object env = IEnvironment.getPerson(clientEnv);但我不能寫 env.myMethod() 例如。接口是正確的解決方案嗎?如何實現這一目標?謝謝!
查看完整描述

2 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

您可以創建一個接口并讓這些類實現這個接口。然后從 switch 就可以返回這個接口。


 public static History getPerson(String p){

    switch(p){

        case "a":

            return new Person1();

        default:

            return new Person2();

    }

 }


查看完整回答
反對 回復 2024-01-17
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

你想要這樣的東西嗎:


$ java Foo a

Person1

$ java Foo b

Person2

$ cat Foo.java

/**

 * This is just a container so I can do it all in one class.

 */

public class Foo {

    // Static just for packaging purposes

    public static class History {

        public void printMe() { System.out.println("History"); }

    }


    // Static just for packaging purposes

    public static class Person1 extends History {

        public void printMe() { System.out.println("Person1"); }

    }


    // Static just for packaging purposes

    public static class Person2 extends History {

        public void printMe() { System.out.println("Person2"); }

    }


    public static History makePerson(String str) {

        History retVal = (str.equals("a")) ? new Person1() : new Person2();

        return retVal;

    }


    public static void main(String[] args) {

        History person = makePerson(args[0]);

        person.printMe();

    }

}

(編輯以測試它并在比較中正確使用 .equals 而不是 == 。)


查看完整回答
反對 回復 2024-01-17
  • 2 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號