Java - Java有类似C#的struct自动构造函数

时间:2012-07-28 14:02:10

标签: c# java constructor

我已经使用C#很长时间了,现在我需要用Java做一些事情。

在java中有类似C#的struct自动构造函数吗?

我的意思是 在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
    }
}

是否可以强制java在声明时使用默认构造函数?

3 个答案:

答案 0 :(得分:6)

不 - Java根本不支持自定义值类型,并且总是显式调用构造函数。

但是,无论如何,您对C#的理解是不正确的。从你原来的帖子:

// Automatic constructor was invoked
// This line is same as MyStruct mStruct = new MyStruct();
MyStruct mStruct; 

那不是真的。你可以mStruct.i而不需要在这里进行任何显式初始化,但除非编译器知道所有内容都已分配了值,否则你无法从中读取

MyStruct x1; 
Console.WriteLine(x1.i); // Error: CS0170: Use of possibly unassigned field 'i'

MyStruct x1 = new MyStruct();
Console.WriteLine(x1.i); // No error

答案 1 :(得分:2)

不,你总是需要在Java中显式调用构造函数。

由于可能有多个构造函数,因此无论如何都明确地调用特定的构造函数。

答案 2 :(得分:0)

Java不支持Struct关键字(请参阅:http://msdn.microsoft.com/en-us/library/ms228600(v=VS.90).aspx),因此您需要使用仅包含公共对象的类(并且不使用任何函数。)您始终需要初始化类。