主方法中验证 getStudentSubject() 方法

主方法中验证 getStudentSubject() 方法

http://img1.sycdn.imooc.com/climg//58f938640001e98808010354.jpg

你好!  我要问下如果没有实例化的情况下,如何在主方法中验证截图中的 get 方法?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 小干部_洋气 2017-04-21 22:40:58
	/**
	 *  获取专业对象 ,如果专业对象没有实例化,先实例化再返回
	 * @return stuSubject  专业对象信息
	 */
	
	public Subject getStuSubject() {                    // Student.java  
		if (this.stuSubject == null) {
			this.stuSubject = new Subject();
		}
		return stuSubject;
	}

上面这段代码中 “如果专业对象没有实例化”的意思是不是就是 main 方法中没有下面这行代码。

public class SchoolTest {
	
		public static void main(String[] args) {
		
		Subject sub = new Subject("计算机科学与应用","J0001",4);
		}
		}

如果是这样理解的话,那 getStuSubject() 方法中的判断有何意义?在什么场景下可用到?

因为我将 main 方法写成如下代码都会进行报错:

public class SchoolTest {
	        public static void main(String[] args) {
                Subject sub;           //  声明一个对象,不实例化,想以此测试上面的 getStuSubject()
		Student stu1 = new Student();     // 实例化 stu1 对象
		stu1.setStuSubject(sub);     // 调用 setStuSubject 报错
		Student stu2 = new Student("S01","张三","sdf",200,sub);  // 实例化 stu2 对象报错

ps :  这里是我对实例化与初始化概念不清吗?

  • 1、实例化一般是创建对象,初始化的意思包括的比较多,一般是变量赋值 2、getStuSubject()中的if是防止方法返回null,这是一种健全代码的写法,如果不这样写,有可能使用这个类的人没有给this.stuSubject实例化,之后直接使用其Subject类中的方法或成员变量导致空指针 3、至于你代码报错也可能空指针问题,建议你单步调试,watch变量值的变化,调试程序是非常重要的解决问题方式 如果解决了你的疑惑,请采纳,祝学习愉快~
    2017-04-22 18:10:38
irista23 2017-04-21 10:44:45
// 验证get()方法
public void checkGetMethod() {
// 定义一个局部变量用来验证调用过get()方法后成员变量studentSubject会不会为NULL
Subject temp = getStudentSubject();
if (temp != null) {
System.out.println("get()方法成功,实例成功!");
} else {
System.out.println("get()方法失败,没有实例成功!");
}
}

可以试一下上面的代码,看看是否是你想要的,祝学习愉快!

  • 提问者 小干部_洋气 #1
    谢谢你,这是个好思路。我可能问的不好,还是有些疑惑,希望还请教下。
    2017-04-21 22:07:26
念念熙 2017-04-21 10:22:30

http://img1.sycdn.imooc.com/climg//58f96c740001857f07880428.jpg

我不知道你是不是要这样的效果,如果你不想实例化 那么 getStudentSubject方法的返回值类型需要修改。图中是根据你的提问,我个人理解做了一个小实例,希望对你有帮助。

  • 提问者 小干部_洋气 #1
    谢谢你,可能我还是有些疑惑。
    2017-04-21 22:08:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师