Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象中包含对象的JavaBeans性能_Java_Javabeans - Fatal编程技术网

对象中包含对象的JavaBeans性能

对象中包含对象的JavaBeans性能,java,javabeans,Java,Javabeans,我正在开发一个bean类,它具有多面属性(name有名字、姓氏和中间名)。请比较我的两种方法,以便在我的应用程序中使用相同的方法 方法1: public class SampleVO { String firstName; String middleName; String lastName; // getters and setters } 方法2: //Main object public class SampleVO1 { NameVO name = new NameVO(); // g

我正在开发一个bean类,它具有多面属性(name有名字、姓氏和中间名)。请比较我的两种方法,以便在我的应用程序中使用相同的方法

方法1:

public class SampleVO {
String firstName;
String middleName;
String lastName;
// getters and setters
}
方法2:

//Main object
public class SampleVO1 {
NameVO name = new NameVO();
// getters and setters
}
//Name object
public class NameVO {
    String firstName;
    String middleName;
    String lastName;
    // getters and setters
}

注:以上仅为示例。要求对一组属性进行分组。以上哪种性能/代码标准是好的?

首先,确保它们是私有的/受保护的。他们不应该在自己的班级之外直接访问:

public class NameVO {
  protected String firstName;
  protected String middleName;
  protected String lastName;
// getters and setters
}

假设SampleVO1不仅仅是初始化类,方法2是可取的。

首先,确保它们是私有的/受保护的。他们不应该在自己的班级之外直接访问:

public class NameVO {
  protected String firstName;
  protected String middleName;
  protected String lastName;
// getters and setters
}

假设SampleVO1不仅仅是初始化类,方法2是可取的。

首先,确保它们是私有的/受保护的。他们不应该在自己的班级之外直接访问:

public class NameVO {
  protected String firstName;
  protected String middleName;
  protected String lastName;
// getters and setters
}

假设SampleVO1不仅仅是初始化类,方法2是可取的。

首先,确保它们是私有的/受保护的。他们不应该在自己的班级之外直接访问:

public class NameVO {
  protected String firstName;
  protected String middleName;
  protected String lastName;
// getters and setters
}

方法2是可取的,假设SampleVO1不仅仅是初始化类。

它实际上取决于您的用例。如果您需要在其他地方使用
NameVO
,或者将
firstName
middleName
lastName
封装在一个单独的对象中更有意义,那么请使用第二种解决方案。如果这对你来说没有意义,就拿第一个吧

这两种解决方案都不应该存在任何性能问题。如果要使用第二种解决方案,可以在
SampleVO1
中为
NameVO
的属性提供getter和setter。比如说:

public class SampleVO1 {
    protected NameVO nameVo = new NameVO();

    public String getFirstName() {
        return nameVo.getFirstName();
    }

    public void setFirstName(String firstName) {
        this.nameVo.setFirstName(firstName);
    }

    // etc.
}

这实际上取决于您的用例。如果您需要在其他地方使用
NameVO
,或者将
firstName
middleName
lastName
封装在一个单独的对象中更有意义,那么请使用第二种解决方案。如果这对你来说没有意义,就拿第一个吧

这两种解决方案都不应该存在任何性能问题。如果要使用第二种解决方案,可以在
SampleVO1
中为
NameVO
的属性提供getter和setter。比如说:

public class SampleVO1 {
    protected NameVO nameVo = new NameVO();

    public String getFirstName() {
        return nameVo.getFirstName();
    }

    public void setFirstName(String firstName) {
        this.nameVo.setFirstName(firstName);
    }

    // etc.
}

这实际上取决于您的用例。如果您需要在其他地方使用
NameVO
,或者将
firstName
middleName
lastName
封装在一个单独的对象中更有意义,那么请使用第二种解决方案。如果这对你来说没有意义,就拿第一个吧

这两种解决方案都不应该存在任何性能问题。如果要使用第二种解决方案,可以在
SampleVO1
中为
NameVO
的属性提供getter和setter。比如说:

public class SampleVO1 {
    protected NameVO nameVo = new NameVO();

    public String getFirstName() {
        return nameVo.getFirstName();
    }

    public void setFirstName(String firstName) {
        this.nameVo.setFirstName(firstName);
    }

    // etc.
}

这实际上取决于您的用例。如果您需要在其他地方使用
NameVO
,或者将
firstName
middleName
lastName
封装在一个单独的对象中更有意义,那么请使用第二种解决方案。如果这对你来说没有意义,就拿第一个吧

这两种解决方案都不应该存在任何性能问题。如果要使用第二种解决方案,可以在
SampleVO1
中为
NameVO
的属性提供getter和setter。比如说:

public class SampleVO1 {
    protected NameVO nameVo = new NameVO();

    public String getFirstName() {
        return nameVo.getFirstName();
    }

    public void setFirstName(String firstName) {
        this.nameVo.setFirstName(firstName);
    }

    // etc.
}

一个单一的间接层次通常并不重要。您看到的延迟通常是一次内存访问,即4-200个时钟周期。对于优化代码,通常小于10纳秒

注意:每个字符串对象中都有两级间接寻址。如果间接寻址破坏了您的性能,那么您将不仅仅使用原语或堆外内存,根本不会使用
String

简言之,成本只是使用一个字符串的成本的一小部分


在考虑性能问题时,您应该从最简单、最清晰的实现开始,只有当您衡量了性能问题时,您才应该出于性能原因修改代码,并且您应该测试您的更改,因为您的“改进”通常会更差,或者没有更好,更复杂。

一个单一的间接层次通常并不重要。您看到的延迟通常是一次内存访问,即4-200个时钟周期。对于优化代码,通常小于10纳秒

注意:每个字符串对象中都有两级间接寻址。如果间接寻址破坏了您的性能,那么您将不仅仅使用原语或堆外内存,根本不会使用
String

简言之,成本只是使用一个字符串的成本的一小部分


在考虑性能问题时,您应该从最简单、最清晰的实现开始,只有当您衡量了性能问题时,您才应该出于性能原因修改代码,并且您应该测试您的更改,因为您的“改进”通常会更差,或者没有更好,更复杂。

一个单一的间接层次通常并不重要。您看到的延迟通常是一次内存访问,即4-200个时钟周期。对于优化代码,通常小于10纳秒

注意:每个字符串对象中都有两级间接寻址。如果间接寻址破坏了您的性能,那么您将不仅仅使用原语或堆外内存,根本不会使用
String

简言之,成本只是使用一个字符串的成本的一小部分

在考虑性能问题时,您应该从最简单、最清晰的实现开始,只有当您衡量了性能问题时,您才应该出于性能原因修改代码,并且您应该测试您的更改,因为您的“改进”通常会更差,或者没有更好,更复杂。

一个单独的le