有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有没有办法实现一个通用类来显示一个对象字段?

我有一些类(例如Hospital、Doctor、Nurse等),我需要编写一个泛型类,将不同类型的对象附加到文件中。每个类都有一个显示其字段的方法,但我无法传递此错误“无法解析t中的方法“print”
代码如下:

package Service;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class WriteFileService<T>
{
    private static WriteFileService instance;

    private WriteFileService(){}

    public static WriteFileService getInstance()
    {
        return instance;
    }

    public void appendObject(T object, String fileName)
    {
        try {
            File file = new File(fileName);

            // creates the file if it does not exist
            if (!file.exists())
                file.createNewFile();

            FileWriter fw = new FileWriter(file, true); // append mode = true
            BufferedWriter bufferedWriter = new BufferedWriter(fw);

            object.print(bufferedWriter); //! ERROR: Cannot resolve method 'print' in T

            bufferedWriter.flush();
            bufferedWriter.close();
        }
        catch(IOException e)
        {
            System.out.println("Problem handling the files!");
            e.printStackTrace();
        }
    }
}


关于该方法的任何帮助都会有所帮助


共 (1) 个答案

  1. # 1 楼答案

    由于类型擦除,您的T被视为对象(在运行时),对象类中没有print()方法。 您可以添加界面:

    public interface Printable {
        void print();
    }
    

    让你所有的类来实现它。 然后你需要改变这个:

    public class WriteFileService<T>

    为此:

    public class WriteFileService<T extends Printable>