不抽象,也不覆盖抽象方法 - IDL

时间:2015-04-17 04:33:52

标签: java oop middleware corba idl

我正在使用Java开发CORBA应用程序。我使用'idlj'来生成存根和骨架。在编译时我得到了这个错误。  

Account.java:12: error: Account is not abstract and does not override abstract method _all_interfaces(POA,byte[]) in Servant
public class Account extends org.omg.PortableServer.Servant
       ^
Note: SMTS/AccountPOA.java uses unchecked or unsafe operations.

这些是类定义和idl定义。

SMTS.idl文件

module SMTS{
    interface Account{
        attribute string accountID;
        attribute double balance;
        void setAccountID(inout string accid);
        void setBalance(inout double value);
    };
};

Account.java类

public class Account extends AccountPOA{
    private ORB orb;
    private String accountID;
    private double balance;
    public void setORB(ORB orb_val){
        orb = orb_val;
    }
    public void setAccountID(String accid){
        this.accountID = accid;
    }
    public void setBalance(double value){
        this.balance = value;
    }
}

1 个答案:

答案 0 :(得分:1)

AccountPOA或其中一个超类具有一个或多个未被覆盖的抽象方法。如果扩展包含抽象方法的抽象类,则必须覆盖所有抽象方法。唯一的例外是你的类本身是抽象的。只要你有一个可以实例化的具体类(=非抽象),你必须覆盖所有抽象方法。

因此,请查看AccountPOA的代码以及它扩展或实现的所有类和接口。某处必须有一个抽象的方法,在类层次结构中没有被覆盖。