Я неплохо разбираюсь в Java, потому что я работаю разработчиком C# на полную ставку, но мне нужно сделать какой-нибудь частный проект на Android.
В С# я могу сделать что-то вроде этого:
public class Test
{
public string A {get;set;}
public OtherClass B {get;set;}
}
public OtherClass ()
{
string Some {get;set;}
string Again {get;set;}
}
Теперь, когда я хочу использовать тест класса, я могу сделать такой код:
var test = new Test
{
A = "test",
B = new OtherClass
{
Some = "Some",
Again = "Again"
}
};
Благодаря этому теперь я четко инициализировал тест.
Когда я хочу сделать это на Java, я должен сделать код вроде:
public class Test
{
private string A;
public string GetA()
{
return A;
}
public void SetA(string a)
{
A = a;
}
privte OtherClass B;
public OtherClass GetB()
{
return B;
}
public void SetB(OtherClass b)
{
B = b;
}
}
public class OtherClass
{
private string Some;
public string GetSome()
{
return Some;
}
public void SetSome(string some)
{
Some = some;
}
privte string Again;
public string GetAgain()
{
return Again;
}
public void SetAgain(string again)
{
Again = again;
}
}
Я знаю, что Java должен иметь Seter и Geter для поля, и я согласен с этим, но теперь, если я хочу использовать объект Test
так же, как я использую его в C #, я должен сделать что-то вроде:
OtherClass otherClass = new OtherClass();
otherClass.SetSome("Some");
otherClass.SetAnothier("Another");
Test test = new Test();
test.SetA("A")
test.SetB(otherClass);
ИМО это не очень хорошая и четкая декларация. Я знаю, что могу добавить конструктор, например:
public Test(string a, otherClass b)
{
A = a;
B = b;
}
а также
public OtherClass(string some,string another)
{
Some = some;
Another = another;
}
И используйте его как:
Test test = new Test("Test",new OtherClass("some","Another"));
Но когда у меня есть более сложные классы (например, с полем 200 (да, у меня есть это)) конструктор будет очень длинным, и его будет трудно прочитать.
Итак, могу ли я инициализировать класс в Java другим способом, который я вам показываю?
Благодарить