gpt4 book ai didi

java - 在这种情况下如何避免 switch 语句

转载 作者:行者123 更新时间:2023-11-29 07:42:36 24 4
gpt4 key购买 nike

我想避免使用 switch 语句,但我不知道该怎么做。这是我的问题:

public class Person{
String status;

public void doSomething(){
switch (status) {
case "hungry":
eatSomething();
status = "full";
break;
case "full":
doNothing();
status = "hungry";
default:
break;
}
}}

我想做这样的事情:

    public abstract class Person{
public abstract void doSomething();
}

public class HungryPerson extends Person{
@Override
public void doSomethink() {
eatSomething();
}
}


public class FullPerson extends Person{
@Override
public void doSomething() {
doNothing();
}
}

问题是:如果 Person 吃了东西,那么他必须是 FullPerson,但是如果我有一个 HungryPerson 的引用怎么可能我将其更改为 FullPerson

int main(){
Person person = new HungryPerson();
person.doSomething();
//I want to person contain a FullPerson reference.
}

最佳答案

实际上,从面向对象的角度来看,您的第一个实现更好。对象的状态可以改变,但对象本身仍然是同一个对象。即使您饿了或吃完饭后,您仍然是同一个人。您可能希望使用 Enum 而不是 String 作为状态。

关于java - 在这种情况下如何避免 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28776744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com