小编Fab*_* F.的帖子

编译循环依赖关系如何工作?

我用Java编写了这个例子,但我认为(未经测试)它可以在其他(所有?)语言中使用.

你有2个文件.首先,M.java:

public class MType {
    XType x;
    MType() {x = null;}
}
Run Code Online (Sandbox Code Playgroud)

第二,另一个文件(在同一目录中)XType.java,:

public class XType {
   MType m;
   public XType(MType m) {this.m = m;}
}
Run Code Online (Sandbox Code Playgroud)

好吧,这是糟糕的编程,但如果你运行javac XType它编译:编译甚至MType因为XType需要它.但...... MType需要XType......这是如何运作的?编译器如何知道发生了什么?

我想知道编译器(javac或你知道的任何其他编译器)如何管理这种情况,而不是如何避免它.

我问,因为我正在写一个预编译器,我想管理那种情况.

compiler-construction circular-dependency

16
推荐指数
1
解决办法
2368
查看次数

Java:扩展Object类

我正在编写(好,完成)Java的"扩展",这将有助于角色编程.
我用javacc将代码翻译成Java代码.我的编译器为每个声明的类添加了一些代码.这是一个更清晰的例子:

MyClass extends String implements ObjectWithRoles { //implements... is added
    /*Added by me */
    public setRole(...){...}
    public ...
    /*Ends of stuff added*/
    ...//myClass stuff
}
Run Code Online (Sandbox Code Playgroud)

它为您声明的每个单一类添加了Implements ..和必要的方法.相当粗糙,不是吗?

如果我在一个类中编写我的方法并且所有类都扩展了那个...但是..如果类已经扩展了另一个类(就像示例那样)会更好吗?

我不想创建一种管理角色的包装器,因为我不希望程序员必须知道的不仅仅是Java,很少有新的保留字及其用法.

我的想法是扩展java.lang.Object ..但你不能.(对吧?)
其他想法?

我是新来的,但我关注这个网站,谢谢你的阅读和你给出的所有答案!(我为英语道歉,我是意大利人)

java extends class object

6
推荐指数
1
解决办法
4851
查看次数

在Netbeans上设置Context和Dependicie Injection(在项目创建之后)

我正在使用NetBeans开发J2EE项目.当我创建项目时,我没有检查"启用上下文和依赖注入"选项.

项目创建后是否可以更改选项?哪里?

谢谢!

netbeans java-ee netbeans-7

5
推荐指数
1
解决办法
2797
查看次数

ANTLR4整数解析失败

我正在尝试使用antlr 4解析文件,我无法理解为什么不能解析多于一位的整数(第79:44行在输入'17'处没有可行的替代方案).

这是有趣的语法http://pastebin.com/rxktvUBi

这是int的定义

fragment DIGIT : [0-9] ;
integer : DIGIT+ ;
Run Code Online (Sandbox Code Playgroud)

这根本不起作用.这个版本

integer : ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9')+ ;
Run Code Online (Sandbox Code Playgroud)

仅适用于1位整数.

这是未解析的行的示例

 struct p_77_bound_17_or: ((bound(MEK)<=17) | (bound(MEKPP)<=17))
Run Code Online (Sandbox Code Playgroud)

问题在于

 simple_expression:

     (integer)+
Run Code Online (Sandbox Code Playgroud)

请注意,如果我使用标识符

ID:
  ('a'..'z'|'A'..'Z'|'0'..'9'|'_')+;


identifier: ID;
Run Code Online (Sandbox Code Playgroud)

而不是整数

 simple_expression:

     identifier
Run Code Online (Sandbox Code Playgroud)

这样可行.

为什么?任何的想法?

parsing integer parser-generator antlr4

1
推荐指数
1
解决办法
1513
查看次数

是否可以使用没有 main() 的类来运行程序

在此处输入图片说明 我在某处读过您在 JVM 上执行的 Java 程序将始终以 main 方法开始执行。但是当我在bluej上编译下面的程序时,它成功编译而没有任何错误。

import java.util.*;
class Calculate
{
      int m,n,s,d;//Data members
     void inputdata()
     {
         Scanner sc = new Scanner(System.in);
         System.out.println("enter two numbers");
         m  = sc.nextInt();
         n = sc.nextInt();
     }
     void calculation()
     {
         s = m+n;
         d = m-d;
     }
     void outputdata()
     {
         System.out.println("sum of two  numbers:"+s);
         System.out.println("difference of two numbers:"+d);
     }
    
}
Run Code Online (Sandbox Code Playgroud)

请告诉我在下面的程序中没有 main 方法,那么它如何在 BLUEJ 上成功编译?我们需要创建一个主函数,当你的应用程序第一次运行时,控制将被转移。否则 JVM 将找不到转移控制权的函数,您的应用程序将无法运行。 没有main方法的程序成功编译

java

0
推荐指数
1
解决办法
119
查看次数