2014-02-17 2 views
0

Я компилирую свой проект java с помощью java 4 с помощью GNU Make, который не поддерживает дженерики.Почему String не распознается как объект

Вот мой маленький код вызывает ошибку:

for (int i = 0; i < text.length(); i++) { 
    if (text.charAt(i) > 127) { 
     buffer.append("\""); 
     String charValue = asciiToNascMap.get(String.valueOf((int)text.charAt(i))); 
     buffer.append(String.format(";CHR$(%d);\"", charValue)); 
    } else { 
     buffer.append(text.charAt(i)); 
     } 
    } 

    private static Map<String, String> asciiToNascMap = new HashMap<String, String>(); 

static { 
    asciiToNascMap.put("232", "125");//è 
    asciiToNascMap.put("233", "123");//é 
    asciiToNascMap.put("224", "64");//à 
    asciiToNascMap.put("231", "92");//ç 
    asciiToNascMap.put("199", "180");//Ç 
    asciiToNascMap.put("234", "193");//ê 
} 

Я получаю эту ошибку:

Printer.java:319: error:Cannot find method "java/lang/String.format(java.lang.String, java.lang.String)" 

Вот сигнатура метода string.Format:

/** 
* Returns a formatted string using the specified format string and 
* arguments. 
* 
* <p> The locale always used is the one returned by {@link 
* java.util.Locale#getDefault() Locale.getDefault()}. 
* 
* @param format 
*   A <a href="../util/Formatter.html#syntax">format string</a> 
* 
* @param args 
*   Arguments referenced by the format specifiers in the format 
*   string. If there are more arguments than format specifiers, the 
*   extra arguments are ignored. The number of arguments is 
*   variable and may be zero. The maximum number of arguments is 
*   limited by the maximum dimension of a Java array as defined by 
*   <cite>The Java&trade; Virtual Machine Specification</cite>. 
*   The behaviour on a 
*   <tt>null</tt> argument depends on the <a 
*   href="../util/Formatter.html#syntax">conversion</a>. 
* 
* @throws IllegalFormatException 
*   If a format string contains an illegal syntax, a format 
*   specifier that is incompatible with the given arguments, 
*   insufficient arguments given the format string, or other 
*   illegal conditions. For specification of all possible 
*   formatting errors, see the <a 
*   href="../util/Formatter.html#detail">Details</a> section of the 
*   formatter class specification. 
* 
* @throws NullPointerException 
*   If the <tt>format</tt> is <tt>null</tt> 
* 
* @return A formatted string 
* 
* @see java.util.Formatter 
* @since 1.5 
*/ 
public static String format(String format, Object ... args) { 
    return new Formatter().format(format, args).toString(); 
} 
+6

Ну, вы сказали, вы используете JDK 1.4, но метод формата в описании написано «так как 1.5» – Brian

ответ

3

Вы не можете использовать String.format в Java 1.4.

Try:

buffer.append(";CHR$(").append(Integer.valueOf(charValue)).append(");\""); 
5

Метод, который вы пытаетесь использовать, недоступен в Java 1.4. См. Тег @since в комментариях. Он говорит: @since 1.5 означает, что он был интродуцирован в Java 1.5.

+0

так есть эквивалент в Java 4? – AmiraGL

+1

Ничего не называется «Java 4». Это Java 1.4. Sun начинает называть его Java 5, начиная с Java 1.5. Тем не менее, от 1,2 до 1,4, все они являются Java 2. И нет, нет альтернативы String.fromat до Java 5, потому что поддержка Java не поддерживается до Java 5 –

+0

@AdrianShum Хорошо спасибо за это объяснение :)) – AmiraGL

2

String.format не доступен в Java 1.4. Это указано в тексте, который вы разместили в теге @since. Поддержка varargs не была добавлена ​​до Java 5, поэтому она, вероятно, не была добавлена ​​до тех пор. Однако люди создали библиотеки C printf-style.

Смотрите следующие ссылки:

http://www.sharkysoft.com/archive/printf/docs/javadocs/lava/clib/stdio/doc-files/introduction.htm http://www.cs.ubc.ca/~lloyd/java/doc/cformat.html

Смежные вопросы