Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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
Java 具有可变参数值且不更改其签名的方法_Java_C# - Fatal编程技术网

Java 具有可变参数值且不更改其签名的方法

Java 具有可变参数值且不更改其签名的方法,java,c#,Java,C#,这篇文章是关于我在面试中遇到的一个问题,我在这里提出这个问题是为了找到解决这个问题的不同方法 面试官让我在白板上写下我将如何设计一种接收Person对象的方法,因此我写下: class Person { //Some properties } public void MyMethod(Person p) { } 然后面试官告诉我,该方法必须为此人接收一个地址列表数组,我修改如下: class Person { //Some properties private

这篇文章是关于我在面试中遇到的一个问题,我在这里提出这个问题是为了找到解决这个问题的不同方法

面试官让我在白板上写下我将如何设计一种接收Person对象的方法,因此我写下:

class Person
{
    //Some properties
}

public void MyMethod(Person p)
{   
}
然后面试官告诉我,该方法必须为此人接收一个地址列表数组,我修改如下:

class Person
{
    //Some properties
    private List<Address> adds;
}

class Address
{
    //Some properties
}

public void MyMethod(Person p)
{   
}
然后他告诉我这个方法必须收到一份有地址的人的名单,还有那个人的老板的名单,所以我这样做了:

class Parameter
{
    private List<Person> pers;
}

class Person
{
    //Some properties
    private List<Address> adds;
    private List<Boss> boss;
}

class Address
{
    //Some properties
}

class Boss
{
    //Some properties
}

public void MyMethod(Parameter p)
{   
}
在每次更改中,他都告诉我不能修改方法签名

面试官只是说可以,但我不认为他对我的方法很信服,我不是C或Java方面的专家面试官说他精通Java,我非常紧张,以至于我想到了这个简单的解决方案,但似乎这是一个非常糟糕的选择


如果您能指导我使用C或Java以最佳方式解决这个问题,我将不胜感激。好的,我认为这里要提到的重要一点是对实体行为的不同看法

所以Address类或者更好的,它应该是一个不可变的数据类型类。一个人可以有一个或多个地址对象。 我的问题与Boss and Person类有关:您想要一个认识N个人的Boss,还是想要一个认识N个Boss对象的人,或者两者都是1:N或N:M关系

我的建议是不要这样做。您有简单的实体类,扩展很繁重。如果您想要这样的行为,请使用组合,例如,Boss具有带有委派的person属性,或者通过在Boss类中再次定义address等简单方式重用您的数据类型

在不改变参数ok的情况下,这有点愚蠢。我知道你使用参数类的目的,但这不是一个好方法。因此,如果您的方法应该只接收Person对象,请使用Person类型,否则将使用集合类型重载该方法


所以这只是我对这个话题的看法

我认为面试官希望你有一个上司扩展的人,如果你的方法没有收到地址列表,它会收到一个已经有地址列表的人。我不确定您试图对参数做什么。所以不更改方法签名是一项要求?你在标题中写道,但从未在问题中澄清。我认为老板应该有一份下属名单,而不是老板名单。。。另外,Boss通常是个人,因此类Boss应该扩展类Person。@PaulLemarchand创建参数类是因为他要求我接收persons@OHGODSPIDERS谢谢你的关注,我只是修改了这个问题来添加这个