Nazwa CLASS podana przez uzytkownika

0

Witam, pewnie banalne pytanie, no ale dla poczatkujacego to male wyzwanie... jak uzyskac nastepujacy efekt:
stworzylem sobie np. klase "Pacjent", nastepnie chce wywolac ta klase automatycznie, tzn. po wpisaniu danych przez uzytkownika nazwa nowotworzonej klasy wykorzysta wprowadzone dane (od Scanner), np.

     String name;
     System.out.println("Enter your name");
     name = keyboard.next();

i teraz ten String chcialbym wykorzystac jako nazwa nowotworzonej klasy, czyli:

     Pacjent name = new Pacjent();

oczywiscie zdaje sobie sprawe, ze powyzszy zapis jest bledny - chce tylko pokazac moj kierunek.

2

@Jurij80: to wygląda na problem X/Y.
Co chcesz osiągnąć?

0

@Aleksander32:

Aleksander32 napisał(a):

@Jurij80: to wygląda na problem X/Y.

Co chcesz osiągnąć?

Zgadzam się, pachnie jak X/Y

A nie jest rozwiązaniem (by może źle postawionego problemu)

Map<String,Pacjent>
0

Jesli dobrze rozumiem to chodzi ci o nazwę OBIEKTU i z żadną klasą nie ma to nic wspólnego. Otóż pytanie nie ma sensu, jeśli zastanowisz się 3 sekundy. No bo JAK potem chcesz wykorzystać taki obiekt? Przecież nigdzie w kodzie nie znałbyś nazwy tej zmiennej xD Więc co by ci to dało? Możesz użyć Map<String,Pacjent> do trzymania pacjentów po nazwie albo mieć name w klasie Pacjent i trzymać sobie listę pacjentów...

0

Cel:
np. uzytkownik wprowadza nazwisko "surnmane = Kowalski", potem prosze o wprowadzenie imienia, "name = Jan", nastepnie nazwisko lacze z imieniem -

String surnameName = surname.concat(name)

w ten sposob uzyskuje oryginalna nazwe klasy "kowalskiJan" i tego Stringa chcialbym uzyc jako nazwe klasy, czyli:

Patient kowalskiJan = new Patient();

oczywiscie chodzi mi o to, aby system automatycznie przypisal tego Stringa jako nowa klase, a nie jak wyzej, czyli cos w tym stylu (oczywiscie wiem, ze to nie zadziala - to tylko logiczny przyklad):

Patient surnameName = new Patient();

0

Czyli

  • Nie chodzi o nazwę klasy tylko nazwę obiektu
  • Użyj Mapy
0

@Jurij80 no dobra załóżmy na chwilę że da się tak zrobić, pokaż mi teraz jak chciałbyś UŻYĆ w kodzie takiej zmiennej. Pokaż mi kawałek kodu który potem coś z nia robi. Dla wyjaśnienia, załóżmy że mamy kod:

String surnameName = surname.concat(name)
/** magic
załóżmy że magicznie robie tutaj trik i jeśli surnameName to np. "AlaMakota" to wykona się
Pacjent AlaMakota = new Pacjent();
**/

// A co tutaj chcesz mieć?

Bardzo ciekawi mnie jak chcesz coś z tą zmienną zrobić, skoro nie znasz jej nazwy i nie masz jak napisać kodu który się do niej odwołuje. Czekam z niecierpliwością.
Bo czuje ze jakbym ci powiedział jak zrobić to o co pytasz (zakładając że by się dało) to zaraz zrobisz drugi wątek jak znaleźć zmienną na podstawie jej nazwy? xD

0

Obiekty które tworzysz mogą mieć "wnętrzności". Taka klasa Pacjent moze wygladac tak:

class Pacjent {
 private final String firstname;
 private final String lastname;
 
  Pacjent(String firstname, String lastname) {
    this.firstname = firstname;
    this.lastname = lastname;
  }  
}

i potem jak se wczytasz te imiona i nazwiska od pani Grazynki to uzywasz:

final String firstname = "Grazynka"; // to pobrane skądś tam 
final String lastname = "Kowalska"; // to też
// czyli tak na prawde u Ciebie  firstname = keyboard.next(); i lastname = keyboard.next();

final Pacjent pacjent = new Pacjent(firstname, lastname); // i tutaj masz obiekt pacjent, z polami wypelnionymi wartosciami Grazynka Kowalska

// potem możesz sobie te imie wyciągać:
pacjent.getFirstname(); // oczywiście wymaga utworzenia metody getFirstname() w klasie Pacjent

Twój system ma działać niezależnie od imienia pacjenta. Nie ma takich czarów, żeby nazwa zmiennej była różna za każdym razem, nawet Springowe magiczne sztuczki tego nie ogarną :| A czarów takich zapewne nie ma, bo zupełnie nie jest to nikomu do niczego potrzebne

Wyżej proponują użycie mapy ale wydaje mi sie, że to jakiś fakap mocny i nie o to chodzi w Twoim problemie xd

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