Java:函数局部变量初始化
我有一个java函数。在第一个函数中,使用第二个函数中的声明初始化返回变量“ret”,必要时在try内部初始化。你们觉得哪一个更好?请考虑列表作为一个例子,它可以是字符串和类型。多谢各位 第一个功能:Java:函数局部变量初始化,java,Java,我有一个java函数。在第一个函数中,使用第二个函数中的声明初始化返回变量“ret”,必要时在try内部初始化。你们觉得哪一个更好?请考虑列表作为一个例子,它可以是字符串和类型。多谢各位 第一个功能: public List<String> getNames() { List<String> ret = new ArrayList<String>(); try { // use ret } catch(Exception e){
public List<String> getNames() {
List<String> ret = new ArrayList<String>();
try {
// use ret
} catch(Exception e){
}
}
public List<String> getNames() {
List<String> ret = null;
try {
// some more code
ret = new ArrayList<String>();
// use ret
} catch(Exception e){
}
}
public List getNames(){
List ret=new ArrayList();
试一试{
//使用ret
}捕获(例外e){
}
}
第二个功能:
public List<String> getNames() {
List<String> ret = new ArrayList<String>();
try {
// use ret
} catch(Exception e){
}
}
public List<String> getNames() {
List<String> ret = null;
try {
// some more code
ret = new ArrayList<String>();
// use ret
} catch(Exception e){
}
}
public List getNames(){
列表ret=null;
试一试{
//还有代码吗
ret=新的ArrayList();
//使用ret
}捕获(例外e){
}
}
第一个更好,因为将ret
分配给new ArrayList()
不会失败。最好将try
块的内容限制为可能引发异常的操作。第一个更好,因为将ret
分配给new ArrayList()
不会失败。最好将try
块的内容限制为可能引发异常的操作。这取决于您的目标。如果在创建ArrayList
实例之前必须满足某些依赖项或条件,那么可以选择第二个选项。我建议使用第二个选项,因为它可以在需要时立即创建实例。只有在创建和使用ArrayList
实例之前看到代码,才能完成整个决策。这将使列表
引用在创建之前失败时保留为空。我们也可以在try catch块之后进行初始化
public List<String> getNames() {
List<String> ret = null;
try {
// code which is prone to exception
} catch(Exception e){
}
ret = new ArrayList<>();
//set the values in ret and return it
}
public List getNames(){
列表ret=null;
试一试{
//易发生异常的代码
}捕获(例外e){
}
ret=新的ArrayList();
//在ret中设置值并返回它
}
}
最佳做法是仅在需要时初始化对象。这取决于您的目标。如果在创建ArrayList
实例之前必须满足某些依赖项或条件,那么可以选择第二个选项。我建议使用第二个选项,因为它可以在需要时立即创建实例。只有在创建和使用ArrayList
实例之前看到代码,才能完成整个决策。这将使列表
引用在创建之前失败时保留为空。我们也可以在try catch块之后进行初始化
public List<String> getNames() {
List<String> ret = null;
try {
// code which is prone to exception
} catch(Exception e){
}
ret = new ArrayList<>();
//set the values in ret and return it
}
public List getNames(){
列表ret=null;
试一试{
//易发生异常的代码
}捕获(例外e){
}
ret=新的ArrayList();
//在ret中设置值并返回它
}
}
最佳做法是仅在需要时初始化对象。这取决于需要。
在第一种方法中,如果发生异常,您仍然可以控制ret
,而在后一种方法中,您不能控制它。这实际上取决于需要。
在第一种方法中,如果发生异常,您仍然可以控制ret
,在后一种方法中,您不能控制它。这取决于您正在做什么。如果您可能在try和catch中都使用ret,请使用第一种形式。如果您只想在try块中使用ret,请将ret的增量放在try块中
public List<String> getNames() {
try {
// some more code
List<String> ret = new ArrayList<String>();
// use ret
} catch(Exception e){
}
}
public List getNames(){
试一试{
//还有代码吗
List ret=new ArrayList();
//使用ret
}捕获(例外e){
}
}
这取决于你在做什么。如果您可能在try和catch中都使用ret,请使用第一种形式。如果您只想在try块中使用ret,请将ret的增量放在try块中
public List<String> getNames() {
try {
// some more code
List<String> ret = new ArrayList<String>();
// use ret
} catch(Exception e){
}
}
public List getNames(){
试一试{
//还有代码吗
List ret=new ArrayList();
//使用ret
}捕获(例外e){
}
}
这取决于具体情况。如果在特定操作中没有要捕获的内容。没有必要把它放在try catch
中
List<String> ret = new ArrayList<String>(); // here no exception will throw.
List ret=new ArrayList();//这里没有例外。
这取决于具体情况。如果在特定操作中没有要捕获的内容。没有必要把它放在try catch
中
List<String> ret = new ArrayList<String>(); // here no exception will throw.
List ret=new ArrayList();//这里没有例外。
我个人使用第一种方法。我不一定认为在try/catch
中初始化它有什么好处,尽管从技术上讲,您是通过在try/catch
之前的第二个代码块中将它设置为null
来初始化它的。要声明它,请使用List-ret代码> 我个人使用第一种方法。我不一定认为在try/catch
中初始化它有什么好处,尽管从技术上讲,您是通过在try/catch
之前的第二个代码块中将它设置为null
来初始化它的。要声明它,请使用List-ret代码> 在第一种情况下,即使try块中发生异常,也可以确保发送一个空白的ArrayList
,而在第二种情况下,如果异常发生在ArrayList
初始化之前,则会发回一个null
。第二种方法的另一个好处是,仅在需要时才创建数组列表,而不是之前不必要的创建
这两种方法都可以,但最好使用第二种方法,因为返回null
特别意味着出现了一些问题,因此可以适当地处理和解释null
,然而,一个空白的Arraylist
可能并不总是能够在没有返回记录的情况下区分异常和正确执行。在第一种情况下,即使在try块中发生异常,也可以确保发送一个空白的Arraylist