1.はじめに
こんにちは。ゼネットの川村です。
コードを書くときにエラー解決で時間を使いすぎてしまいますよね!
"メソッド size() は型 String で未定義です"エラーの対処法を書きます。
この記事が皆さんのお役に立てれば幸いです。
タイトルで起こしたミスは
ArrayListのインスタンスクラスのメソッドを
Stringクラスのインスタンスで呼び出そうとしたのが原因
以下にコードを記載します。
エラーとなったコード Question.java
package array; import java.util.ArrayList; public class Question { public static void main(String args) { String list = new String(); //Stringクラスのインスタンスをつかってしまっている list.add("春"); list.add("夏"); list.add("秋"); list.add("冬"); System.out.println(list.size()); //"メソッドsize()は型Stringで未定義です"エラーが発生した場所
} }
正解のコード Question.java
package array; import java.util.ArrayList; public class Question { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); //ArrayListクラス list.add("春"); list.add("夏"); list.add("秋"); list.add("冬"); System.out.println(list.size()); //正常に処理される } }
2.解決方法
・型をArrayListにする
ArrayListの生成構文は以下になります。
ArrayList<データ型> 変数名 = new ArrayList<>();
確認して欲しいのが『型』がArrayListかどうかです。
size()はArrayListで使うことが出来ます。
では、なんでArrayListで使えるかと言うと、ArrayListにsize()のメソッドがあるからです。
それがわかるのがリファレンスサイトです。
・インスタンスをArrayListにする
次に確認して欲しいのが、『インスタンス』です。
参照するインスタンスもArrayListでなくては、size()は使用できません。
3.そもそもsize()ってなに?
size()メソッドとは、配列の要素数(大きさ)を数えることが出来ます。
import java.util.ArrayList; import forBlog.Questions; public class ArrayPractice { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("春"); list.add("夏"); list.add("秋"); list.add("冬"); System.out.println(list.size());
出力結果
4
このように要素数("春","夏","秋","冬"だと'4')が出力されました。
4.length()と何が違うか
length()は文字列や配列の長さを取得します。
Stringクラスの中にlength()があるから使えます。
public class ArrayPractice { public static void main(String[] args) { String hello ="こんにちは"; System.out.println(hello.length());
出力結果
5
文字列の長さ("こんにちは"だと'5')がint型で出力されます。
5.おわりに
メソッドはクラスの中で指定されたものしか使えません。
私も、リファレンスサイトを読んで『型』『クラス』を理解しました。
難しいですが、調べれば必ず身に付くので調べて、理解していきましょう!
6.参考記事
ArrayList (Java Platform SE 8 )