我可以在Java中添加新功能,如委托,后期绑定等吗?

时间:2013-12-11 15:40:55

标签: c# java events delegates late-binding

有没有办法可以通过库将委托功能添加到Java中 例如,我写了添加库添加委托作为关键字并处理委托功能,如C#

delegate void SendMessageDelegate(Message message);

void SendMessage(SendMessageDelegate sendMessageDelegateReference)
{
  sendMessageDelegateReference(new Message("hello this is a sample message"));
}
void HandleSendMessage(Message message)
{
  Sender.Send(message);
} 

一般来说,我的问题是:有没有办法添加我的新功能,例如:

  • 后期绑定
  • 代表
  • 像C#
  • 这样的事件
  • 属性

由一个或多个库创建Java而不是创建一个新的编译器,如groovy或scala?

2 个答案:

答案 0 :(得分:0)

简单的答案是否定的。没有任何合理的工作量。

但是,您可以使用现有的Java工具实现部分或全部功能(或找到已经完成它的库)。

您将无法在该语言中添加新关键字 - 但您可以通过创意使用注释,泛型等来实现这一目标。

Google发现了这一点:https://today.java.net/pub/a/today/2004/10/06/compiler.html

我不知道它有多好。

答案 1 :(得分:0)

不,你不能在不编写自定义编译器的情况下添加自己的关键字。

JDK8,它非常实用,但仍然处于预处理阶段,它的labmdas很好地涵盖了代表/事件。对于lambdas(匿名内部类),JDK8之前的语法非常庞大,而JDK7具有与Delegates类似的MethodHandles。

属性?与不需要单独的属性/字段构造的C#相比,Scala有更好的解决方案。