「call()方法java」call的使用
本篇文章给大家谈谈call()方法java,以及call的使用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、和call()方法的区别
- 2、Java call和callback的用法
- 3、java Dispatch.call()
- 4、使用java编写代码如下要求
- 5、JAVA中Callable的call方法抛出的异常会抛到那里?
- 6、Java Callable接口的call方法什么时候被调用
和call()方法的区别
apply和call方法定义及apply和call方法的区别
1、方法定义
call,
apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call,
apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了.这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同.
call方法:
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
apply方法:
语法:apply([thisObj[,argArray]])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明:
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数
call, apply作用就是借用别人的方法来调用,就像调用自己的一样.
它们的不同之处:
apply:最多只能有两个参数——新this对象和一个数组
argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里面。如果 argArray
不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj
任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
call:则是直接的参数列表,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
更简单地说,apply和call功能一样,只是传入的参数列表形式不同:如 func.call(func1,var1,var2,var3)对应的apply写法为:
func.apply(func1,[var1,var2,var3])
如:
add.apply(sub,[3,1]);
//add.call(sub,3,1);
var a={
n:1,
m:2,
add:function(){
return this.n+this.m;
}
}
var b={n:3,m:4
}
console.log(a.add.call(b));//b.n+b.m=7
function Animal(){
this.name = "Animal";
this.showName = function(){
alert(this.name);
}
}
function Cat(){
this.name = "Cat";
}
var animal = new Animal();
var cat = new Cat();
//通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。
//输入结果为"Cat"
animal.showName.call(cat,",");
animal.showName.apply(cat,[]);
Java call和callback的用法
A对象调用B接口的b方法,b方法又反过来调用A对象中的c方法。
A调用B接口时把自身给B接口,至于怎么处理,由B的实现类去做,不关A的事。
原文出自 希望能帮到你
java Dispatch.call()
调用无参的方法
Dispatch.call(disp, "Init").getShort();
调用有一个参数的方法
Dispatch.call(disp,"Method",new Variant(args)).getBoolean();
调用多个参数依次类推,注意在传递参数前,将Java中的参数转换成Variant
详细地址:
使用java编写代码如下要求
NewPhone类
package com.baidu.question;
public class NewPhone extends Phone {
private boolean mute = true;
@Override
public void call() {
if(mute){
super.call();
}else{
System.out.println("语音已关闭");
}
}
//这里是直接设置
public void setMute(boolean mute){
this.mute=mute;
}
//担心你的题目是要求两种方法,写的第二种,下面两个方法负责开关
public void openMute(){
this.mute=true;
/*
* 也可以这样写
* setMute(true);
* 下边的方法一样
* */
}
public void closeMute(){
this.mute = false;
}
}
Phone类
package com.baidu.question;
public class Phone {
public void call(){
System.out.println("打电话");
}
}
测试类
package com.baidu.question;
public class PhoneTest {
public static void main(String[] args) {
Phone phone = new Phone();
phone.call();
NewPhone newPhone = new NewPhone();
newPhone.call();
newPhone.setMute(false);
newPhone.call();
newPhone.openMute();
newPhone.call();
newPhone.closeMute();
newPhone.call();
}
}
测试结果
打电话
打电话
语音已关闭
打电话
语音已关闭
JAVA中Callable的call方法抛出的异常会抛到那里?
调用的的这个类就要负责接受抛出的异常现则处理异常或者继续抛出。
Callable接口实际上是属于Executor框架中的功能类,Callable接口与Runnable接口的功能类似,但提供了比Runnable更加强大的功能。
Callable可以在任务结束的时候提供一个返回值,Runnable无法提供这个功能,Callable的call方法分可以抛出异常,而Runnable的run方法不能抛出异常。
扩展资料:
注意事项:
对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作的劳动人民—既拥有每一个对象的所有权,又担负着每一个对象生命开始到终结的维护责任。
对于Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,而且不容易出现内存泄漏和内存溢出问题。
因为Java程序员把内存控制的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误将会成为一项异常艰难的工作。
参考资料来源:百度百科-Java
参考资料来源:百度百科-callable
Java Callable接口的call方法什么时候被调用
线程提交执行的时候就会被调用,就像run方法一样,只不过这里在未来可以得到call执行的结果
import java.util.ArrayList;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
class TaskWithResult implements CallableString{
private int id;
private static int count =10;
private final int time =count--;
public TaskWithResult(int id){
this.id = id;
}
@Override
public String call() throws Exception {
TimeUnit.MILLISECONDS.sleep(100);
return "Result of TaskWithResult : "+ id+", Time= "+time;
}
}
public class CallableDemo {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService exec = Executors.newCachedThreadPool();
ArrayListFutureString results =new ArrayListFutureString();
for(int i=0;i10;i++){
results.add(exec.submit(new TaskWithResult(i)));
}
for(FutureString fs : results){
System.out.println(fs.get());
}
}
}
关于call()方法java和call的使用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-11,除非注明,否则均为
原创文章,转载请注明出处。