189 8069 5689

互相调用的java代码 java互相引用

java两个类相互调用的问题

可以这样,在A,B类中分别设一个静态变量 可以是 boolean行的,

武侯ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

当A调用b 的时候 把B类得这个变量改了,然后再B的方法中,依照这个变量来决定是否还调用A的方法

同理可以在B调用A的时候 修改A的变量,A会依照这个变量来决定是否还调用B

这样达到,A调完B 就不会有B 再去A ,B 调完A 之后A不会再去掉B

如何在C++和java之间互相调用

java 与 C++ 两种编程语言,它们之间的相互调用:

1、java 调用C++编写的dll,可使用JNI 或 Jawin 开源项目(推荐第二种方法)。

2、C++ 调用java 的变量、方法,通过JNI (Java Native Interface)与java类交互。

----操作步骤(只总结第二个)-----

(1) vc6.0编译C++程序,开发环境设置:工具--》选项--》工具,工具标签下:选择“include files”,加入头文件目录:C:\Program Files\Java\jdk1.5.0\include 和 C:\Program Files\Java\jdk1.5.0\include\win32 ;选择“Libary files"下,加入LIB目录:C:\Program Files\Java\jdk1.5.0\lib 。会编译成exe文件。

执行程序环境设置: Path环境变量加入:C:\Program Files\Java\jdk1.5.0\jre\bin\client (jvm.dll所在目录),若不加入path会提示,执行时找不到jvm.dll.

(2)GetStaticMethodID(cls,"main","([Ljava/lang/String;)V");

//([Ljava/lang/String;)V 是main()签名

在java程序目录下执行:javap -s -p ClassDemo (注:ClassDemo.java 已经编译)

取main 下面的语句 :: Signature: ([Ljava/lang/String;)V

(3)附代码示例:

java程序

import java.io.*;

public class DemoMain{

public static void main(String[] args) throws java.io.IOException, java.lang.NullPointerException

{

System.out.println("This is a test.");

}

}

C++程序:

#ifndef __cplusplus

#define __cplusplus

#endif

#include "jni.h"

#include stdio.h

#include stdlib.h

#include windows.h

#pragma comment (lib,"C:\\Program Files\\Java\\jdk1.5.0\\lib\\jvm.lib") // 动态调用lib

#pragma warning(disable: 4129) // 关闭 warning, 4129

void main() {

LoadLibrary("C:\\Program Files\\Java\jre1.5.0\\bin\\client\\jvm.dll"); // 动态调用dll

JavaVM *jvm;

JNIEnv *env;

JavaVMInitArgs vm_args;

JavaVMOption options[3];

options[0].optionString = "-Djava.compiler=NONE";

options[1].optionString = "-Djava.classpath=.";

options[2].optionString = "-verbose:jni";

vm_args.version = JNI_VERSION_1_4;

vm_args.nOptions = 3;

vm_args.options = options;

vm_args.ignoreUnrecognized = JNI_TRUE;

jint res = JNI_CreateJavaVM(jvm, (void**)env, vm_args); // 创建虚拟机

if (res 0) {

fprintf(stderr, "Can't create Java VM\n");

exit(1);

};

jclass cls = env-FindClass("DemoMain");

if (cls == 0) printf("Sorry, I can't find the class");

fprintf(stdout, "This is invokeSimplified4.\n");

jmethodID get_main_id;

if(cls != NULL)

{

get_main_id =env-GetStaticMethodID(cls,"main","([Ljava/lang/String;)V");

fprintf(stdout, "This is invokeSimplified5.\n");

if(get_main_id != NULL )

{

jclass string = env-FindClass("java/lang/String");

jobjectArray args = env-NewObjectArray(0,string, NULL);

fprintf(stdout, "This is invokeSimplified6.\n");

int i = env-CallIntMethod(cls, get_main_id, args);

fprintf(stdout, i+ "This is invokeSimplified7.\n");

}

}

jvm-DestroyJavaVM();

fprintf(stdout, "Java VM destory\n");

}

java 两个类之间的调用

方法1.

新建一个类。然后在调用类中先进行被调用类实例化,然后通过实例化的对象访问。例如:

//先定义一个类

//实例化,调用

方法2.新建一个类,将该类中需要zd被调用的方法设置为静态(static),加了static后,就可以用类名直接调用。然后在调用类中直接通过类名进行访问。调用格式为:类名.方法名(参数表)。例如:

扩展资料:

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因回此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点

。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应答用程序等

参考资料:

Java

类与类之间的调用--CSDN


本文标题:互相调用的java代码 java互相引用
本文地址:http://jkwzsj.com/article/dojogds.html

其他资讯