14

私の知る限り、コンストラクターは何も返さず、voidでさえも返しません。

そしてまた

return ;

メソッド内はvoidを返すことを意味します。

だから私のプログラムでは

public class returnTest {

    public static void main(String[] args) {
        returnTest obj = new returnTest();
        System.out.println("here1");

    }

    public returnTest () 
    {
        System.out.println("here2");
        return ;
    }
    }

呼んでいます

return;

これはVOIDを返しますが、コンストラクターは何も返さないはずです。プログラムは問題なくコンパイルされます。

説明してください 。

4

6 に答える 6

27

returnコンストラクターでは、指定されたポイントでコンストラクターから飛び出します。状況によっては、クラスを完全に初期化する必要がない場合に使用できます。

例えば

// A real life example
class MyDate
{
    // Create a date structure from a day of the year (1..366)
    MyDate(int dayOfTheYear, int year)
    {
        if (dayOfTheYear < 1 || dayOfTheYear > 366)
        {
            mDateValid = false;
            return;
        }
        if (dayOfTheYear == 366 && !isLeapYear(year))
        {
            mDateValid = false;
            return;
        }
        // Continue converting dayOfTheYear to a dd/mm.
        // ...
于 2013-03-04T06:12:16.907 に答える
3

returnステートメントの後のステートメントには到達できません。return ステートメントが最後である場合、コンストラクターで定義しても意味がありませんが、それでもコンパイラーは文句を言いません。それはうまくコンパイルされます。

if条件exに基づいてコンストラクターで初期化を行っている場合、データベース接続が利用可能であれば初期化し、それ以外の場合は一時的な目的でローカルディスクからデータを読み取りたい場合があります。

public class CheckDataAvailability 
{
    Connection con =SomeDeligatorClass.getConnection();
    
    public CheckDataAvailability() //this is constructor
    {
        if(conn!=null)
        {
            //do some database connection stuff and retrieve values;
            return; // after this following code will not be executed.
        }

        FileReader fr;  // code further from here will not be executed if above 'if' condition is true, because there is return statement at the end of above 'if' block.
        
    }
}
于 2013-03-04T13:03:58.847 に答える
1

voidコンストラクターと同様に戻り値の型で宣言されたメソッドは、何も返しません。returnこれが、それらのステートメントをまったく省略できる理由です。コンストラクターの戻り値の型が指定されていない理由voidは、コンストラクターと同じ名前のメソッドを区別するためです。

public class A
{
    public A () // This is constructor
    {
    }

    public void A () // This is method
    {
    }
}
于 2013-03-04T06:13:22.447 に答える