Професионална програма
Loading...
+ Нов въпрос
DJZoning avatar DJZoning 85 Точки

Може ли да си създадем собствени функции във вградените класове в Java?

Можем ли да си напишем собствена функция/метод, която/който да извършва нещо във вградените в Java класове? Примерно:

public String padLeft(int length, char character)

Тази функция/метод ще приема int обща дължина на стринга, който искаме да ни бъде върнат, символа, с който искаме да допълним нашия стринг от ляво, който след това ще върне.

И след това от някакъв стринг да извикваме тази функция/метод? Примерно:

String binNumber = "1010".padLeft(8,'0');

И функцията да връща - "00001010"

Дали е възможно?

Извинете ако въпросът не е зададен правилно и на място!

Благодаря предварително!

Тагове:
1
Java Advanced
ivailozd avatar ivailozd 75 Точки

Наричат се методи: ТУК

0
HPetrov avatar HPetrov 822 Точки

Имаше готов метод точно за padding но е малко шантав. String.format("%s").replace(' ', '0'); "%s" всъщност ти е един обикновен placeholder и му даваш стойността по същия начин. Обаче за да .replace празните места трябва в Placeholder-а да му зададеш колко места да е дълго. Например -> String.format("%10s", Integer.toBinaryString(firstNum)).replace(' ', '0'); Това ти конвертира някакво число в двуичен вид и му задава колко елементда да е дълъг.

1
DJZoning avatar DJZoning 85 Точки

Това го пробвах и не се получи, желания ефект просто не сменяше white spaces с '0' и за това направих това

public static String padLeft(String s, int lenght, char character){
    while(s.length() < lenght){
    s = character + s;
    }
        return s;

}

и всичко стана ОК само, че сега не го използваме върху стринг, ами трябва да му зададем стринг като параметър.

0
Samuil.Petrow avatar Samuil.Petrow 1548 Точки

DJZoning, това за което ти говориш се осъществява чрез Extension Methods в C# или чрез prototype в Javascript, но за съжаление няма еквивалент в Java...

0
HPetrov avatar HPetrov 822 Точки

При мен се получи без проблем, не знам защо не се получава и при теб. Може би трябва да вметна, че с този метод всъщност задавам на друг string някаква стойност. Ако просто искам да принтирам нещо и на място да го запълня, няма да стане, иска малко повече писане предварително :)

1
aslv1 avatar aslv1 304 Точки

Аз използвах

StringUtils.leftPad(Integer.toBinaryString(a), 10, '0')

като пишеш отгоре

import org.apache.commons.lang.StringUtils;

Това е външна библиотека и може да си изтеглиш .jar-а оттук smile

0