本文目录一览:
1、[JAVA 对象类型转换----子类转换父类](#JAVA 对象类型转换----子类转换父类)
2、JAVA对象类型的转换
3、java中怎么把对象转换成整形?
4、在java中,什么是对象类型的转换,
5、[JAVA 对象类型转换](#JAVA 对象类型转换)
6、java两个对象转换方法放哪合适
JAVA 对象类型转换----子类转换父类
首先你要理解在Java里面子类与父类的关系。 子类继承父类,它可以继承到父类的非私有成员变量,以及方法。 也就是说这个子类的对象完全可以当作父类的对象来用,因为它拥有所有父类的方法,和成员 所以,在Java里面,父类的引用可以指向子类对象。
A a = b;
因为b是B类的对象,B类继承自A类,所以A a = b;没有问题。等于A a = new B();
- 方法
callA(A a)
的参数形式就这个参数必须是A类的对象。当然,也可以A类子类的对象。因为A类子类的对象可以当A类的对象来用嘛。 callA(new B())
实际上等同A a = new B();callA(a);
第二问的 "如何调去的方法" 什么意思?
JAVA对象类型的转换
Test1 t1 = new Test(); // 这才是向上转型
new Test()
是子类对象,但是被父类的引用t1指向了,父类引用指向子类对象,所以是向上转型。
new
是为对象分配空间的,但是没有被指向,所以需要Test obj = new Test();
obj来指向它,否则后面无法使用到此对象。
java中怎么把对象转换成整形?
object类型转换为int类型分以下三种情况:
- 如果object是byte,short,int,char类型生成的,那么不用转换直接赋值就ok了。
- 如果object是字符串类型生成的,先把object转换为String类型的,再把String类型转换为int类型。 例如:
String myInt = "123";
Object os = myInt;
int b = Integer.parseInt((String)os); // 还可以 os.toString()
- 如果object是float,double,long类型生成的,思路和上面一样,先把object转换为相应的数据类型,然后再转换为int类型。
在java中,什么是对象类型的转换,
一般就是继承关系的父类和子类,进行对象类型的转换,我们知道子类继承父类,说明子类有了父类的大多数方法,同时子类也可以有自己的方法。 例如:
A a = new B();
其中B是A的子类,那么这样写没有错。反过来写就有错,因为父类没有子类的一部分方法(可以这么理解)。 至于有什么用,这个问题很深奥啊,这个和编程思想有关系,这种写法比较好。一般用父类new子类,可以理解为比如一个鸟的类型,下面有许多子类,我们不用关心new的是什么鸟,因为他们都有相同的父类方法只是实现的时候不一样。可以看看《Java编程思想》,多理解一下。
JAVA 对象类型转换
-
因为 B继承A,把子类的实例b 赋值给父类 A型的变量 a;就是 父类的引用指向子类的实例。B b = new B(); A a = b;
A a
只是定义类型为 A 的参数a,就像callA(String str)
只不过指明参数的类型而已。callA(a);
与callA(new B());
那B b = new B(); A a = b; callA(a);
callA(a)
不就是相当于类B的一个实例了,其实是回调函数的一种,也是父类的引用指向子类的实例的一种表现。callA(new B());
就好解释了,就是顺延,既然B继承了A,那么 B的实例对象 new B() 是不是也相当于A的对象。 你可以去网上看看:- (1)父类的引用指向子类的实例
- (2)回调机制
Java:回调机制
1. 什么是回调函数
回调函数(callback Function),顾名思义,用于回调的函数。 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性:
- 属于工作流的一个部分;
- 必须按照工作流指定的调用约定来申明(定义);
- 他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的功能;
2. 回调机制
回调机制是一种常见的设计模型,它把工作流内的某个功能,按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。
- 同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;
- 回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;
- 异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。 回调和异步调用的关系非常紧密:使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。
用Java里的例子:
package callbackexample;
public interface ICallBack {
// 需要回调的方法
public void postExec();
}
另一个类:
package callbackexample;
public class FooBar {
// 组合聚合原则
private ICallBack callBack;
public void setCallBack(ICallBack callBack) {
this.callBack = callBack;
doSth();
}
public void doSth() {
callBack.postExec();
}
}
测试类中使用匿名类:
package callbackexample;
public class Test {
public static void main(String[] args) {
FooBar foo = new FooBar();
foo.setCallBack(new ICallBack() {
public void postExec() {
System.out.println("在Test类中实现但不能被Test的对象引用,而由FooBar对象调用");
}
});
}
}
上述代码:
- 两个类:匿名类和FooBar
- 匿名类实现接口ICallBack(在test测试的main方法中用匿名类的形式实现)
- FooBar 拥有一个参数为ICallBack接口类型的函数setCallBack(ICallBack o)
- 匿名类运行时调用FooBar中setCallBack函数,以自身传入参数
- FooBar已取得匿名类,就可以随时回调匿名类中所实现的ICallBack接口中的方法
回调方法说明:
- 首先回调方法的概念与“构造方法”的概念是不一样的,它不是指java中某个具有特殊意义或用途的方法。
- 称它为方法的“回调”更恰当一些,它是指方法的一种调用方式。任何一个被“回调”的方法,皆可称之为“回调方法”
- 方法的回调通常发生在“java接口”和“抽象类”的使用过程中。 假设有接口名为 ICallBack 其中有方法名为postExec() 有类Myclass 实现了该接口,也就是一定实现了postExec()这个方法。现在有另一个类FooBar它有个方法 setCallBack(ICallBack callBack) ,并且setCallBack方法调用了callBack的postExec()方法。 如果现在,我们使用一个Myclass 的实例myClass,将它作为参数带入到setCallBack(ICallBack callBack)方法中,我们就说setCallBack(ICallBack callBack)方法回调了myClass的postExec()方法。
java两个对象转换方法放哪合适
如果有自定义转换的需求,写一个简单的Java类即可,然后在方法上打上Mapstruct的注解@Named
,在@Mapper(uses = 自定义的类)
,然后@Mapping
中用...