zenet_logo

-株式会社ゼネット技術ブログ-

JAVAで"メソッドsize() は型 String で未定義です"エラーが出てきた時の解決法!



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 )

docs.oracle.com