Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassCastException:java.lang.String不能强制转换为Panels.AddNewClientSaveAction_Java_Arraylist - Fatal编程技术网

java.lang.ClassCastException:java.lang.String不能强制转换为Panels.AddNewClientSaveAction

java.lang.ClassCastException:java.lang.String不能强制转换为Panels.AddNewClientSaveAction,java,arraylist,Java,Arraylist,当我运行下面的代码时,出现以下错误: 运行: 整个错误是: run: java.lang.ClassCastException: java.lang.String cannot be cast to Panels.AddNewClientSaveAction Before at Database.FileUpdate.main(128 | Oli | Much FileUpdate.java:40) 128 | Oli | Much 128 | Francis Kariuki | Mah

当我运行下面的代码时,出现以下错误: 运行:

整个错误是:

run:
java.lang.ClassCastException: java.lang.String cannot be cast to Panels.AddNewClientSaveAction
Before
    at Database.FileUpdate.main(128 | Oli | Much
FileUpdate.java:40)
128 | Oli | Much
128 | Francis Kariuki | Mahia
128 | Francis Kariuki | Mahia
LASTSTUDENTEENTRYLINENNAMES
BUILD SUCCESSFUL (total time: 4 seconds)
我试图创建一个功能,在一个特定的文本“LastStudentEntryLineNames”之前,将一个新用户添加到一个文本文件中

下面是添加新用户“Eddys Rockery”前后的示例

之前:

123 | Oliver | Muchai
456 | Revilo | Chamu
LASTSTUDENTEENTRYLINENNAMES
之后:

123 | Oliver | Muchai
456 | Revilo | Chamu
678 | Eddys | Rockery
LASTSTUDENTEENTRYLINENNAMES
到目前为止,该代码仍然有效。我已经指出了错误产生的原因

提前感谢大家的帮助和建议

import Panels.AddNewClientSaveAction;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Stack {

    public static final String LAST_STUDENT_LINE = "LASTSTUDENTEENTRYLINENNAMES";
    public static StringBuilder line;

    public static void main(String[] args) {

        StringBuilder sb = new StringBuilder(128);
        List<AddNewClientSaveAction> objectInputFieldsList = new ArrayList<>(25);

        AddNewClientSaveAction values = new AddNewClientSaveAction();
        objectInputFieldsList.addAll(values.rayArrayList());

        BufferedReader br = null;
        try {

            br = new BufferedReader(new FileReader("/D:/TestFile.DAT/"));
            String text = null;
            while ((text = br.readLine()) != null) {
                if (sb.length() > 0) {
                    sb.append("\n");
                }
                sb.append(text);
            }

            System.out.println("Before");
            System.out.println(sb);

            // The Error's here: for (AddNewClientSaveAction s : objectInputFieldsList)
            for (AddNewClientSaveAction s : objectInputFieldsList) {

                int insertIndex = sb.indexOf(LAST_STUDENT_LINE);
                line = new StringBuilder(128);
                line.append(s.objectGUID).append(" | ").append(s.userGUID).append("\n");
                sb.insert(insertIndex, line.toString());
            }

            System.out.println("\nAfter");
            System.out.println(sb);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException exp) {
            }
        }


        try{
            java.io.FileWriter fstream = new java.io.FileWriter("/D:/TestFile.DAT/");
            BufferedWriter outobj = new BufferedWriter(fstream);
            outobj.write(sb.toString() + "\n");
            outobj.close();

        }catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }

    }
}

在数组列表objectInputFields列表中,您正在以下方法中添加字符串

public ArrayList actionPerformed () {

    .....
    .....

        objectGUID = "1452";
        userGUID = "90378";
        firmGUID = "3663287";
    .....
    .....

        // Add to list
        objectInputFieldsList.add(objectGUID);
        objectInputFieldsList.add(userGUID);
        objectInputFieldsList.add(firmGUID);
        objectInputFieldsList.add(postalCode);
    .....
    .....
}
您正在尝试使用AddNewClientSaveAction类进行循环,这肯定会导致
java.lang.ClassCastException:java.lang.String无法强制转换到面板。AddNewClientSaveAction
错误

    public static void main(String[] args) {

        .......
        .......

            // The Error's here: for (AddNewClientSaveAction s : objectInputFieldsList)
            for (AddNewClientSaveAction s : objectInputFieldsList) {

                int insertIndex = sb.indexOf(LAST_STUDENT_LINE);
                line = new StringBuilder(128);
                line.append(s.objectGUID).append(" | ").append(s.userGUID).append("\n");
                sb.insert(insertIndex, line.toString());
            }
        .......
        .......
   }

方法
StackAddClientSaveAction.rayArrayList()
返回包含
String
对象的原始
ArrayList

在类
Stack
中,您正在将带有
String
对象的列表添加到
objectInputFieldsList
,该列表应该包含
AddNewClientSaveAction
对象,而不是
String
对象。当你试图编译时,编译器会给你一个警告;你忽略了警告

然后循环查看
objectInputFieldsList
,并尝试将其包含的值分配给
s
,类型为
AddNewClientSaveAction

for (AddNewClientSaveAction s : objectInputFieldsList) {
您会得到一个
ClassCastException
,因为列表包含
String
对象,而不是
AddNewClientSaveAction
对象


解决方案:不要将
String
对象添加到列表中。不要忽略编译器警告;它们出现是有原因的。

请始终发布堆栈跟踪,而不仅仅是错误消息。它确定了问题所在的特定行,如果您在复制/粘贴中注意到该行,您将更有可能得到有用的响应。此外,问题似乎是,在
objectInputFieldsList
中添加
String
s会造成堆污染,但您尚未发布
AddNewClientSaveAction\rayaryList()
的代码。我是JAVA新手。你能补充一些我如何解决这个问题的见解吗?
    public static void main(String[] args) {

        .......
        .......

            // The Error's here: for (AddNewClientSaveAction s : objectInputFieldsList)
            for (AddNewClientSaveAction s : objectInputFieldsList) {

                int insertIndex = sb.indexOf(LAST_STUDENT_LINE);
                line = new StringBuilder(128);
                line.append(s.objectGUID).append(" | ").append(s.userGUID).append("\n");
                sb.insert(insertIndex, line.toString());
            }
        .......
        .......
   }
for (AddNewClientSaveAction s : objectInputFieldsList) {