精华内容
下载资源
问答
  • 调用java Interface

    2008-08-06 14:04:26
    并且说的怎么怎么好,不过好象我从来都没有体会的这种好在哪里?在我自己的练习当中,唯一用的Interface的地方就是,面向接口编程.然后能过spring 把接口的实现类注进去.但是前提是必须告诉spring实现在工程里的哪个地方...
    学面向对象以来啊,一直听别人说Interface,抽象之类的话题.并且说的怎么怎么好,不过好象我从来都没有体会的这种好在哪里?在我自己的练习当中,唯一用的Interface的地方就是,面向接口编程.然后能过spring 把接口的实现类注进去.但是前提是必须告诉spring实现在工程里的哪个地方.  想到这里有一个疑问,希望大家给我指点一下.如果想引用同一个服务器下面的另一个工程里的接口.该怎么办.在不使用EJB的条件下.还有如果是按我的理解,调用一个接口,必须找到实现类的话.那么这个实现类必须是独立的,如果不独立的话,就是引了这么实现类也没有什么用.
    展开全文
  • 然后我尝试动态加载DLL并调用。用的Qt QLibrary lib("Project1"); if (lib.load()) { typedef ITest* (__stdcall *Get)(); Get method = (Get)lib.resolve("Get"); ITest *obj = method(); // 这里会...
  • 直入正题,C++SDK代码片段如下: ``` namespace Nsdk { struct SDK_PUBLIC Factory { static IManageSession *createManageSession(const ...用C#怎么写接口定义以及接口调用流程的代码,求大神打救,感激不尽~
  • 遇到的问题是:我现在lUserID和previewInfo参数都没问题了,就是这个回调的接口作为参数输入不知道怎么实现。 我现在实现的方法是: public class PlayCallBack : RealPlayCallBack { public IntPtr ...
  • 单文件就随便怎么放了 4、代码 Demo.java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.net.*; import java.util.*; /** * @author KonBAI * @version 1.0 * ...

    0、前言

    没有前言,直接开搞!!!

    1、准备

    集成开发环境:IDEA
    JDK:1.8

    2、创建项目

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    3、 项目结构

    单文件就随便怎么放了

    4、代码

    Demo.java
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.net.*;
    import java.util.*;
    
    /**
     * @author KonBAI
     * @version 1.0
     * Create by 2020/05/10 01:08
     */
    public class Demo extends JFrame {
    
        /**
         * 窗口标题
         */
        // TODO: 根据自己需要修改窗口标题
        public static final String WINDOWS_TITLE = "名字-333";
    
        public Demo() {
            initComponents();
        }
    
        @SuppressWarnings("unchecked")
        private void initComponents() {
    
            JLabel inputLabel = new JLabel();
            // 接收用户输入内容
            JTextField inputTextField = new JTextField();
            // 提交按钮
            JButton submitBtn = new JButton();
            // 获取所有的网络接口信息按钮
            JButton findAllBtn = new JButton();
            JScrollPane scrollPane = new JScrollPane();
            // 输出文本
            JTextArea viewTextArea = new JTextArea();
    
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            setTitle(WINDOWS_TITLE);
    
            inputLabel.setText("请输入 IP/InterfaceName:");
    
            submitBtn.setText("提 交");
            submitBtn.addActionListener(evt -> jButtonActionPerformed(evt, viewTextArea, inputTextField.getText()));
    
            findAllBtn.setText("获取所有的网络接口信息");
            findAllBtn.addActionListener(evt -> jButtonActionPerformed(evt, viewTextArea, null));
    
            viewTextArea.setColumns(20);
            viewTextArea.setRows(10);
            scrollPane.setViewportView(viewTextArea);
    
            GroupLayout layout = new GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                                    .addGroup(layout.createSequentialGroup()
                                            .addContainerGap()
                                            .addComponent(inputLabel, GroupLayout.PREFERRED_SIZE, 150, GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                                            .addComponent(inputTextField, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)
                                            .addGap(18, 18, 18)
                                            .addComponent(submitBtn, GroupLayout.PREFERRED_SIZE, 80, GroupLayout.PREFERRED_SIZE))
                                    .addGroup(layout.createSequentialGroup()
                                            .addGap(46, 46, 46))
                                    .addGroup(layout.createSequentialGroup()
                                            .addContainerGap()
                                            .addComponent(findAllBtn, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                    .addGroup(layout.createSequentialGroup()
                                            .addContainerGap()
                                            .addComponent(scrollPane)))
                            .addContainerGap(20, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                            .addGap(19, 19, 19)
                            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                    .addComponent(inputLabel, GroupLayout.PREFERRED_SIZE, 23, GroupLayout.PREFERRED_SIZE)
                                    .addComponent(inputTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                    .addComponent(submitBtn))
                            .addComponent(findAllBtn)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                            .addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                            .addContainerGap(20, Short.MAX_VALUE))
            );
            pack();
        }
    
        private void jButtonActionPerformed(ActionEvent evt, JTextArea viewTextArea, String input) {
            viewTextArea.setText("");
            boolean flag = false;
            try {
                //获取所有接口,并放进枚举集合中,然后使用Collections.list()将枚举集合转换为ArrayList集合
                ArrayList<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
                for (Iterator<NetworkInterface> interfaceIterator = interfaces.iterator(); interfaceIterator.hasNext(); ) {
                    NetworkInterface networkInterface = interfaceIterator.next();
                    String intName = networkInterface.getName(); //获取接口名
                    //获取每个接口中的所有ip网络接口集合,因为可能有子接口
                    ArrayList<InetAddress> inets = Collections.list(networkInterface.getInetAddresses());
                    for (Iterator<InetAddress> inetAddrIterator = inets.iterator(); inetAddrIterator.hasNext(); ) {
                        InetAddress inetAddress = inetAddrIterator.next();
                        //只筛选ipv4地址,否则会同时得到Ipv6地址
                        if (inetAddress instanceof Inet4Address) {
                            String ip = inetAddress.getHostAddress();
                            if (Objects.isNull(input)) {
                                flag = true;
                                viewTextArea.append("InetfaceName:" + intName + " | IPv4:" + ip + "\n");
                            } else if (intName.equals(input) || ip.equals(input)) {
                                flag = true;
                                viewTextArea.append("InetfaceName:" + intName + " | IPv4:" + ip + "\n");
                            }
                        }
                    }
                }
                if (!flag) {
                    viewTextArea.setText("未找到 '" + input + "' 相关IP/InterfaceName,请重新输入");
                }
            } catch (SocketException s) {
                s.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
        	// TODO: 添加窗口样式
        	
            EventQueue.invokeLater(() -> new Demo().setVisible(true));
        }
    
    }
    
    

    5、运行截图

    在这里插入图片描述
    在这里插入图片描述

    5、自定义修改

    • 1、修改窗口标题

    在这里插入图片描述在这里插入图片描述

    • 2、添加窗口样式(可有可无)
      在这里插入图片描述
      添加代码如下 :
    // TODO: 添加窗口样式
      try {
          /**
           * Metal风格: javax.swing.plaf.metal.MetalLookAndFeel
           * Nimbus风格: javax.swing.plaf.nimbus.NimbusLookAndFeel
           * Motif风格: com.sun.java.swing.plaf.motif.MotifLookAndFeel
           * Windows风格: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
           * WindowsClassic风格: com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
           */
          UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
      } catch (Exception e) {
          e.printStackTrace();
      }
    

    在这里插入图片描述

    展开全文
  • 求大神指点,怎么用JNA调用dll,出错如下: java代码:public class WordUtils { public interface Dll extends StdCallLibrary { Dll INSTANCE = (Dll) Native.loadLibrary("HtmlToWordDll", Dll.class);...
  • 怎么调用接口中的方法

    千次阅读 2014-02-13 09:50:46
    直接调用  比如  interface A {  void interfaceMethod();  }  class B {  public void classMethod(A a) {  a.interfaceMethod(); } } 直接这样调用没有任何问题的 因为他A是接口不能实例化 ...

    直接调用 

    比如 

    interface A { 

    void interfaceMethod(); 


    class B { 

    public void classMethod(A a) { 

    a.interfaceMethod();

    }

    }

    直接这样调用没有任何问题的 因为他A是接口不能实例化 他传给你的a对象一定是实现了A接口的 调用的也就是实现的那个方法 } }

    展开全文
  • 曾经面试时,有一道面试题是这样的,如果A引用B,B引用C,C又引用A,怎么解决这种循环引用?如图: 这也是今天写这个的原因,个人思路为把环状拆分为一条直线,也就是让A持有B,B持有C,而把C要调用的A中的内容...

    写代码都会要求高密度,低耦合,尽量避免循环引用的出现。曾经面试时,有一道面试题是这样的,如果A引用B,B引用C,C又引用A,怎么解决这种循环引用?如图:

    这也是今天写这个的原因,个人思路为把环状拆分为一条直线,也就是让A持有B,B持有C,而把C要调用的A中的内容抽离出来,这里把这部分叫做D,通过B,把D传递给C。也就是C持有的,实际上不再是A,而是A里的一部分C需要的内容(D)。如图:

    当然这里所给的,只是一种思路,因为根据实际问题,如果ABC三者处于同级,那再让A持有B,B持有C就不合适了,也需要只暴露某一部分公共的内容。比如玩家攻击敌人,玩家和敌人属于同级,可能只需要执行一个敌人掉血的函数,而却把整个敌人类暴露给玩家类,就很不合适了。这里不做赘述,具体要根据不同环境进一步规划该怎么写,这里只提供思路。

    公共部分D,以什么形式传递,就是下面要写的内容,有两种方式,委托和接口。下面重点说接口的方式。这里提供一个别人写的博客:讲到了解决循环引用的第三种方式,反射。

    https://blog.csdn.net/ZslLoveMiwa/article/details/80813568

    本文只写接口方式,委托比较简单,同样可以用写一个更复杂点的事件系统去做处理。代码如下:

    ClassA

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public interface MethodA
    {
        void MethodA();
        
    }
    
    public class ClassA : MonoBehaviour, MethodA
    {
       
        private ClassB m_claasB;
    
        void Start () {
            m_claasB = new ClassB(this);
        }
    
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.A))
            {
                CCallA();
            }
    
            if (Input.GetKeyDown(KeyCode.B))
            {
                ACallB();
            }
    
            if (Input.GetKeyDown(KeyCode.C))
            {
                BCallC();
            }
        }
    
        public void MethodA()
        {
           Debug.Log("Class A__MethodA"); 
        }
    
        public void CCallA()
        {
            m_claasB.CCallA();
        }
    
        public void BCallC()
        {
            m_claasB.BCallC();
        }
    
        public void ACallB()
        {
            m_claasB.MethodB();
        }
    
    
    }

    ClassB:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    
    
    public class ClassB 
    {
    
        private ClassC m_classC;
    
        public ClassB(MethodA actionA)
        {
            m_classC=new ClassC(actionA);
        }
    
        public void MethodB()
        {
           Debug.Log("ClassB_MethodB");
        }
    
        public void BCallC()
        {
            m_classC.MethodC();
        }
    
        public void CCallA()
        {
            m_classC.CallA();
        }
    
    }
    

    ClassC:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    
    
    public class ClassC : MonoBehaviour
    {
    
        private MethodA _methodA;
    	// Use this for initialization
    	public ClassC(MethodA ActionA )
    	{
    	    _methodA = ActionA;
    
    	}
    	
        public void MethodC()
        {
           Debug.Log("ClassC _MethodC");
        }
    
        public void CallA()
        {
            _methodA.MethodA();
        }
    }
    

    其实不管是委托,还是接口,其目的都是只暴露给其他类需要调用的部分,尽可能少的暴露不必要的内容给其他类。

    展开全文
  • @interface ViewController ()@property (nonatomic, strong) UIWebView *webView;@end然后在viewDidLoad方法中初始化这个WebView实例,并设置其要访问的网站的URL,然后将其添加到视图中去:- (void)viewDidLoad {...
  • 怎么调用这儿local接口? ps:我部署了一个远程接口,用lookup()方法可以调用成功。 但是这个local接口怎么也调不通,在weblogic控制台中也看不到这个local EJB的jndi(远程的那个EJB可以看到)。 EJB和...
  • 通过连接的应用来调用Salesforce User Interface API(一) 场景 最近有一个需求是这样的,需要知道一个特定记录类型的某一个选项列表字段的可选值。 例如某个对象有A、B两种类型,一个【状态值】的选项列表 对于A,...
  • .net中怎么调用外部的接口

    千次阅读 2017-04-10 09:38:46
    url:http://interFace1.test.com/apis/interFaceTest.aspx?id=123&pwd=123 HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create("接口地址-URL"); myReq.Timeout = 12000; HttpWebResponse HttpWResp ...
  • API(Application Programming Interface,应用程序编程接口)是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数...
  • Fragment怎么直接调用Activity的方法

    千次阅读 2016-05-11 23:02:43
    Fragment怎么直接调用Activity的方法     声明一个接口,让Activity实现它,然后在Fragment中判断Activity是否实现它,调用Activity方法 具体: 接口声明: /** * Created by gaomin on 2016/5/11. */...
  • 如果要作为一个Service来提供,我们应该怎么设计呢? TODO: QA:怎么设计比较合理。 首先,在Android 系统启动的时候init进程 /system/core/init main@init.cpp int main(int argc, char** argv) { ... parser....
  • Java SDK动态代理的demo代码: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; ... static interface Iservice { void sayHello(); } static class Service i
  • Java调用本地方法又是怎么一回事

    千次阅读 2017-07-10 17:28:23
    JNIJNI即Java Native Interface,它能在Java层实现对本地方法的调用,一般本地的实现语言主要是C/C++,其实从虚拟机层面来看JNI挺好理解,JVM主要使用C/C++ 和少量汇编编写,在执行Java字节码时如果遇到有某个方法...
  • 枚举的内部方法怎么进行调用?

    千次阅读 2018-06-28 21:28:40
    package net.jxatei.jsj.GenericsAndEnumeration; interface d { public String getDescription(); public int getI(); } public enum EnumTest2 implements d { Constants_A { // 可...
  • 很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候PHP接口类interface就起到作用了,当我们定义了一个接口类时,实现该接口的类必须...
  • 这是服务端(Producer)代码 ``` @SofaService(interfaceType = SampleTrServer.class, ...我只设置了@SofaService和@SofaReference两个注解,但是一直无法调用(JVM本地调用是ke'yi'de),请问我还需要配置什么嘛?
  • 一个接口有两个实现类,在Spring中怎么调用到自己想调用的实现类?一. 接口二. 实现类1三. 实现类2四.注解注入进行测试 一. 接口 package com.xizi.service; public interface UserService { void test(); } ...
  • php interface

    2017-07-18 08:20:06
    其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候PHP接口类interface就起到作用了,当我
  • 1.首先能够用于lambda表达式的只能是interface,并且interface 中只有一个方法。 这就说明,只要找到接口类型就能确定用的是哪个方法。(如下:intTypeInterface、StringTypeInterface、paramInterface) 2.判断用的...
  • //怎么用接口的引用调用实现类中重写的方法 } } interface Person { public abstract void show(); } class Student implements Person{ @Override public void show() { System.out.println("...
  • System.out.println("调用test()"); } } return new B(); } [color=indigo]interface[/color] C{ } public static void main(String[] args) { IC ic=new IC(); ic.a(); } }[/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 460
精华内容 184
关键字:

怎么调用interface