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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

1196閲覧

java overridden method does not throw SQLExceptionが解決できません。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/08/07 06:18

編集2021/08/07 07:31

import java.io.;
import java.util.
;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

class ShowItems extends Operation{
public static String MENU_NO = "1";

public ShowItems(ItemDAO model) {
super(model);
}

public void execute()throws IOException, SQLException{
ArrayList<Item> itemList = super.model.findAll();
String iListData = "";
// try {
for(Item i : itemList){
iListData = iListData +(i.getItemCode() + "," + i.getItemName()+ "," + i.getPrice() + "\n");
}
//}catch (SQLException e) {

// }
System.out.println(iListData);
}

public String getMenuNo() {
return MENU_NO;
}

public String getMenuName() {
return MENU_NAME;
}

}

public ArrayList<Item> findAll()throws SQLException, IOException, InstantiationException,IllegalAccessException, ClassNotFoundException{

DBAccess accessDatabase = new DBAccess(); Connection con = accessDatabase.createConnection(); ArrayList itemList = new ArrayList(); Statement st = con.createStatement(); String selectst = "SELECT * FROM ITEM"; ResultSet result = st.executeQuery( selectst ); while( result.next() ) { String str1 = result.getString( "itemCode" ); String str2 = result.getString( "itemName" ); int int3 = result.getInt( "price" ); Item re = new Item(str1 , str2 , int3); itemList.add(re); } result.close(); st.close(); con.close(); return itemList; }

上記メソッドをで、下記のエラーが出ました。

error: execute() in Items cannot override execute() in Operation
public void execute()throws IOException, SQLException{
^
overridden method does not throw SQLException

エラーが発生したので、ググってみたら、 無効にされた方法は、SQLExceptionを投げないと出ました。
try-catch追加や、exceptionの追加を試したのですが、エラーは消えませんでした。
overridden method does not throw SQLException
の解決法を教えて頂きたいです。

[修正後]
abstract class Operation throws SQLException, IOException {
protected ItemDAO model;
public Operation(ItemDAO model) {
this.model = model;
}

abstract public void execute() throws SQLException,IOException; abstract public String getMenuNo(); abstract public String getMenuName();

}

ご回答いただき、ありがとうございます。
Operation クラスにthrows SQLException, IOExceptionを記載してませんでしたので、追加し、Operation クラスのexecute() と
引数、型、メソッド名を同じか確認し、実行したのですが、
./ShowItems.java:21: error: execute() in ShowItems cannot override execute() in Operation
public void execute()throws SQLException, IOException {
^
overridden method does not throw SQLException
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

上記エラーが出て、エラー内容が変わりませんでした。execute()の下にエラーが出ているので、execute()に問題があると思うのですが、
わからず、すいませんが、アドバイス頂きたいです。

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

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

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

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

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

guest

回答3

0

修正後のコードにて

java

1abstract class Operation throws SQLException, IOException

「クラス」にthrowsはつけられないよ。つけるのは「メソッド」。

投稿2021/08/07 08:24

swordone

総合スコア20669

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

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

退会済みユーザー

退会済みユーザー

2021/08/07 08:51

解決できました。ありがとうございます。
guest

0

エラー内容は「ShowItemsクラスはOperationクラスを継承しているが、オーバーライドしたexecuteメソッドはSQLExceptionをスローすることはないよ」ということだと思います。

Operationクラスのexecuteメソッドの定義を確認してみてください。

投稿2021/08/07 06:34

jcs502ulf

総合スコア307

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

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

0

ベストアンサー

java

1class ShowItems extends Operation{

Operationクラスがなにものかりませんが、そこにexecuteメソッドがあるのでしょう。そして、

java

1 public void execute()throws IOException, SQLException{

とは異なるメソッドシグネチャである、と。だから

error: execute() in Items cannot override execute() in Operation

overridden method does not throw SQLException の解決法を教えて頂きたいです。

基底クラスとメソッドシグネチャを合わせる。

投稿2021/08/07 06:31

編集2021/08/07 06:33
shiketa

総合スコア4061

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

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

shiketa

2021/08/07 06:39

もしくは、executeメソッドをオーバーライドする必要がないのであれば、そのメソッド名を変更すればいい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問