App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Object Member<T> Klasse
- Ersteller Gruß Thomas!
- Erstellt am
Gruß Thomas!
Grand Admiral Special
- Mitglied seit
- 27.03.2008
- Beiträge
- 2.027
- Renomée
- 118
- Standort
- Bayreuth
- Aktuelle Projekte
- Virtual Prairie, Docking@Home
- Lieblingsprojekt
- QMC@Home, Virtual Prairie
- Meine Systeme
- FX8120
- BOINC-Statistiken
- Mein Laptop
- Thinkpad T495 / 40GB RAM
- Prozessor
- AMD Ryzen 9 3900X
- Mainboard
- Gigabyte X570 Aorus Pro
- Kühlung
- AMD Wraith Prism
- Speicher
- 48GB Corsair Vengeance LPX DDR4 3200MHz
- Grafikprozessor
- AMD RX480 8GB
- Gehäuse
- Lian Li PC-A05NB
- Betriebssystem
- Windows 10
- Webbrowser
- Google Chrome
- Verschiedenes
- http://www.sysprofile.de/id46649
- Schau Dir das System auf sysprofile.de an
Hallo allerseits . 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?)
Usage-Beispiel:
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.
.
EDIT :
.
War eigentlich so gemeint.
PHP:
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:
PHP:
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.
.
EDIT :
.
PHP:
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
}
}
War eigentlich so gemeint.
Zuletzt bearbeitet:
Cherry
Grand Admiral Special
- Mitglied seit
- 13.12.2001
- Beiträge
- 2.158
- Renomée
- 43
- Standort
- Ilmenau
- Mein Laptop
- Dell Latitude E6510 / 15,6" 1920*1080 / i5-560M / 8 Gig RAM
- Prozessor
- I5-4570
- Mainboard
- AsRock H87 Pro4
- Kühlung
- CPU: Noctua NH-U12P@650 rpm - Case-Front: 2x FractalDesign 120@750 rpm / Back: Noctua NF-P12@650 rpm
- Speicher
- 2*4 GB Crucial Ballistix Sport DDR3-1600 CL9 @ 800 MHz 9.0/9/9/24/1T
- Grafikprozessor
- Powercolor R9 290 PCS+
- Display
- 2x LG 24EB23PY-W 1920x1200
- SSD
- Crucial M550 512 GB
- HDD
- 4x Toshiba DT01ACA 3 TB @ Raid 5
- Optisches Laufwerk
- LG GH22NS50
- Soundkarte
- onboard (Realtek ALC892)
- Gehäuse
- Fractal Design Define R3
- Netzteil
- Cougar GX-S450
- Tastatur
- Logitech K750
- Maus
- Logitech MX Master
- Betriebssystem
- Windows Server 2008 R2 - EnterpriseEdition
- Internetanbindung
- ▼100MBit ▲40MBit
Also entweder verstehe ich deine Frage nicht, oder machst dir Gedanken um völlige Randthemen.
Oder andersrum: ich sehe nicht, was an deiner Klasse keinen Sinn machen sollte. Ich meine, genau für solche Fälle gibts doch Generics. Und deine Konstanten public zu machen sehe ich jetzt auch nicht so kritisch, das wird doch an unzählichen Stellen in der Java-API genauso praktiziert.
Cherry
Oder andersrum: ich sehe nicht, was an deiner Klasse keinen Sinn machen sollte. Ich meine, genau für solche Fälle gibts doch Generics. Und deine Konstanten public zu machen sehe ich jetzt auch nicht so kritisch, das wird doch an unzählichen Stellen in der Java-API genauso praktiziert.
Cherry
Lynxeye
Admiral Special
- Mitglied seit
- 26.10.2007
- Beiträge
- 1.107
- Renomée
- 60
- Standort
- Sachsen
- Mein Laptop
- Lifebook T1010
- Prozessor
- AMD FX 8150
- Mainboard
- Gigabyte GA-970A-UD3
- Kühlung
- Zalman Reserator 1 Plus
- Speicher
- 4x8GB DDR3-1600 G.Skill Ripjaws
- Grafikprozessor
- ASUS ENGTX 260
- Display
- 19" AOC LM928 (1280x1024), V7 21" (1680x1050)
- HDD
- Crucial M4 128GB, 500GB WD Caviar 24/7 Edition
- Optisches Laufwerk
- DVD Multibrenner LG GSA-4167B
- Soundkarte
- Creative Audigy 2 ZS
- Gehäuse
- Amacrox Spidertower
- Netzteil
- Enermax Liberty 500W
- Betriebssystem
- Fedora 17
- Webbrowser
- Firefox
- Verschiedenes
- komplett Silent durch passive Wasserkühlug
Datenkapselung
Getter und Setter sind nie generisch und gehören logisch ganz klar zu einer bestimmten Klasse. Wenn deine Klassen alle Attribute per Getter/Setter exportieren sind es Strukturen und erfüllen damit nicht die Kriterien der objektorientierten Programmierung.
Wenn du wirklich eine Menge Code durch generische Getter/Setter sparen kannst, hast du zu viele davon und solltest dir Gedanken über das Design deines Programms machen, nicht wie du Schreibaufwand sparen kannst.
Getter und Setter sind nie generisch und gehören logisch ganz klar zu einer bestimmten Klasse. Wenn deine Klassen alle Attribute per Getter/Setter exportieren sind es Strukturen und erfüllen damit nicht die Kriterien der objektorientierten Programmierung.
Wenn du wirklich eine Menge Code durch generische Getter/Setter sparen kannst, hast du zu viele davon und solltest dir Gedanken über das Design deines Programms machen, nicht wie du Schreibaufwand sparen kannst.
andr_gin
Grand Admiral Special
- Mitglied seit
- 12.06.2003
- Beiträge
- 3.052
- Renomée
- 24
- Standort
- St. Pölten (60km westlich von Wien)
- Prozessor
- Core 2 Quad Q6600 @2,7GHz
- Mainboard
- ASUS P5B Deluxe
- Kühlung
- Zalman CNPS 9700 LED
- Speicher
- 2x1GB DDR2 800
- Grafikprozessor
- Connect3D X1800XT 256MB
- Display
- Hanns.G 27,5"
- HDD
- Samsung 200GB SATA System, 8x Samsung 500GB RAID 50 (RAID5 über den Controller, RAID0 über Windows
- Optisches Laufwerk
- Samsung DVD-Brenner
- Soundkarte
- onboard
- Gehäuse
- A+ XClio2
- Netzteil
- Xilence 550Watt
- Betriebssystem
- Vista x64 SP1
- Webbrowser
- Mozilla Firefox 3
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
Ich glaube du hast nicht ganz verstanden, warum es Access Modifier wie private und public gibt. Das Ganze hat den Sinn, dass du jemandem, der die Klasse nicht kennt klar macht, welche Variablen er direkt ändern kann und welche nicht.
1.) Dir selbst in der selben Methode den Zugriff zu entziehen macht absolut keinen Sinn. Wenn du in deiner Methode nicht auf eine Variable schreiben willst, dann tu es einfach nicht.
2.) Der Sinn an den Access Modifiern ist, dass dir der Compiler schon zur Laufzeit sagt, dass das, was du da machst, eventuell zu einem Absturz führen kann, weil Variablen direkt änderst, die dafür nicht vorgesehen sind und er blockiert das Ganze und du musst nicht erst zur Laufzeit feststellen, dass das so nicht funktioniert. Wenn du einfach eine Exception wirfst, dann stellst du das auch erst zur Laufzeit fest und wenn der Codeteil nicht regelmäßig durchlaufen wird, wirst du das gar nicht so leicht feststellen. Man sollte seinen Programmierstil so wählen, dass möglichst viele Fehler schon vom Compiler mitgeteilt bekommt.
Gruß Thomas!
Grand Admiral Special
- Mitglied seit
- 27.03.2008
- Beiträge
- 2.027
- Renomée
- 118
- Standort
- Bayreuth
- Aktuelle Projekte
- Virtual Prairie, Docking@Home
- Lieblingsprojekt
- QMC@Home, Virtual Prairie
- Meine Systeme
- FX8120
- BOINC-Statistiken
- Mein Laptop
- Thinkpad T495 / 40GB RAM
- Prozessor
- AMD Ryzen 9 3900X
- Mainboard
- Gigabyte X570 Aorus Pro
- Kühlung
- AMD Wraith Prism
- Speicher
- 48GB Corsair Vengeance LPX DDR4 3200MHz
- Grafikprozessor
- AMD RX480 8GB
- Gehäuse
- Lian Li PC-A05NB
- Betriebssystem
- Windows 10
- Webbrowser
- Google Chrome
- Verschiedenes
- http://www.sysprofile.de/id46649
- Schau Dir das System auf sysprofile.de an
Das war ja nur eine theoretische Überlegung und mir war schon irgendwie bischen klar dass das nicht so toll sein kann.
Hallo,
ich finde es nicht dumm Daten "read-only" setzten zu können.
Siehe auch http://en.wikipedia.org/wiki/Immutable_object
Allerdings ist dein Objekt auch nicht wirklich gut geschützt, denn wenn du dir die Referenz mit get holst, können die Daten anschließen unbeabsichtigt verändert werden.
Gruß,
Hannnibal
ich finde es nicht dumm Daten "read-only" setzten zu können.
Siehe auch http://en.wikipedia.org/wiki/Immutable_object
Allerdings ist dein Objekt auch nicht wirklich gut geschützt, denn wenn du dir die Referenz mit get holst, können die Daten anschließen unbeabsichtigt verändert werden.
Gruß,
Hannnibal
Ähnliche Themen
- Antworten
- 17
- Aufrufe
- 9K
- Antworten
- 3
- Aufrufe
- 7K
- Antworten
- 12
- Aufrufe
- 4K
- Antworten
- 27
- Aufrufe
- 4K