Java - funkcja tworząca objekt

0

Witam!

Czy znacie jakiś sposób aby stworzyć funkcję tworzącą obiekt klasy?
Mam jakąś klasę / w niej konstruktor np.

public class Pomidor{
	
public Pomidor(..) {
..
}
}
// zwyczajnie tworzy się obiekt tak:
Pomidor pomidor1 = new Pomidor(...)

I chcę stworzyć funkcję która tworzy obiekt np. pomidor / w tej funkcji chcę podawać nazwę obiektu(np. tego pomidor1)
Chce aby ta funkcja ogarniała nazwę tego obiektu który tworzę...
Jest to możliwe do zrobienia? Szukałem w internecie ale nie znalazłem ;)

0

hmm... wydaje mi się, że chcesz zrobić coś co w Javie jest niemożliwe, czyli pass-by-reference, a Java jest pass-by-value.

0

Ale jak by to potem miało działać niby? Możesz pokazać kod w którym chciałbyś tego użyć? o_O

0

To było pytanie czysto ciekawskie czy jest możliwość stworzenia funkcji tworzącej obiekty po podaniu nazwy... ;)

0

tak jest taka mozliwosc

0

Chyba chodzi Ci o coś takiego jak w JS:

class Pomidor {
  constructor() {
    this.color = 'red';
  }
}

function create(constructor) {
  return new constructor();
}

const pomodoro = new Pomidor(); // -> Pomidor {color: "red"}
const tomato = create(Pomidor); // -> Pomidor {color: "red"}

W Javie się z tego co wiem tak nie da.

0

@Maciej Cąderek nie no oczywiście że sie da takie coś zrealizować w Javie bez problemu, ale on nie o to pyta bo przecież mówi o podawaniu nazwy obiektu a nie nazwy klasy.

0

@Shalom Rzeczywiście bezsens (zasugerowałem się zdaniem "Czy znacie jakiś sposób aby stworzyć funkcję tworzącą obiekt klasy?"), choć przynajmniej w js wykonalny - jest jakiś odpowiednik w Javie (tak z czystej ciekawości)?

class Pomidor {}

function createPomidor(objectName, scope = window) {
  scope[objectName] = new Pomidor();
}

createPomidor('tomato');

console.log(tomato); // -> Pomidor {}

0

Nie bo w javie nie ma dostępu w prosty sposób do symboli widocznych w runtime. W pythonie by się to dało zrobić podobnie jak w JS, ale w javie już nie bardzo.

0

w tej funkcji chcę podawać nazwę obiektu

Nie da się ponieważ nie istnieje tak na prawdę coś takiego jak nazwa obiektu, a nazwa referencji na obiekt, a JVM nie pozwala dostać się do referencji przez żadne systemy refleksji

1 użytkowników online, w tym zalogowanych: 0, gości: 1