有没有办法可以通过库将委托功能添加到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);
}
一般来说,我的问题是:有没有办法添加我的新功能,例如:
由一个或多个库创建Java而不是创建一个新的编译器,如groovy或scala?
答案 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有更好的解决方案。