Java中怎样获取类中的方法

Java中怎样获取类中的方法,第1张

//通过包获取类对应的类对象

Class<> f= ClassforName("javaioFile");

//通过对象去获取对象对应的类的类对象

//File file=new File("");

Class<> f= filegetClass();

//通过类的class属性去获取类的类对象

Class<> f= Fileclass;

//获取方法的数组

Method[] methods= fgetMethods();

循环得到你想要的这 类中的方法,字段,属性

运行时类型识别(Run-timeTypeIdentification,RTTI)主要有两种方式,一种是我们在编译时和运行时已经知道了所有的类型,另外一种是功能强大的“反射”机制。

要理解RTTI在Java中的工作原理,首先必须知道类型信息在运行时是如何表示的,这项工作是由“Class对象”完成的,它包含了与类有关的信息。类是程序的重要组成部分,每个类都有一个Class对象,每当编写并编译了一个新类就会产生一个Class对象,它被保存在一个同名的class文件中。在运行时,当我们想生成这个类的对象时,运行这个程序的Java虚拟机(JVM)会确认这个类的Class对象是否已经加载,如果尚未加载,JVM就会根据类名查找class文件,并将其载入,一旦这个类的Class对象被载入内存,它就被用来创建这个类的所有对象。一般的RTTI形式包括三种:

1传统的类型转换。如“(Apple)Fruit”,由RTTI确保类型转换的正确性,如果执行了一个错误的类型转换,就会抛出一个ClassCastException异常。

2通过Class对象来获取对象的类型。如

Classc=ClassforName(“Apple”);

Objecto=cnewInstance();

3通过关键字instanceof或ClassisInstance()方法来确定对象是否属于某个特定类型的实例,准确的说,应该是instanceof/ClassisInstance()可以用来确定对象是否属于某个特定类及其所有基类的实例,这和equals()/==不一样,它们用来比较两个对象是否属于同一个类的实例,没有考虑继承关系。

反射

如果不知道某个对象的类型,可以通过RTTI来获取,但前提是这个类型在编译时必须已知,这样才能使用RTTI来识别。即在编译时,编译器必须知道所有通过RTTI来处理的类。

使用反射机制可以不受这个限制,它主要应用于两种情况,第一个是“基于构件的编程”,在这种编程方式中,将使用某种基于快速应用开发(RAD)的应用构建工具来构建项目。这是现在最常见的可视化编程方法,通过代表不同组件的图标拖动到图板上来创建程序,然后设置构件的属性值来配置它们。这种配置要求构件都是可实例化的,并且要暴露其部分信息,使得程序员可以读取和设置构件的值。当处理GUI时间的构件时还必须暴露相关方法的细细,以便RAD环境帮助程序员覆盖这些处理事件的方法。在这里,就要用到反射的机制来检查可用的方法并返回方法名。Java通过JavaBeans提供了基于构件的编程架构。

第二种情况,在运行时获取类的信息的另外一个动机,就是希望能够提供在跨网络的远程平台上创建和运行对象的能力。这被成为远程调用(RMI),它允许一个Java程序将对象分步在多台机器上,北京java培训认为这种分步能力将帮助开发人员执行一些需要进行大量计算的任务,充分利用计算机资源,提高运行速度。

   java中是可以多继承的,所以子类获得父类的类名,可以使用getSuperClass()这个方法来获得,示例如下:

public class Test1 extends Date {

    public static void main(String[] args) {

        new Test1()test();//测试获得父类类名方法

    }

    public void test() {

        Systemoutprintln(Test1classgetSuperclass()getName());//打印父类类名,使用getSuperclass()方法

    }

}

可以使用类反射技术。

去查查相关的文档吧。

应该说类反射技术是JAVA15以后的一大非常有特色的亮点。

根据类路径名,类名。定位类。

形成类的实例。

通过函数名实现调用。

还可以使用反射技术调用变量,修改变量等 *** 作。

找到了一个办法,你先按F3,然后点击Change Attached Source按钮,在d出的框里有个路径,我的路径是D:/SNSWorkSpace/JAR/~platformjar,然后你去引用Jar包的目录中找找看有木有platformjar,如果存在的话就用压缩工具打开看看是不是你要的Jar包,我的是这样找到的。

ClassforName()是根据类名称加载类 比如有一个类名为comabcAAA 此处ClassforName(‘comabcAAA ’)newInstance()就会创建一个AAA对象而class一般用来获取类的通用属性 比如AAAclassgetDeclareMethod()是获取AAA类的所有声明的方法 主要用于反射机制

以上就是关于Java中怎样获取类中的方法全部的内容,包括:Java中怎样获取类中的方法、北京java培训分享JAVA反射机制原理、java,在子类里面如何获取父类的类名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9483878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存