Variable ‘g‘ initializer ‘new Goods()‘ is redundan;Stu s = new Stu(); 和 Stu stu; 的区别

1、在编程中,当你看到警告或错误信息说“Variable ‘g1’ initializer ‘new Goods()’ is redundant”,这通常意味着你创建了一个名为 g1 的变量,并且使用 new Goods() 作为其初始化表达式,但这个初始化是多余的或者不必要的。

// 同样:new ArrayList<>(); 会变灰色。new ArrayList<>(); 肯定好些。
Variable ‘list2’ initializer ‘new ArrayList<>()’ is redundant
List list2 = new ArrayList<>();
list2 = goodsMapper.getGoods(param);

这种情况可能由几个原因造成:
(1) 重复实例化:如果 g1 的值稍后会被重新赋值,那么最初的 new Goods() 调用可能就是不必要的。new Goods() 肯定好一些;

(2) 变量已经被默认初始化:在某些编程语言或上下文中,变量在声明时可能已经通过其类型的默认构造函数或值被初始化。如果随后你又显式地调用 new Goods() 来初始化它,那么这个额外的初始化步骤就是多余的。

(3) 代码逻辑问题:可能你的代码逻辑并不需要立即创建 Goods 类的实例。也许你在稍后的某个时间点才需要这个实例,或者你可能只是忘记了移除测试代码。

解决方案:

检查变量使用:回顾你的代码,确保 g1 确实需要在声明时就被初始化为 Goods 的实例。如果不是必需的,可以考虑移除 new Goods()。

延迟实例化:如果 g1 的实例化可以在后面的某个时刻进行,那么考虑将其推迟到真正需要的时候。

代码重构:如果 g1 的使用模式表明它可能不应该是一个局部变量,那么考虑将其提升为类的成员变量或传递为函数参数。

检查类的设计:如果 Goods 类或其构造函数的设计使得你经常遇到这种“冗余初始化”的情况,可能需要重新考虑类的设计或构造函数的功能。

2、在Java中,Student student = new Student(); 和 Student student; 之间的区别主要体现在变量的初始化和使用上。

Student student = new Student();
这行代码做了两件事:
    声明了一个类型为Student的变量名为student。
    通过new Student();调用了Student类的构造函数来创建Student类的一个新实例,并将这个新创建的对象的引用赋值给变量student。
    这意味着student变量现在引用了内存中的一个Student对象。 你可以通过这个变量student来访问Student类的成员变量和方法。

Student student;
这行代码只做了一件事:
    声明了一个类型为Student的变量名为student。但是,这里没有初始化这个变量,也就是说,student变量此时并没有引用任何Student对象。
    它的初始值是null,表示它不引用任何对象。
    
    在你尝试通过student变量访问Student类的成员变量或方法之前,你必须先通过new关键字创建一个Student类的实例,
    并将其引用赋值给student变量。否则,如果你尝试在student被初始化之前就使用它(比如访问它的成员或方法),
    你的程序将会抛出一个NullPointerException。
    //报空指针
    Person person9 = null;
    person9.setName("姓名9");
	 //报空指针
 	Person person9 ;
    person9.setName("姓名9");
public class Main {  
    public static void main(String[] args) {  
        // 声明并初始化student变量  
        Student student1 = new Student();  
        // 现在可以安全地使用student1  
        student1.someMethod(); // 假设Student类有一个名为someMethod的方法  
  
        // 只声明student变量,未初始化  
        Student student2;  
        // 尝试使用student2将导致NullPointerException  
        // student2.someMethod(); // 这是不安全的,会引发NullPointerException  
  
        // 正确初始化后使用student2  
        student2 = new Student();  
        student2.someMethod(); // 现在可以安全使用  
    }  
}  
  
class Student {  
    public void someMethod() {  
        System.out.println("Hello from Student class!");  
    }  
}
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值