‘壹’ java中的一个类怎么调用另一个类中的方法
方法1. 新建一个类。然后在调用类中先进行被调用类实例化,然后通过实例化的对象访问。例如:
//先定义一个类
(1)java获取方法调用扩展阅读:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
‘贰’ Java里如何获取调用此方法的方法
心情好 告诉你吧 Thread.currentThread().getStackTrace()[1]是你当前方法执行堆栈 Thread.currentThread().getStackTrace()[2]就是上一级的方法堆栈 以此类推
‘叁’ java 获取调用此方法的方法的注解
importjava.lang.annotation.Retention;
importjava.lang.annotation.RetentionPolicy;
@Retention(value=RetentionPolicy.RUNTIME)
public@interfaceMyAnnotation{
Stringname();
}
publicclassAnnonTestA{
publicvoidmethodA(){
}
@MyAnnotation(name="111")
publicvoidmethodA(Stringa)throwsException{
AnnonTestB.methodB("methodA",String.class);
}
}
importjava.lang.annotation.Annotation;
importjava.lang.reflect.Method;
publicclassAnnonTestB{
publicstaticvoidmethodB(StringmethodName,Class<?>...parameterTypes)throwsException{
AnnonTestAannonTestA=newAnnonTestA();
//获取AnnotationTest2的Class实例
Class<AnnonTestA>c=AnnonTestA.class;
//获取需要处理的方法Method实例
Methodmethod=c.getMethod(methodName,parameterTypes);
Method[]methods=c.getMethods();
//判断该方法是否包含MyAnnotation注解
if(method.isAnnotationPresent(MyAnnotation.class)){
//获取该方法的MyAnnotation注解实例
MyAnnotationmyAnnotation=method
.getAnnotation(MyAnnotation.class);
//执行该方法
// method.invoke(annonTestA,"12345");
//获取myAnnotation
Stringvalue1=myAnnotation.name();
System.out.println(value1);
}
//获取方法上的所有注解
Annotation[]annotations=method.getAnnotations();
for(Annotationannotation:annotations){
System.out.println(annotation);
}
}
}
importjava.io.*;
importjava.lang.annotation.Annotation;
importjava.lang.reflect.Method;
publicclassTestString{
publicstaticvoidmain(String[]args)throwsException{
AnnonTestAannonTestA=newAnnonTestA();
annonTestA.methodA("123");
}
}
代码都给上了,不明白再追问吧。
参考地址:http://blog.csdn.net/bao19901210/article/details/17201173
‘肆’ java 获取方法调用者 的参数
区分是调用哪个test是由你调用的时候的参数决定的。
例如:调用时test(1),那么你调用的是
test(int i){
new A().getMethod();
}
这个方法
如果调用的时候是test("str")调用的就是
test(String i){
new A().getMethod();
}
了。
‘伍’ java 获得调用方法对象。
你得到的那个类就是你想要的对象,因为不可能得到数据类型的,你得到的就是那个类的一个实例,也就是正在调用那个方法的对象。
‘陆’ java获得是哪个方法调用当前的方法
// 获得当前类名
String clazz = Thread.currentThread() .getStackTrace()[1].getClassName();
// 获得当前方法名
String method = Thread.currentThread() .getStackTrace()[1].getMethodName();
System.out.println("class name: " + clazz + " Method Name " + method);
‘柒’ Java中,怎么在一个方法里面获得调用此方法的对象
如果是调用自己的成员函数,没什么条件。
如果调用的别的类中的成员函数,如果是该函数是非静态,需要先生成该类的对象再调用。
‘捌’ java怎么调用方法
java类有两种方法一种是类方法就是用static修饰的,一种是实例方法,就是没有static修饰的方法。类方法可以同时类名.方法名的方式调用。而实例方法必须先生存类的实例在通过实例.方法名的方式调用。例如: public class MethodCall { public static void main(String[] args) { Test.sayStatic(); Test test = new Test(); test.sayInstance(); } } class Test { public static void sayStatic() { System.out.println("这是一个静态方法。"); } public void sayInstance() { System.out.println("这是一个实例方法。"); }
‘玖’ java asm label获取调用方法
通过反射调用。
java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。
ASM 是一个 Java 字节码操控框架,它能被用来动态生成类或者增强既有类的功能,ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。