作业的问题
来源:3-10 自由编程
慕丝7446887
2020-03-03 09:18:48
请老师检查一下代码有没有问题。我在运行的时候,发生了一个错误,问题是出在通过Method调用equalsAddress方法上,没有输出结果。这是什么问题?是不是在新建实例的时候要调用有参的构造方法?
测试类:
package com.imooc.program;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.junit.Test;
public class ProgramTest {
@Test
public void demo1() throws Exception {
//获取Class类
Class class1 = Class.forName("com.imooc.program.Address");
//实例化
Address addr = (Address)class1.newInstance();
//获取方法
Method method1 = class1.getMethod("display");
//执行方法
method1.invoke(addr);
Method method2 = class1.getDeclaredMethod("info");
//设置访问权限
method2.setAccessible(true);
method2.invoke(addr);
//通过Method调用equalsAddress()方法
Method method3 = class1.getDeclaredMethod("equalsAddress", String.class);
method3.setAccessible(true);
method3.invoke(addr,"Tom");
}
}Address类:
package com.imooc.program;
public class Address {
private String addrId;
private String name;
private String addrDetail;
private String phone;
public Address() {
}
public Address(String addrId,String name,String addrDetail,String phone) {
this.addrId = addrId;
this.name = name;
this.addrDetail = addrDetail;
this.phone = phone;
}
public String getAddrId() {
return addrId;
}
public void setAddrId(String addrId) {
this.addrId = addrId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddrDetail() {
return addrDetail;
}
public void setAddrDetail(String addrDetail) {
this.addrDetail = addrDetail;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Address [addrId=" + addrId + ", name=" + name + ", addrDetail=" + addrDetail + ", phone=" + phone + "]";
}
public void display() {
System.out.println("这是一个地址");
}
private void info() {
System.out.println("我是一个私有方法");
}
private void equalsAddress(String name) {
if(this.name.equals(name)) {
System.out.println("值相等");
}else {
System.out.println("值不相等");
}
}
}1回答
同学你好,报错提示是空指针异常。如果没有使用带参构造方法,this.name获取为null,所以报异常,这里建议使用带参构造方法实例化,或者无参构造方法实例化后设置属性。
例如:

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题