Object Member<T> Klasse

s4ke

Bekanntes Mitglied
Hallo allerseits, seit langem mal wieder was von mir und gleich ne Frage :p

Was haltet ihr von dieser Klasse? Ich habe mir überlegt, ob es nicht gut wäre eine Klasse zu haben, die die Funktionalität von getter und setter Methode in sich vereinigt und trotzdem Accessrichtlinien zulässt. Ich weiß bloß nicht ob das viel Sinn macht und frage daher mal ob das passt (Normalerweise sind public Variablen ja Tabu, aber Ausnahmen?)

Java:
public class Member<T>
{
    public static final byte MEMBER_WRITE = (0<<1);
    private T obj;
    private final byte fl;
    
    public Member()
    {
        this.obj = null;
        this.fl  = 0;
    }
    
    public Member(byte fl)
    {
        this.obj = null;
        this.fl  = fl;
    }
    
    public Member(T obj)
    {
        this.obj = obj;
        this.fl  = 0;
    }
    
    public Member(T obj, byte fl)
    {
        this.obj = obj;
        this.fl  = fl;
    }
    
    public T get()
    {
        return obj;
    }
    
    public void set(T obj)
    {
        if((fl & ((1 << 0))) != 0)
        {
            this.obj = obj;
        }
        else
        {
            throw new RuntimeException("Member is ReadOnly");
        }
    }
}

Usage-Beispiel:

Java:
public class Foo
{
  public final Member<String> hello = new Member<String>("hello"); //read-only Member
  public final Member<String> hello2 = new Member<String>("hello2",MEMBER_WRITE); //read-write Member
 
   public static void main(String args[])
  {
     Foo foo = new Foo();
     System.out.println(foo.hello.get()); //read funktioniert
     foo.hello.set(""); //Runtime Exception
     System.out.println(foo.hello2.get()); //read funktioniert
     foo.hello2.set(""); //write auch
  }
}

Macht eine solche Klasse Sinn oder sind public Member generell Tabu? Weil ansich spart man sich somit bei vielen gettern und settern massig Code.

P.S.: Die flags sind absichtlich bytes weil ich noch nicht weiß was ich noch an Flags hinzufüge. Im Moment würde ja eine bool-Variable reichen.
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Der sinn soll ja sein, dass du kontrollieren kannst, wer auf deine Member zugreift. UND vor allem auch die Möglichkeit hast nicht plausible Werte abzuweisen.

Wenn du das so machst, dann hast du nix damit gewonnen, da jeder jeden Wert einfügen kann. :bahnhof:

Außerdem wie willst du das Read verhindern in deiner Klasse?? Da müsstest du ReadWrite und ReadOnlyMember machen. Und dann hast du das Problem, dass die eigene Klasse das auch nicht kann -.-

Um das Problem zu beheben brauchst du die in C# möglichen Propteries.

Gruß,


Martin
 
Zuletzt bearbeitet von einem Moderator:

Kevin94

Top Contributor
Du benutz doch gar keine public Variablen, sondern nur Konstanten und ich sehe keinen Grund dafür Konstanten nicht public zu machen.
 

bERt0r

Top Contributor
Und noch eine Anmerkung: Stat einem 0/1 byte tuts auch ein boolean.
edit: Und er kontrolliert ja den Zugriff: Jeder kann lesen, aber ob man den Wert überschreiben kann wird bei der Erstellung des Objekts im Konstruktor bestimmt.
 
Zuletzt bearbeitet:

s4ke

Bekanntes Mitglied
Und noch eine Anmerkung: Stat einem 0/1 byte tuts auch ein boolean.

Ich hab schon geschrieben dass ich das weiß, aber vielleicht kommen noch ein paar Flags hinzu.
Und noch was: Die Klasse soll nicht die normale Art von Member ersetzen sondern nur Variablen, die auch nach außen hin benötigt werden verwalten.

UND vor allem auch die Möglichkeit hast nicht plausible Werte abzuweisen.

Dafür kann man dann ja die Klasse extenden.

Das Ziel der Klasse soll es sein die Properties von C# in ähnlicher Weiße nachzubilden. Dass es im selben Stil geht habe ich ja nicht behauptet und dass die private Member ganz anders deklariert werden müssen ist auch klar.

Ein weiterer Nachteil dieser Art getter und setter zu schreiben ist zudem dass Fehler bei den Zugriffen erst zur Laufzeit erkannt werden können (anhand der RuntimeException).


Java:
public class Foo
{
  public final Member<String> hello = new Member<String>("hello"); //read-only Member
  public final Member<String> hello2 = new Member<String>("hello2",MEMBER_WRITE); //read-write Member
}

public class Bar
{
   public static void main(String args[])
  {
     Foo foo = new Foo();
     System.out.println(foo.hello.get()); //read funktioniert
     foo.hello.set(""); //Runtime Exception
     System.out.println(foo.hello2.get()); //read funktioniert
     foo.hello2.set(""); //write auch
  }
}

So war es eigentlich gemeint.
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Dafür kann man dann ja die Klasse extenden.

Das Ziel der Klasse soll es sein die Properties von C# in ähnlicher Weiße nachzubilden. Dass es im selben Stil geht habe ich ja nicht behauptet und dass die private Member ganz anders deklariert werden müssen ist auch klar.

Ein weiterer Nachteil dieser Art getter und setter zu schreiben ist zudem dass Fehler bei den Zugriffen erst zur Laufzeit erkannt werden können (anhand der RuntimeException).

Ist genau das, was ich sagen will. Du machst hier nix besser oder einfacher. Du shiftest das Problem in eine weitere Klasse.

Es bringt nicht einen Vorteil gegenüber dem deklarieren des Members in der Klasse.

OK während ich das hier schreibe fällt mir höchstens ein, dass es Code für getter und setter entfernt.. -.- Wenn es eine BeanKlasse ist, dann habe ich ehh diese generiert und die getter und setter werden so erzeugt. Außerdem müsste ich Validatoren injecten oder durch ableitung implementieren, was wieder zu massig Klassen führt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
I JSON - cannot deserialize from Object value Java Basics - Anfänger-Themen 16
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
H What is the Life Cycle of an Object Created Within/Outside of a Servlet? Will that item be destroyed after the session ends? Java Basics - Anfänger-Themen 1
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
thobren Object[][] Java Basics - Anfänger-Themen 8
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
B JaxB - Property vom Typ Object und LocalDateTime speichern? Java Basics - Anfänger-Themen 0
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
N extends und super vs new object Java Basics - Anfänger-Themen 4
I JaxB und Klasse "Object" ? Java Basics - Anfänger-Themen 7
D Klassen undefined for the type 'object' Java Basics - Anfänger-Themen 2
B JaxB - speichern vom Typ "Object" Java Basics - Anfänger-Themen 8
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
M this.object in einer parameterlosen Methode verwenden Java Basics - Anfänger-Themen 3
M Java Klasse Object Java Basics - Anfänger-Themen 5
G Java Object value und entity? Java Basics - Anfänger-Themen 2
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
I Object-Oriented Programming, Objekt erzeugen Java Basics - Anfänger-Themen 1
P Zugreifen auf Object[] Java Basics - Anfänger-Themen 4
B if(object== null) abkürzen? Java Basics - Anfänger-Themen 6
A Object to Map Java Basics - Anfänger-Themen 2
D Object in ArrayList ausgeben Java Basics - Anfänger-Themen 24
L Input/Output Datei Object aus resources Java Basics - Anfänger-Themen 1
T HashSet in List-Object Java Basics - Anfänger-Themen 5
H Datentypen for(typ a : b) nur typ Object möglich ? Java Basics - Anfänger-Themen 2
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
T Object zu Char zu String Java Basics - Anfänger-Themen 6
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
F Methoden Object.clone() Java Basics - Anfänger-Themen 1
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
A JavaScript Object Notation einbinden mittels Maven Java Basics - Anfänger-Themen 7
F Unique Object Java Basics - Anfänger-Themen 3
GreyFox Object dynamisch mit werten versehen. Java Basics - Anfänger-Themen 4
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
O Object Java Basics - Anfänger-Themen 4
O nullpointerExce. Gui Object weitergabe Java Basics - Anfänger-Themen 12
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
K Selbst renderndes Object auf null setzen Java Basics - Anfänger-Themen 1
K Methoden Probleme mit LinkedList.remove(object) Java Basics - Anfänger-Themen 1
J Object bestimmter Klasse Java Basics - Anfänger-Themen 3
F Object mit zwei Entities Java Basics - Anfänger-Themen 3
B Map, basic types & Object Java Basics - Anfänger-Themen 5
P Auf Object in Array Methode anwanden Java Basics - Anfänger-Themen 2
S Object Array Length via Konstruktor Java Basics - Anfänger-Themen 5
B Date Object mit Millisekunden Ausgabe Java Basics - Anfänger-Themen 8
V Object in double? Java Basics - Anfänger-Themen 3
B Object in Array nach Prüfung löschen Java Basics - Anfänger-Themen 13
N Object mit String ansprechen Java Basics - Anfänger-Themen 7
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
A If object != null funktioniert nicht Java Basics - Anfänger-Themen 2
B func(Object ....args) korrekt weitergeben Java Basics - Anfänger-Themen 4
M Object people[][] Daten hinzufügen Java Basics - Anfänger-Themen 3
T Input/Output Object Streams Java Basics - Anfänger-Themen 6
T Object[][] to String[][] Java Basics - Anfänger-Themen 8
T Object in Array Java Basics - Anfänger-Themen 3
T HashMap<String,Object> Werte auslesen Java Basics - Anfänger-Themen 5
H Object an methode Java Basics - Anfänger-Themen 4
D Object -> String Java Basics - Anfänger-Themen 6
W Compiler-Fehler "Could not reserve enough space for object heap"... und dann raucht das Programm ab Java Basics - Anfänger-Themen 3
D Datentyp Object Java Basics - Anfänger-Themen 2
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
L Datentypen Object zu double zu int konvertieren Java Basics - Anfänger-Themen 6
M String to Object Java Basics - Anfänger-Themen 15
S Object Initialisierung Java Basics - Anfänger-Themen 7
H Object in einem .jar-File einlesen Java Basics - Anfänger-Themen 3
D Object oder Primitiv Java Basics - Anfänger-Themen 10
E Object in eigene Klasse umwandeln? Java Basics - Anfänger-Themen 7
W Main-method in Object-classes Java Basics - Anfänger-Themen 5
algebraiker TreeMap<Date,Object> navigieren? Java Basics - Anfänger-Themen 24
E Equals-Methode auf Class-Object Java Basics - Anfänger-Themen 17
C Typen aus List<Object[]> ändern Java Basics - Anfänger-Themen 7
C JComboBox setSelectedItem(Object) Problem Java Basics - Anfänger-Themen 5
B Methoden object = this; Java Basics - Anfänger-Themen 4
M Methode von einem Object überschreiben Java Basics - Anfänger-Themen 5
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
M Variablen dynamisch variableninhalt von Object auslesen Java Basics - Anfänger-Themen 4
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
R ArrayList(int index, Object) funktioniert nicht korrekt? Java Basics - Anfänger-Themen 7
C Bereits geöffnetes Object ermitteln Java Basics - Anfänger-Themen 5
N HashMap<String, Object> bei jre4 Java Basics - Anfänger-Themen 3
M object cast auf double Java Basics - Anfänger-Themen 2
K Datentypen Object in 2-dimensionales String Array zurückwandeln Java Basics - Anfänger-Themen 14
D Aus Object auslesen Java Basics - Anfänger-Themen 2
P Java Object das eine HTML Datei repräsentiert Java Basics - Anfänger-Themen 19
C mehrdimensionales Object sortieren Java Basics - Anfänger-Themen 4
T Aus object Array Double Werte ziehen Java Basics - Anfänger-Themen 10
T List.add(Object) führt zu NullPointerException Java Basics - Anfänger-Themen 14
F Wie kann ein Object[] zu Integer[] umwandeln? Java Basics - Anfänger-Themen 6
O Serialisierung: Object abspeichern und aufrufen Java Basics - Anfänger-Themen 6
D Object auf JTextpane / jTextArea casten? Java Basics - Anfänger-Themen 3
Ollek Collections ArrayList Object - Attribut von dem Object vergleichen Java Basics - Anfänger-Themen 7
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
B Object an Server senden, Server antwortet mit objekt? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben