在Java中,有没有动态生成方法的...办法???

在Java中,有没有动态生成方法的...办法???,第1张

这个也能实现的,这就得利用java的动态编译,java中可以利用代码临时生成java文件,并且执行编译,运行,但这个有一点麻烦,还要用到java中的反映机制

apache的commons-beanutils包中就有这样的方法,hibernate中映射类中的get与set方法是存在的最好不要用临时生成java文件,动态编译

Java静态方法是不能调用动态方法的,原因如下:\x0d\1因为静态方法和动态方法在内存中的位置不一样,静态方法的地址空间在加载类的时候就确定,而动态方法的地址空间在生成类实例的时候确定\x0d\2静态方法在程序初始化后会一直贮存在内存中,不会被垃圾回收器回收,\x0d\ 非静态方法只在该类初始化后贮存在内存中,当该类调用完毕后会被垃圾回收器收集释放。\x0d\3静态方法在初始化类时初始化,并分配内存;动态方法只有先创建类的实例对象后,才能调用动态方法

没太理解你要求的 实现但一般这种动态获取类信息 在java中都是通知反射机制实现的

Java的反射API(Reflection API)

Class类:要正确使用Java反射机制就得使用javalangClass这个类。它是Java反射机制的起源。当一个类被加载以后,Java虚拟机就会自动产生一个Class对象。通过这个

Class对象我们就能获得加载到虚拟机当中这个Class对象对应的方法、成员以及构造方法的声明和定义等信息。

 

反射API用于反应在当前Java虚拟机中的类、接口或者对象信息

功能:(Object object = new Object(),下面以对象object进行说明)

1)  获取类的Class对象

如果在运行时一个类的实例已经得到,你可以使用

Class c = 对象名getClass();例: Class c = objectgetClass();Class s = objectgetSuperclass();

如果你在编译期知道类的名字,你可以使用如下的方法Class c =java awt Buttonclass; 或者Class c = IntegerTYPE;

如果类名在编译期不知道, 但是在运行期可以获得, 你可以使用下面的方法Class c = ClassforName(“类的全路径”);

2)  获取类的Fields ,对Field进行赋值

Field[] fus = objectgetClass()getDeclaredField();

Field fu = objectgetClass()getDeclaredField(fieldName);//获取对象object的名称为fieldName的属性域。

fusetAccessible(true) ;//设置属性域的访问属性

fuset(object,val); //设置object对象的属性值

3)  获取类的Method

Method[]  ms= objectgetClass()getDeclaredMethods()

4)  获取类的Constructor

5)  新建类的实例

(A)通过Class<T>的函数newInstance

(B)通过Constructor对象的方法newInstance

在面向对象中,类与类之间的关系有泛化,依赖,关联,聚合,组合几种。

其中,聚合和组合都属于关联。

在具体编程中:

依赖表现为如果A类依赖于B,则B体现为A的局部变量,方法参数或静态方法的调用。

eg:

class B{

Static void function1(){};

void function2(){};

}

public class A{

public static void main(String[] args){

Bfunction1();//A类中调用了B类的静态方法

}

}

聚合和组合都属于关联,很难区分,但是只要记住一点,区分它们就容易多了:

处于聚合关系的两个类生命周期不同步,则是聚合关系;处于组合关系的两个类的生命周期同步;

eg:

聚合关系,当A创建的时候,B不一定创建;当A消亡时,B不一定消亡。

class A{

private B;

}

class B{

}

组合关系,当创建一个A对象时,也会创建一个B对象;当A对象消亡时,作为A的属性的B对象也会消亡。

class A{

private b=new B();

}

class B{

}

1、首先打开手机中的QQ软件,进入手机qq的首页。

2、其次在屏幕上向左滑动一下,可以看到自己的个人信息。

3、最后头像上面的这个就是可以设置土味情话墙,进入之后点击屏蔽即可。

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4062361.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存