(更新:感谢Peter N的评论.)
我有一个包含多个类的java包,因此包含文件.但是我最初只想编译其中一个文件,以便我可以使用它来更新包中的其他类.它是其他类的工厂,因此依赖于它们 - 即.它引用了它们.
我一直在尝试使用JavaCompile gradle任务来执行此操作.因此,我已经阅读了JavaCompile的文档,并试图搜索示例,但似乎没有什么.我甚至在gradle论坛上发帖,但到目前为止进展缓慢.
我可以使用ant javac任务使用ant脚本轻松完成所需的操作.但是我想在gradle中完成它(并且不使用ant.javac方法 - 如果我必须这样做,我将只使用ant).
我创建了一个示例案例,在一个包中只有两个类的两个源文件.
这两个文件都在一个名为some.pkg的包中,因此我们有以下目录结构:
ClassOne:
package some.pkg;
import some.pkg.*;
public class ClassOne {
public void doStuff() {
}
}
Run Code Online (Sandbox Code Playgroud)
ClassTwo:
package some.pkg;
import some.pkg.*;
public class ClassTwo {
public void ClassTwo() {
ClassOne cone = new ClassOne();
cone.doStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,ClassTwo(我们想要独立编译的类)取决于ClassOne.
ant脚本是一个简单的例子:
<project>
<property name="build.dir" value="build"/>
<property name="lib.dir" value="lib"/>
<property name="src.dir" value="src/main/java"/> …Run Code Online (Sandbox Code Playgroud) 我试图将的Double值包含0.81在由生成的JSON中NSJSONSerialization。代码如下:
let jsonInput = [ "value": 0.81 ]
let data = try NSJSONSerialization.dataWithJSONObject(jsonInput, options: NSJSONWritingOptions.PrettyPrinted)
let json = NSString(data: data, encoding: NSUTF8StringEncoding)!
print( json )
Run Code Online (Sandbox Code Playgroud)
输出为:
{
"value" : 0.8100000000000001
}
Run Code Online (Sandbox Code Playgroud)
但是我想看到的是:
{
"value" : 0.81
}
Run Code Online (Sandbox Code Playgroud)
我NSJSONSerialization该怎么做?
让我感到困惑的另一件事是Swift对64bit的处理Double。在操场上,我也可以这样做:
let eightOne:Double = 0.81
"\(eightOne)"
print( eightOne )
Run Code Online (Sandbox Code Playgroud)
然后根据需要输出:
0.81
Run Code Online (Sandbox Code Playgroud)
即使在操场上它显示eightOne为0.8100000000000001尽可能内部表示去。但是,在此将其转换为字符串时,会斩掉其余部分。
我肯定可以解决此问题,因为您需要将其分类以进行任何类型的财务处理(例如,在Java中,我们知道仅BigDecimals在涉及财务价值时才使用)。
请帮忙。:)
注意:这里的重点是序列化到JSON。不只是简单地取消NSString( format: "%\(0.2)f", 0.81)。