繁体   English   中英

有没有办法实现通用 class 以显示 object 字段?

[英]Is there a way to implement a generic class for displaying an object fields?

我有一些课程(例如医院、医生、护士等),我需要编写一个通用的 class 附加到文件中的不同类型的 object。 每个 class 一个显示其字段的方法,但我无法传递此错误“无法解析 T 中的方法'打印'”
这是代码:

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();
        }
    }
}


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

由于类型擦除,您的 T 被视为 Object(在运行时),并且 Object class 中没有print()方法。 您可以添加接口:

public interface Printable {
    void print();
}

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

public class WriteFileService<T>

对此:

public class WriteFileService<T extends Printable>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM