gpt4 book ai didi

java - 如何处理java.lang.nullpointerException

转载 作者:行者123 更新时间:2023-12-01 06:55:19 24 4
gpt4 key购买 nike

大家好,我真的陷入困境,我不断收到java.lang.NullPointerException。我尝试在每个可能的地方处理它,但我没有成功。这是家庭作业。如果您可以查看并提供有关 java.lang.NullPointerException 的一些反馈,那就太好了。异常发生在 Captain.handleProblem()MalfucntionHandler.proccessMalfunction()

    public abstract class MalfunctionHandler 
{

MalfunctionHandler next;
/**
* severity is a type of Severity
*/
Severity severity;

/**
* @param description describes the severity of the problem
*/
String description;


/**
* @param f file object that refers to the log-silver.txt
*/
File f = new File("log-silver.txt");

MalfunctionHandler(Severity severity)
{
this.severity = severity;
}
public String getDescription()
{
if(description == null)
{
description = "No description available. Probably serious.";
}
return description;
}

final protected void processMalfunction(Malfunction malfunction)
{
if (this.severity == malfunction.getSeverity())
{
handleProblem();
}
else
{
// if(malfunction == null)
next.processMalfunction(malfunction);
}
}
final protected void addHandler(MalfunctionHandler next)
{
this.next = next;
}
abstract void handleProblem();

public Severity getSeverity()
{
return severity;
}
}


public class Malfunction
{
/**
* severity is a type of Severity
*/
Severity severity;

/**
* @param description describes the severity of the problem
*/
String description;

Malfunction(Severity severity, String description)
{
this.description = description;
this.severity = severity;
}

public Severity getSeverity()
{
return severity;
}

public String getDescription()
{
if(description == null)
{
description = "No description available. Probably serious.";
}

return description;
}
}

public enum Severity
{
TRIVIAL, LOW, MEDIUM, HIGH
}

public class SpaceMonkey extends MalfunctionHandler {

MalfunctionHandler malfunction;

SpaceMonkey(Severity severity)
{
super(severity);
}
@Override
void handleProblem()
{
if(malfunction.getDescription() == null)
{
description = "No description available. Probably serious.";
}
FileUtility.writeFile(f, malfunction.getDescription());
FileUtility.writeFile(f, "---> Space monkey assigned to problem.");
}
}

public class ServiceRobot extends MalfunctionHandler {


MalfunctionHandler malfunction;

ServiceRobot(Severity severity)
{
super(severity);
}
void handleProblem()

{
if(malfunction.getDescription() == null)
{
description = "No description available. Probably serious.";
}
FileUtility.writeFile(f, malfunction.getDescription());
FileUtility.writeFile(f, "---> Service Robot assigned to problem.");
}

}

public class Engineer extends MalfunctionHandler
{

MalfunctionHandler malfunction;

Engineer(Severity severity)
{
super(severity);

}

void handleProblem()
{
if(malfunction.getDescription() == null)
{
description = "No description available. Probably serious.";
}
FileUtility.writeFile(f, malfunction.getDescription());
FileUtility.writeFile(f, "---> Engineer assigned to problem.");
}

}

public class Captain extends MalfunctionHandler
{
MalfunctionHandler malfunction ;

Captain(Severity severity)
{
super(severity);
}

@Override
void handleProblem( )
{
if(malfunction.getDescription() == null)
{
description = "No description available. Probably serious.";
}
FileUtility.writeFile(f, malfunction.getDescription());
FileUtility.writeFile(f, "---> Captain assigned to problem.");
}
}

最佳答案

 if(malfunction.getDescription() == null)

您从未在 SpaceMonkey 类中初始化 MalfunctionHandler 对象,并尝试在 handleProblem 中调用其 getDescription() 方法> 方法。在 java 对象中,您的 MalfunctionHandler 故障的默认值为 null;此处为 null,并且您尝试在 null 上访问其方法。

由于您的 MalfunctionHandler 是一个抽象类,因此使用其子类 (SpaceMonkey) 对其进行初始化

 MalfunctionHandler malfunction; = new SpaceMonkey(Severity);

关于java - 如何处理java.lang.nullpointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13305590/

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