本文目录一览:
java怎么调用方法?
对象调方法
class A
{
public void Out()//方法
{
System.out.println("a");
}
public static void main(String[] agrs)
{
A a=new A();//a是对象
a.Out();
}
}
java中如何调用其他java文件?
你所说的java文件是什么文件?如果是java源码文件是不能调用的,但如果是编译后的class文件可以通过类加载器进行加载,然后通过反射调用;但一般会通过实现特定的接口来简化调用过程。一个自定义的类加载器如下 :
class MyClassLoader extends ClassLoader {
//类加载器的名称
private String name;
//类存放的路径
private String path = "E:\\bin";
MyClassLoader(String name) {
this.name = name;
}
MyClassLoader(ClassLoader parent, String name) {
super(parent);
this.name = name;
}
/**
* 重写findClass方法,加载特定目录下的类文件
*/
@Override
public Class? findClass(String name) {
byte[] data = loadClassData(name);
return this.defineClass(name, data, 0, data.length);
}
public byte[] loadClassData(String name) {
try {
name = name.replace(".", "//");
FileInputStream is = new FileInputStream(new File(path, name + ".class"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int b = 0;
while ((b = is.read()) != -1) {
baos.write(b);
}
return baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
Java对象怎么调用
java对象中,除了基本类型,其他对象传递都是地址传递,虽然java取消了指针的设定,但是其内部还是使用指针操作的,定义一个对象就相当于定义了一个对象类型的指针,这个指针的值为null,如果不进行初始化的话自然会报空指针异常,也就是NullPointerException。即使是基本类型,如果不初始化直接调用的话一样会报异常的。
上面的main方法中,map对象只是被创建并没有初始化,只是在前面创建了一个Map类的指针但并没有告诉系统具体指向,也就是map的值为null。
如以下方式:
static Map map;
public static void main(String[] args)
{
map=new Map();
map.seach();
}
程序就可以正常运行。
这两种创建对象的方法都是可以的。第一种在方法外创建就是作为一个类的属性,这个时候这个对象的生存周期是相当长的,你可以在一个方法中初始化后在其他方法中继续调用,其他方法对其造成的修改会都会影响到下一次调用的结果。甚至可以在其他类中调用这个变量。当然如果调用到的是没有初始化的对象一样会报空指针。
后一种方式是在方法中创建对象进行操作,这时候这个对象的生存周期只限制于这个方法。每次调用这个方法的时候都会重新创建一个这样的对象。想将这个对象拿出去只有在创建后用set方法或者是使用return 返回。
例如:
Map map=new Map();
map.seach();
//假设OtherObj对象有setMap方法,使用set方法取出map对象
OtherObj.setMap(map);
或者就写成:
public Map getMap(){
Map map = new Map();
return map;
}
此外,static标记表示这个对象是类共有的,调用的时候甚至不需要创建你这个类的对象直接通过类名就可以调用出来。例如jdk中的java.awt.Color类里面可以直接取出一些特定的颜色,只需要调用Color.RED等方法即可。不需要另外创建Color对象
如何在C/C++中调用Java
对于本地函数
JNIEXPORT void JNICALL Java_video1_TestNative_sayHello(JNIEnv * env, jobject obj)
{
cout"Hello Native Test !"endl;
}
JNIEnv类型代表Java环境。通过这个JNIEnv*指针,就可以对Java端的代码进行操作。如,创建Java类得对象,调用Java对象的方法,获取Java对象的属性等。
JNIEnv的指针会被JNI传送到本地方法的实现函数中来对Java端的代码进行操作
JNIEnv类中的函数:
NewObject/NewString/NewTYPEArray :new新对象
Get/SetTYPEField:获取属性
Get/SetStaticTYPEField :获取静态属性
CallTYPEMethod/CallStaticTYPEMethod