我有一个名为EmployeeFileProcessor的公共抽象类,这也是我想要实例化的内容。我如何轻松修复此代码以便我可以实例化它?
public abstract class EmployeeFileProcessor
{
public static void main(String[] args) throws Exception
{
EmployeeFileProcessor process = new EmployeeFileProcessor();
//Non important code here
process.writeFullTimeEmployee(user_input1, FtCollection[0]);
//Defined in another class (method writeFullTimeEmployee)
process.readFulltimeEmployee(user_input1);
//Defined in another class (method readFullTimeEmployee)
}
}
我如何能够使用'流程'?
答案 0 :(得分:2)
抽象类是一个无法实例化的类。它类似于接口,除了能够声明字段并实际实现函数以防它们不被覆盖(对于Java 8,您可以使用接口中的默认方法)。
无论如何,如果你真的想以默认的方式实例化这个类,你可以尝试这样做:
CREATE OR REPLACE FUNCTION on_ai_myTable() RETURNS TRIGGER AS $$
BEGIN
SELECT fn_name, count(*) + 1 FROM table_ebscb_spa_log02 WHERE time_type = 'Start' GROUP BY fn_name
RETURN NEW.fn_name;
END
$$
LANGUAGE plpgsql;
但它很可能是非常差设计; - )
答案 1 :(得分:2)
您无法实例化abstract
类。您有三种选择:
EmployeeFileProcessor
,将abstract
更改为非抽象类。EmployeeFileProcessor process = new EmployeeFileProcessor() { };
(不推荐)EmployeeFileProcessor
中的所有方法和字段更改为static
。这样,您不再需要实例化EmployeeFileProcessor
。 (除非你的班级没有州,否则不推荐)换句话说,如果要实例化它,请不要创建abstract
类。
答案 2 :(得分:2)
您无法直接创建抽象类的实例。您必须首先定义一个扩展抽象类的类,然后创建该类的实例。
e.g。
public ConcreteEmployeeFileProcessor extends EmployeeFileProcessor {
}
然后,您可以创建ConcreteEmployeeFileProcessor的实例,但使用抽象类型引用它。
EmployeeFileProcessor instance = new ConcreteEmployeeFileProcessor();