社区
Java SE
帖子详情
java中有类似于函数指针的东西没???????
jefflovejava
2008-12-18 03:47:39
java中有类似于c++中的函数指针或者是c#中的代理没?
或者说,我现在要在一个函数(function1)里调用某个函数(function2),function2的签名形式不变,但是所在的类以及名称会有变化,我想在function1的参数列表里加入function2的签名,不知道java应该如何实现这个?
...全文
714
26
打赏
收藏
java中有类似于函数指针的东西没???????
java中有类似于c++中的函数指针或者是c#中的代理没? 或者说,我现在要在一个函数(function1)里调用某个函数(function2),function2的签名形式不变,但是所在的类以及名称会有变化,我想在function1的参数列表里加入function2的签名,不知道java应该如何实现这个?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pauliuyou
2008-12-19
打赏
举报
回复
这类需求用反射实现
WIN_ANGEL
2008-12-19
打赏
举报
回复
进来瞅瞅~
ccc_moriya
2008-12-19
打赏
举报
回复
mark...
axman
2008-12-19
打赏
举报
回复
难道就没有人懂CALLBACK这种基础概念?
fastmask
2008-12-19
打赏
举报
回复
上面都说了用接口来实现,或者用反射机制都是可以实现的。
没有必要讨论指针。
树成
2008-12-18
打赏
举报
回复
java的语言机制里面没有指针的概念,但是有动态代理,spring的AOP基础就是动态代理。
但是java里面没有指针概念却可以通过native的方式来封装指针,不过那不是java实现的,而是java利用C++去实现了。
我们都知道,所谓的指针就是一个内存地址值,也就是一个数字,它完全可以用long类型来表示。
你大概可以这么实现,写两个方法,一个传入一个Object类型,返回这个Object类型的地址值(long类型),另一个传入地址值(long类型数值),返回一个Object类型,然后根据需要吧这个Object类型进行强转(当然你也可以使用泛型来替代)。当遇到基础数据类型的时候,在native里面封装成对象类型类型就可以了,不然Object类型不能接受基础数据的。这样你就可以实现类似指针功能了。
不过这样实现我并不推荐,首先这样的实现不跨平台(跨平台也可以,每个平台写一个native,就像jdk那样),这样一来java优势荡然无存还不如直接用有指针的语言来开发,其次,这种实现方式极易使虚拟机崩溃(产生不可抛出异常的内存错误,因为它已不在java虚拟机管辖范围之内了),有时甚至会导致蓝屏死机这种可怕后果,慎用。
bigbro001
2008-12-18
打赏
举报
回复
[Quote=引用 3 楼 ZangXT 的回复:]
函数指针可以用接口类似的实现。
比如
public interface FunctionPointer{
voif function();
}
public void test(FunctionPointer fp){
fp.function();
}
只要给test方法传入不同的实现该接口的类的对象即可。跟你把指针指向不同的函数类似。
Effective Java中有说明,可以看看。
[/Quote]
学习了。。。
酒剑仙
2008-12-18
打赏
举报
回复
指针=引用
tianice
2008-12-18
打赏
举报
回复
引用功能类似
ZangXT
2008-12-18
打赏
举报
回复
[Quote=引用 16 楼 bao110908 的回复:]
目前没有。但在 JDK 7 中可能会增加闭包,如果增加的话那就有了。
[/Quote]
不希望增加,呵呵。
火龙果被占用了
2008-12-18
打赏
举报
回复
目前没有。但在 JDK 7 中可能会增加闭包,如果增加的话那就有了。
chandlersong
2008-12-18
打赏
举报
回复
还是看看基本java基础入门之类的书吧。尽管没学过C,和C++,同时也觉得所谓的语言只是手中的一支笔。
但是,java和C的思考方式感觉完全不一样。一天到晚类比,等于没学。
pepsighost
2008-12-18
打赏
举报
回复
用引用就可以了
jhr924
2008-12-18
打赏
举报
回复
java 叫 引用
hbwhwang
2008-12-18
打赏
举报
回复
反射比函数指针更威猛
不善^
2008-12-18
打赏
举报
回复
class A{
int i =10;
}
main()
{
A a = new a()
a.i; //这里引用也就是类似指针
}
guolimin1118
2008-12-18
打赏
举报
回复
UP
sleep_ok
2008-12-18
打赏
举报
回复
参考策略模式
jefflovejava
2008-12-18
打赏
举报
回复
[Quote=引用 3 楼 ZangXT 的回复:]
函数指针可以用接口类似的实现。
比如
public interface FunctionPointer{
voif function();
}
public void test(FunctionPointer fp){
fp.function();
}
只要给test方法传入不同的实现该接口的类的对象即可。跟你把指针指向不同的函数类似。
Effective Java中有说明,可以看看。
[/Quote]
谢谢提示了,我有点思路了,等弄好了回来结贴
twinsouzhili
2008-12-18
打赏
举报
回复
有,在JAVA中我们称引用.
加载更多回复(6)
Java
如何实现
类似
于C语言中
函数指针
的功能
在C语言中,有一个非常重要的概念—
函数指针
,其最重要的功能是实现回调函数。 什么是回调函数? 所谓回调函数,就是指函数先在某处注册,而它将在稍后某个需要的时候被调用。在Window系统中,开发人员想让系统动态链接库(Dynamic Link Library,DLL)调用自己编写的一个方法,于是利用DLL当中回调函数的接口来编写程序,通过传递一个函数的指针来调用,这个过程就称为回调。 回调函数一般用...
Java
中的“
函数指针
”
[一点废话] 很久都
没
有管理过自己的博客了,原先只是想记录点自己的笔记和遇到的问题以及如何解决的,以供自己回头查看方便,同时也可以帮助其他人。最近登陆上来发现竟然有这么多人看我写过的博文,虽然写的也不怎么好,所以打算后面好好的写一些
东西
,养成习惯吧。最近又重新看了比较新的《
Java
核心卷 第十版》,发现了值得记录的一些内容,这里就结合我自己的体会总结下,鉴于本人水平有限,如果有什么理解不对的地方,...
java
中的回调函数
CALLBACK,即回调函数,是一个通过
函数指针
调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。---百度百科 上面的解释是在C++中对回调函数的解释。 在
java
中也是存在回掉函数的,我们可以把回调函数理解为一个被作为参数传递的函数。 就英语单词的角度上,我们把CALLBACK这个单词拆开,即CALL和BACK,
C语言 | 浅析
函数指针
与指针函数及其应用
关注、星标公众号,直达精彩内容来源:https://blog.csdn.net/qq_45932673/article/details/124687921作者:灌了桶盐的鱼一、指针简介什么是指针?相信大家对这个问题其实并不陌生,对指针的概念也不会很模糊,在这里我也大概介绍一下。1.1、指针定义指针 其实可以理解为某一对象的内存地址,指针变量就是用来存放内存地址的变量。由此我们发现,其实指针...
如何用
Java
实现
类似
c/c++指针效果
如何用
Java
实现
类似
c/c++指针效果
JAVA
作为一门类C语言,已经得到大家的青睐,许多人问过我
Java
是否也可以用指针,当然这主要是因为他们觉得有了指针,可以省去对象调用的麻烦,但
没
有想到的是
Java
语言为何
没
有设置指针,举个例子: 一个无法实现c/c++指针效果的例子 public class Foo { public static void main(String[
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章