小编Sim*_*son的帖子

在Velocity中取消设置变量

是否可以将Velocity引用设置为"null"或"undefined"?

Velocity模板语言参考

#set - 建立参考格式的值:

# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )

用法:

$ref - 赋值的LHS必须是变量引用或属性引用.

arg - 赋值的RHS,arg如果用双引号括起来解析,如果用单引号括起来则不解析.如果RHS评估为null,则不会将其分配给LHS.(强调我的)

我找不到等效的#unset宏.

java templates velocity

14
推荐指数
2
解决办法
1万
查看次数

是否有半自动方式为i18n执行字符串提取?

我们有一个Java项目,其中包含大量用于用户提示,错误消息等的英语字符串.我们希望将所有可翻译的字符串提取到属性文件中,以便以后可以翻译它们.

例如,我们想要替换:

Foo.java

String msg = "Hello, " + name + "! Today is " + dayOfWeek;
Run Code Online (Sandbox Code Playgroud)

有:

Foo.java

String msg = Language.getString("foo.hello", name, dayOfWeek);
Run Code Online (Sandbox Code Playgroud)

language.properties

foo.hello = Hello, {0}! Today is {1}
Run Code Online (Sandbox Code Playgroud)

我知道以完全自动化的方式完成此操作几乎是不可能的,因为不是每个字符串都应该被翻译.但是,我们想知道是否有一种半自动化方式可以消除一些劳动力.

java string internationalization

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

对于"伪类型反模式",有没有理由?

我有一个相对复杂的泛型类型(比如说Map<Long,Map<Integer,String>>),我在课堂内部使用它.(没有外部可见性;它只是一个实现细节.)我想在typedef中隐藏它,但Java没有这样的功能.

昨天我重新发现了以下成语,并且对于被认为是反模式感到失望.


class MyClass
{
  /* "Pseudo typedef" */
  private static class FooBarMap extends HashMap<Long,Map<Integer,String>> { };

  FooBarMap[] maps;

  public FooBarMap getMapForType(int type)
  {
    // Actual code might be more complicated than this
    return maps[type];
  }

  public String getDescription(int type, long fooId, int barId)
  {
    FooBarMap map = getMapForType(type);
    return map.get(fooId).get(barId);
  }

  /* rest of code */

}
Run Code Online (Sandbox Code Playgroud)

当类型被隐藏并且不构成库API的一部分时(在我看来,Goetz对使用它的主要反对意见),是否有任何理由可以解决这个问题?

java typedef anti-patterns

10
推荐指数
2
解决办法
1411
查看次数

如何在针对Java 1.5优雅降级的同时引用Java 1.6 API?

我想使用Java 1.6中的java.text.Normalizer类来进行Unicode规范化,但我的代码必须能够在Java 1.5上运行.

我不介意在1.5上运行的代码是否不进行规范化,但我不希望它在运行时给出NoClassDefFoundErrors或ClassNotFoundExceptions.

实现这一目标的最佳方法是什么?

java graceful-degradation

10
推荐指数
2
解决办法
2645
查看次数

如何将String转换为Java字符串文字?

这是关于C#这个问题的类似Java .

假设我有一个String我想在代码中表示的对象,我想生成一个映射到同一个东西的字符串文字.

hello, "world"
goodbye
Run Code Online (Sandbox Code Playgroud)

hello, \"world\"\ngoodbye
Run Code Online (Sandbox Code Playgroud)

我正准备编写一个状态机,逐字符地提取字符串并适当地转义,但后来我想知道是否有更好的方法,或者提供了执行此操作的函数的库.

java string

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

哪种方法是从Java访问本机代码的最快方法?

哪种方法是从Java调用本机库的最快方法?

我所知道的是

  • NativeCall - 我们目前正在使用的
  • JNA - 没有使用它,但看起来很合理
  • JNI - 看起来很可怕,但如果我们得到速度,我们就会这样做

java java-native-interface native

9
推荐指数
2
解决办法
2549
查看次数

其他NaN值有哪些?

对文件java.lang.Double.NaN说,这是

保持类型的非数字(NaN)值的常量double.它相当于返回的值Double.longBitsToDouble(0x7ff8000000000000L).

这似乎暗示还有其他人.如果是这样,我如何抓住它们,这可以移植吗?

需要明确的是,我想找到的doublex,使得

Double.doubleToRawLongBits(x) != Double.doubleToRawLongBits(Double.NaN)
Run Code Online (Sandbox Code Playgroud)

Double.isNaN(x)
Run Code Online (Sandbox Code Playgroud)

都是真的.

java floating-point nan ieee-754

9
推荐指数
2
解决办法
2568
查看次数

DataInputStream.skipBytes(n)何时不能跳过n个字节?

DataInput.skipBytesSun文档声明它"尝试从输入流中跳过n个字节的数据,丢弃跳过的字节.但是,它可能会跳过一些较小的字节数,可能为零.这可能是由于任何一个条件;在跳过n个字节之前到达文件末尾只有一种可能性."

  1. 除了到达文件末尾,为什么可能skipBytes()不会跳过正确的字节数?(DataInputStream我正在使用的将要包装一个FileInputStream或一个PipedInputStream.)

  2. 如果我肯定想跳过n个字节并抛出一个EOFException如果这导致我转到文件的末尾,我应该使用readFully()并忽略生成的字节数组吗?或者,还有更好的方法?

java io

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

为什么与Eclipse编译器相比,javac 1.5的运行速度如此之慢?

我有一个Java Maven项目,包含大约800个源文件(一些由javacc/JTB生成),用javac编译需要25分钟.

当我将pom.xml更改为使用Eclipse编译器时,编译大约需要30秒.

有关为什么javac(1.5)运行如此缓慢的任何建议?(我不想永久切换到Eclipse编译器,因为Maven的插件似乎不仅仅是一个小错误.)

我有一个测试用例,很容易重现问题.以下代码在默认包中生成许多源文件.如果您尝试使用javac编译ImplementingClass.java,它似乎会暂停很长时间.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class CodeGenerator
{
    private final static String PATH = System.getProperty("java.io.tmpdir");
    private final static int NUM_TYPES = 1000;

    public static void main(String[] args) throws FileNotFoundException
    {
        PrintStream interfacePs = new PrintStream(PATH + File.separator + "Interface.java");
        PrintStream abstractClassPs = new PrintStream(PATH + File.separator + "AbstractClass.java");
        PrintStream implementingClassPs = new PrintStream(PATH + File.separator + "ImplementingClass.java");
        interfacePs.println("public interface Interface<T> {");
        abstractClassPs.println("public abstract class AbstractClass<T> implements Interface<T> {");
        implementingClassPs.println("public class ImplementingClass extends AbstractClass<Object> …
Run Code Online (Sandbox Code Playgroud)

java eclipse maven-2 javac

8
推荐指数
3
解决办法
2653
查看次数

如何使字符变量等于任意SAS格式的数值变量的格式化值?

如果我有一个格式的数字变量,有没有办法将格式化的值作为字符变量?

例如,我想写下面的东西来打印10/06/2009到屏幕但没有putformatted()功能.

data test;
  format i ddmmyy10.;
  i = "10JUN2009"d;
run;

data _null_;
  set test;
  i_formatted = putformatted(i); /* How should I write this? */
  put i_formatted;
run;
Run Code Online (Sandbox Code Playgroud)

(显然我可以写put(i, ddmmyy10.),但我的代码需要适用于任何格式i.)

sas

8
推荐指数
3
解决办法
9406
查看次数