Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
public enum MyJava5Enum {
READ,WRITE,READ_WRITE;
}
// Decompiled by DJ v3.6.6.79 Copyright 2004 Atanas Neshkov Date: 05.04.2005 15:26:52
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name: MyJava5Enum.java
package de.tutorials;
public class MyJava5Enum extends Enum
{
private MyJava5Enum(String s, int i)
{
super(s, i);
}
public static final MyJava5Enum[] values()
{
MyJava5Enum amyjava5enum[];
int i;
MyJava5Enum amyjava5enum1[];
System.arraycopy(amyjava5enum = ENUM$VALUES, 0, amyjava5enum1 = new MyJava5Enum[i = amyjava5enum.length], 0, i);
return amyjava5enum1;
}
public static final MyJava5Enum valueOf(String s)
{
MyJava5Enum amyjava5enum[];
MyJava5Enum myjava5enum;
for(int i = (amyjava5enum = ENUM$VALUES).length; --i >= 0;)
if(s.equals((myjava5enum = amyjava5enum[i]).name()))
return myjava5enum;
throw new IllegalArgumentException(s);
}
public static final MyJava5Enum READ;
public static final MyJava5Enum WRITE;
public static final MyJava5Enum READ_WRITE;
private static final MyJava5Enum ENUM$VALUES[];
static
{
READ = new MyJava5Enum("READ", 0);
WRITE = new MyJava5Enum("WRITE", 1);
READ_WRITE = new MyJava5Enum("READ_WRITE", 2);
ENUM$VALUES = (new MyJava5Enum[] {
READ, WRITE, READ_WRITE
});
}
}
public class Person {
private String name;
private int alter;
private final gewicht;
private Person(String name, int alter, final gewicht) {
this.name = name;
this.alter = alter;
this.gewicht = gewicht;
}
public String getName() {
return name;
}
//...usw.
}
Wie sähe das dann für diese Klasse z.B. aus?:
/**
*
*/
package de.tutorials;
/**
* @author Tom
*
*/
public class BadClass {
public final static int A = 0x0010;
public final static int B = 0x0001;
/**
* @param args
*/
public static void main(String[] args) {
doSomething(A);
doSomething(B);
/*
* Benutzer können BELIEBIGE Werte eintragen die zu unvorhersehbarem
* Programmverhalten und zu sehr schlecht wartbaren Code führen können
*/
doSomething(20101905);
}
/**
*
* @param i
*/
private static void doSomething(int i) {
if ((i & A) == A) {
System.out.print("A ");
}
if ((i & B) == B) {
System.out.print(" B");
}
System.out.println();
}
}
/**
*
*/
package de.tutorials;
/**
* @author Tom
*
*/
public class GoodClass {
/**
* @param args
*/
public static void main(String[] args) {
doSomething(Constant.A);
doSomething(Constant.B);
doSomething(Constant.C);
doSomething("FOO"); //Compile time error ;-)
}
private static void doSomething(Constant c) {
switch (c) {
case A:
System.out.println("A");
case B:
System.out.println("B");
case C:
System.out.println("C");
}
}
public static enum Constant {
A("A"), B("B"), C("C");
private final String value;
private Constant(String value) {
this.value = value;
}
public String getValue() {
return value;
}
@Override
public String toString() {
return this.value;
}
}
}
Siehe selbst:Annotation:
Es wäre also theoretisch denkbar, z.B. die "web.xml" zur Annotation zu machen. Wie muß denn eine Annotation "innen" aussehen? Methoden, Konstanten?
/**
*
*/
package de.tutorials;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.annotation.*;
/**
* @author Tom
*
*/
@Servlet(name="annotatedServlet" path="/annotatedServlet" description="My Annotated Servlet")
public class AnnotatedServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(arg0, arg1);
}
@Override
protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(arg0, arg1);
}
}