質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

9649閲覧

The constructor Empty() is not visible というエラーが出ます。

edoooooo

総合スコア476

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2016/03/11 13:56

このようなクラスを作って実行したのですが、The constructor Empty() is not visibleというエラーが出ます。なぜなのでしょうか?

//一つ目のクラスEmpty.java
public class Empty{}

//2つ目のクラスMain.java
public class Main{
public static void main(String[] args){
Empty e=new Empty();
String s=e.toString();
System.out.println(s);
}
}

しっかり同じパッケージ煮含めているのですが、なぜなのでしょうか?

recode👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2016/03/11 14:12

私の環境では再現しません。どのような環境でコードを書き、実行していますか?(Eclipseを使っている、コマンドプロンプトを使っている、など)
edoooooo

2016/03/11 17:31 編集

Eclipseを使っています。Eclipse内でMainクラスを右クリックしてRunAsを選択し、javaApplicationを選択して、実行しています。 Consoleには、このようなエラーが出ました。Exception in thread "main" java.lang.Error: Unresolved compilation problem: The constructor Empty() is not visible at d.Main.main(Main.java:7)、コード自体に、赤い波線が付いており、そこにカーソルを合わせると、The constructor Empty() is not visibleのようにConsole上に出てきます。 説明が不足しており、申し訳ありませんでした。
guest

回答2

0

普通には再現しないので「不思議なことですね・・」という感じになります。

Java

1public class Empty { 2 private Empty(){} 3}

こうすると、ご質問のような状況を起こすことはできます。
まず、Emptyクラスのクラス名を変えてみてはいかがでしょうか。
それから、同じMain.java内にEmptyクラスを置いても同じことが起きますでしょうか。

Java

1public class Main { 2 public static void main(String[] args) { 3 Empty e = new Empty(); 4 String s = e.toString(); 5 System.out.println(s); 6 } 7} 8class Empty { 9}

投稿2016/03/11 23:27

thesecret11

総合スコア234

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2016/03/12 11:18

同じMain.java内にEmptyクラスを置いた所、問題なく動作しました。  そして元のコードに戻して、実行した所、問題なく動きました。  コンパイルの問題だったようです。 ご指導ありがとうございました。
guest

0

ベストアンサー

いろいろ実験をしたところ、下記の状態で再現できました。

java

1// Empty.javaのファイル 2package d; 3 4//一つ目のクラスEmpty.java 5public class Empty{ 6 public Empty(int intValue) {} 7 public Empty(String stringValue) {} 8 public Empty(float flatValue) {} 9}

の状態で実行し、

Exception in thread "main" java.lang.Error: Unresolved compilation problem: コンストラクター Empty() は未定義です at d.Main.main(Main.java:7)

コンストラクタメソッドとして、「引数ありメソッド」を定義し、
「引数なしメソッド」が無い状態にしてしまうと上記のエラーメッセージが表示されました。

質問文の中ではEmptyクラスの中身が何もない状態で張り付けられておられますが、
実際にはメソッドがありますでしょうか?
もしその場合、変数なしコンストラクタが在るかをご確認なさってください。


コメントをいただいて、
考え直したら思い切り間違っていることに気付きました。
お恥ずかしい。

間違ったものは「間違い回答」として残しつつ、
正しい回答を適宜、記載します。

↓間違い回答

コンストラクタとはクラスをインスタンス化するときに実行される、
クラス名と同じ名前のメソッドのことです。

質問者様のコードでの下記の箇所でEmpty()が実行されることになっています。

java

1 Empty e=new Empty();

しかし、
class Emptyの定義にコンストラクタが定義されていないためエラーが発生しています。

修正するなら下記の様になります。

java

1 //一つ目のクラスEmpty.java 2 public class Empty { 3 public Empty() { /* コンストラクタはクラス名と同名、 4 戻り値もクラスがそのまま返されるになるので記載しません */ 5 /* 何か初期化処理 */ 6 } 7 } 8

以上、
ご参考になりますでしょうか?

投稿2016/03/11 14:04

編集2016/03/12 05:59
Aeona

総合スコア396

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2016/03/11 14:13

コンストラクタを一つも書かなければ、引数なし内容無しのコンストラクタが自動で作成されるためこれは違うかと思います。
edoooooo

2016/03/11 17:35

変更して、実行してみたのですが、Consoleの結果は、変わりませんでした。  コンストラクタが見つかりませんと Exception in thread "main" java.lang.Error: Unresolved compilation problem: The constructor Empty() is not visible at d.Main.main(Main.java:7) このように、Consoleには書いてはいるのですが、どうぞよろしくお願いします。
swordone

2016/03/11 17:48

Emptyクラスも間違いなくpackage d;に入っていますか?
edoooooo

2016/03/11 20:25

入っています。
argius

2016/03/12 07:01

`Empty`クラスにプライベートアクセスのコンストラクター`private Empty()`が以前あって、 後で消したが`Empty`クラスが再コンパイルされていない可能性はないでしょうか。 そうでなければ、このコードには問題は無いように見えます。
edoooooo

2016/03/12 11:15

何度か実行してみた所、問題なく動作しました。コンパイルの問題でした。  ありがとうござました。
edoooooo

2016/03/12 11:19

メソッドは、コードの中には、ありませんでした。  皆様、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問