I've been using C# for a long time and now I need to do something in Java.
Is there something like C#'s struct automatic constructor in java ?
What I mean is In C#
struct MyStruct
{
public int i;
}
class Program
{
void SomeMethod()
{
MyStruct mStruct; // Automatic constructor was invoked; This line is same as MyStruct mStruct = new MyStruct();
mStruct.i = 5; // mStruct is not null and can i can be assigned
}
}
Is it possible to force java to use default constructor on declaration ?
No - Java doesn't support custom value types at all, and constructors are always explicitly called.
However, your understanding of C# is incorrect anyway. From your original post:
// Automatic constructor was invoked
// This line is same as MyStruct mStruct = new MyStruct();
MyStruct mStruct;
That's not true. You can write to mStruct.i
without any explicit initialization here, but you can't read from it unless the compiler knows everything has been assigned a value:
MyStruct x1;
Console.WriteLine(x1.i); // Error: CS0170: Use of possibly unassigned field 'i'
MyStruct x1 = new MyStruct();
Console.WriteLine(x1.i); // No error
No, you always need to explicitly call a constructor in Java.
Since there may be multiple constructors, calling a specific constructor explicitly would probably be good practice anyway.
Java不支持Struct关键字(请参阅: http : //msdn.microsoft.com/en-us/library/ms228600 (v = VS.90 ) .aspx )因此您需要使用仅公开的类对象(没有函数。)你总是需要初始化类。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.