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

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

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

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

Q&A

解決済

3回答

768閲覧

匿名クラスについての解説とエラーの原因について

former_neet_cat

総合スコア46

Java

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

0グッド

0クリップ

投稿2018/02/22 15:05

編集2018/02/23 03:30

匿名クラスのエラーの原因とエラーの原因を教えて欲しいです。

ここに質問の内容を詳しく書いてください。
本に書いてあることを実践していたのですが、エラーが出ました。
そして、匿名クラスと普通のクラスの区別があまり理解できていないので、他のコード付きでの解説もできればお願いしたいです。

本には匿名クラスとは、その名の通り名前のないクラスです。
名前がないため、クラスの定義とインスタンス化を一つの記述で行うことになるのが特長です・・・と書いてあります。

発生している問題・エラーメッセージ

This method must return a result of type boolean

該当のソースコード

java

1public class AnonymousClassSample { 2 3 public static void main(String...args) { 4 5 TaskHandler taskHandler = new TaskHandler() { 6 public boolean handle(Task task) { 7 8 } 9 10 }; 11 Task myTask = new Task(); 12 taskHandler.handle(myTask); 13 14} 15} 16

java

1public interface TaskHandler { 2 3 boolean handle(Task task); 4} 5

java

1public class Task { 2}

補足情報(FW/ツールのバージョンなど)

eclipse使用

###修正した箇所
TaskHandler taskHndler = new TaskHandler
から
TaskHandler taskHandler = new TaskHandler
に修正。
エラーメッセージ
taskHandler cannot be resolved
から
This method must return a result of type boolean
に修正。

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

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

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

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

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

guest

回答3

0

ベストアンサー

匿名クラスはクラスの宣言無しでインターフェースを実装する方法(名前の無いクラスが作られるので匿名)ですが、
それ以前にエラーはただのタイプミスでは?

TaskHandler taskHndler = new TaskHandler()

taskHndler -> taskHandler

名前が解決できない場合はまずタイプミスを疑いましょう。

投稿2018/02/22 15:10

編集2018/02/22 15:14
toki_td

総合スコア2850

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

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

former_neet_cat

2018/02/23 02:45

なるほど、名前が解決できなければタイプミスを疑うのですね。 ありがとうございます。 で、修正したのですが、今度はまた別のエラーが出てしまいました。 よければ教えていただけると嬉しいのですが・・・
guest

0

Java

1TaskHandler taskHandler = new TaskHandler() { 2 public boolean handle(Task task) { 3 // 何か処理を行って、booleanを返す。 4 return true; 5 } 6}

↑は↓と同じです。

Java

1public class MyTaskHandler implements TaskHandler { 2 public boolean handle(Task task) { 3 // 何か処理を行って、booleanを返す。 4 return true; 5 } 6} 7 8// 上記クラスを以下のように使う 9MyTaskHandler myTaskHandler = new MyTaskHandler(); 10Task myTask = new Task(); 11myTaskHandler.handle(myTask);

前者は直接インターフェースをnewして変数に代入している匿名クラス。
後者はMyTaskHandlerという名前を持った普通のクラスです。
エラーの原因はtoki_tdさんの言っている通りです。

投稿2018/02/23 01:05

root_jp

総合スコア4666

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

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

former_neet_cat

2018/02/23 03:34

わかりやすい回答ありがとうございます!
guest

0

java

1public class AnonymousClassSample { 2 3 public static void main(String...args) { 4 5 TaskHandler taskHandler = new TaskHandler() { 6 public boolean handle(Task task) { 7 return "null" != null; 8 } 9 10 }; 11 Task myTask = new Task(); 12 taskHandler.handle(myTask); 13 14} 15}

で解決できました。

投稿2018/02/23 03:32

former_neet_cat

総合スコア46

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問