Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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 如何将接口对象传递给方法_Java - Fatal编程技术网

Java 如何将接口对象传递给方法

Java 如何将接口对象传递给方法,java,Java,我有一个主类,如下所示。我想将接口对象从Main方法传递到另一个方法。我通过了考试,如下面我的主要课程所示。但我得到了错误“预期”。谁能帮帮我吗 这是我的主要课程: package com.armus.web.server; import com.armus.common.dtflow.DfService; public class TriggerAgain { public static void main(String[] args){ Long i= 9794460

我有一个主类,如下所示。我想将接口对象从Main方法传递到另一个方法。我通过了考试,如下面我的主要课程所示。但我得到了错误“预期”。谁能帮帮我吗

这是我的主要课程:

package com.armus.web.server;
import com.armus.common.dtflow.DfService;
public class TriggerAgain
{
    public static void main(String[] args){
        Long i= 97944605L;
        DMSerImpl rdf = new DMSerImpl();
        try {
            /*********** Section start....Getting Problem In this section...How Can I Pass interface object to a method setDfService*********/
            @Override
            rdf.setDfService(new DfService()
            {
                Dfsessn dfsessn=getDfsessnById(i)
                {
                    System.out.println("In main class...In interface method="+i);
                }
            })
            /*************************************************Section End*******************************************************************/
            com.armus.dto.Jinfo a=rdf.Trigger(i);
        }
        catch( Throwable   e){
            System.out.println("In exception = "+e+" "+i);
            e.printStackTrace();
            return;            // Always must return something
        }
    }
}
这是我的另一个类,我想将接口对象传递给“setDfService”方法

以下是我的界面:

package com.armus.common.dtflow;

import com.armus.common.dto.Dfsessn;
import com.armus.common.exception.ServerException;

public abstract interface DfService
{
  public abstract Dfsessn getDfsessnById(Long paramLong)
    throws ServerException;
}

提前谢谢!!!:)

这是一个创建匿名类实例的示例

    rdf.setDfService(new DfService() {
    @Override
    public Dfsessn getDfsessnById(Long paramLong) {
           ....
    }});
上面您试图做的是创建一个实现
DfService
接口的匿名类实例,但您做得不正确(语法方面)

在这里阅读匿名内部类

另外,
DfService
是一个功能接口(单一方法接口),因此您也可以在这里使用lamda。像这样的

rdf.setDfService(paramLong -> System.out.println("In main class...In interface method="+i));
有关更多信息,请查看此信息,您是:

  • @覆盖
    放在错误的位置
  • 未正确声明方法重写;及
  • 缺少结束分号:

    rdf.setDfService(new DfService()
    {
        @Override
        public Dfsessn getDfsessnById(Long i)
        {
            System.out.println("In main class...In interface method="+i);
        }
    });
    

  • 错误消息标识了哪一行?通过“接口对象”,我假定您的意思是“匿名类的实例”。创建该实例时,需要指定要覆盖的方法。我建议您联机查找匿名类的使用示例,看看它们是如何工作的,因为您的尝试与要求相差甚远。不确定…我是java新手…我做得对吗?您在
    setDfService()的末尾缺少一个分号。
    。投票以打字错误结束。
    rdf.setDfService(paramLong -> System.out.println("In main class...In interface method="+i));
    
    rdf.setDfService(new DfService()
    {
        @Override
        public Dfsessn getDfsessnById(Long i)
        {
            System.out.println("In main class...In interface method="+i);
        }
    });