java中,怎么在一个方法里面获得调用此方法的对象

java中,怎么在一个方法里面获得调用此方法的对象,第1张

看谁的方法

如果是普通方法,就是用this

如果是static标识的,那就用当前类

如果是native,那你得找jni关联的c代码

1、JAVA 获取当前实时时间或日期,都可以通过 javautilDate 类来获取。

2、调用 new javautilDate()getTime(); 这个方法获取的就是当前的时间,然后根据需要在进行格式化显示,格式化类为:SimpleDateFormat。

3、具体的代码如下图所示。

那么纠结哈,你把new出来的p和p1看成一个对象,p本身指向一个点,

pgetDistance(p1);语句:p调用getDistance(p1);方法的时候,你就理解成把p1传过来,和p比较(在这里是距离),你那样想就把自己搞晕了,传过来也是和自己相互比较,你要学会用面向对象的思维想,把p 和p1看成对象,希望对你有助。

抽象类: 动物 有方法 cry();

具体类1: 猫 extends 动物 实现方法cry()

具体类2: 狗 extends 动物 实现方法cry()

动物 dog = new 狗();

动物 cat = new 猫();

catcry();//结果是喵喵~ 叫

dogcry();//结虹是旺旺~ 叫

由于dog是new 出来的是狗 而cat是new出来的猫,所以虽然大家都属于动物,但其实不是同一种动物。 并且想让狗学猫叫,猫学狗叫是不可能的

动物 dog=new 狗(); 其实相当于理解成以下两条语句

1。狗 dg = new 狗();

2。动物 dog=(动物)dg;//将dg的狗类型转化成了动物类型

所以调用时当然只会调用狗的方法旺旺旺,而不会去调用其它动物的方法!

所以问题的关键在于生成时是 new 狗还是new 猫! 因为动物是不能被new出来的(抽象类不能实例化)所以我们就能分出执行的是哪个方法;

请参考

方法有四种类型public protect default private(在类内部使用时 ,这四种都可以用方法名称直接调用)

你这里说的两种方法的调用是public方法的类外部调用方式

super,调用父类的方法

this调用对象自己的方法

Java中要用到反射,首先就必须要获取到对应的class对象,在Java中有三种方法获取类对应的class对象。

1、通过类的class属性

2、通过类实例的getClass()方法获取

3、通过ClassforName(String className)方法获取

现在比如在package下有个类Calculator

public class Calculator{

public double add(double score1,double score2){

return score1 + score2;

}

public void print(){

Systemoutprintln("OK");

}

public static double mul(double score1,double score2){

return score1  score2;

}

}public class CalculatorTest {

public static void main(String[] args) throws Exception {

//通过类的class属性获取

Class<Calculator> clz = Calculatorclass;

//或者通过类的完整路径获取,这个方法由于不能确定传入的路径是否正确,这个方法会抛ClassNotFoundException

// Class<Calculator> clz = ClassforName("testCalculator");

//或者new一个实例,然后通过实例的getClass()方法获取

// Calculator s = new Calculator();

// Class<Calculator> clz = sgetClass();

//1 获取类中带有方法签名的mul方法,getMethod第一个参数为方法名,第二个参数为mul的参数类型数组

Method method = clzgetMethod("mul", new Class[]{doubleclass,doubleclass});

//invoke 方法的第一个参数是被调用的对象,这里是静态方法故为null,第二个参数为给将被调用的方法传入的参数

Object result = methodinvoke(null, new Object[]{20,25});

//如果方法mul是私有的private方法,按照上面的方法去调用则会产生异常NoSuchMethodException,这时必须改变其访问属性

//methodsetAccessible(true);//私有的方法通过发射可以修改其访问权限

Systemoutprintln(result);//结果为50

//2 获取类中的非静态方法

Method method_2 = clzgetMethod("add", new Class[]{doubleclass,doubleclass});

//这是实例方法必须在一个对象上执行

Object result_2 = method_2invoke(new Calculator(), new Object[]{20,25});

Systemoutprintln(result_2);//45

//3 获取没有方法签名的方法print

Method method_3 = clzgetMethod("print", new Class[]{});

Object result_3 = method_3invoke(new Calculator(), null);//result_3为null,该方法不返回结果

}

}

以上就是关于java中,怎么在一个方法里面获得调用此方法的对象全部的内容,包括:java中,怎么在一个方法里面获得调用此方法的对象、java调用实时时间的有方法吗、java 方法调用方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9778053.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存