Hack Bulgaria
github.com/HackBulgaria
параметризирани типове
пишат се с малка буква
съдържат стойност
пишат се с главна буква
съдържат референция
Object n;
n = 5;
System.out.println(n);
n = "Kamen";
System.out.println(n);
n = 'a';
System.out.println(n);
5
Kamen
a
Object a;
Object b;
a = 5;
b = 6;
System.out.println(a + b);
// Exception:
// The operator + is undefined for
// the argument type(s) java.lang.Object
Не можем да ползваме оператори
Компилатора не ни помага.
Object a;
Object b;
a = 5;
b = 6;
System.out.println((int)a + (int)b);
Object a;
Object b;
a = 5;
b = 6;
System.out.println((char)a + (char)b);
// Exception:
// java.lang.Integer cannot be cast
// to java.lang.Character
Object a = "Hello";
Object b = "Java";
System.out.println(a);
System.out.println(b);
Object a = "Hello";
Object b = "Java";
System.out.println(a + b); // ?
Object a = "Hello";
Object b = "Java";
System.out.println((String) a + b); // ?
public class IntegerVector{
private int[] data;
private int capacity = 10;
private int size = 0;
public Vector(){ data = new int[capacity];}
public int size(){ return size; }
public int get(int i){ return data[i]; }
public void set(int i, int el){ data[i] = el; }
public void add(int el) { ... }
public void remove(int i){ ... }
public void insert(int i, int el){ ... }
private void resize(){ ... }
}
public class ObjectVector{
private Object[] data;
private int capacity = 10;
private int size = 0;
public Vector(){ data = new Object[capacity];}
public int size(){ return size; }
public Object get(int i){ return data[i]; }
public void set(int i, Object el){ data[i] = el; }
public void add(Object el) { ... }
public void remove(int i){ ... }
public void insert(int i, Object el){ ... }
private void resize(){ ... }
}
ObjectVector ov = new ObjectVector();
ov.add(5);
ov.add("Kamen");
ov.add('a');
System.out.println(ov);
5 Kamen a
public static int sum(ObjectVector ov){
int sum = 0;
for(int i=0;i<ov.size();i++){
sum += (int)ov.get(i);
}
return sum;
}
Exception:
java.lang.String cannot be cast to
java.lang.Integer
По-удобно е да направим вектора така, че да съдържа един тип данни, но този тип да се задава при създаването му.
Vector<Integer> numbers = new Vector<Integer>();
Vector<String> names = new Vector<String>();
Vector<Person> group = new Vector<Person>();
public class Box{
private int data;
public Box(int data){
set(data);
}
public int get(){ return data; }
public void set(int data){ this.data = data; }
}
public class Box<T>{
private T data;
public Box(T data){
set(data);
}
public T get(){ return data; }
public void set(T data){ this.data = data; }
}
Box<Integer> b = new Box<Integer>(5);
System.out.println(b.get());
Box<Person> p;
p = new Box<Person>(new Person("Kamen"));
System.out.println(p.get());
5
Kamen
public class Vector<T>{
private T[] data;
private int capacity = 10;
private int size = 0;
public Vector() {
data = (T[]) new Object[capacity];
}
// ...
public T get(int index){
return data[index];
}
}
public class Vector<T>{
private Object[] data;
private int capacity = 10;
private int size = 0;
public Vector() {
data = new Object[capacity];
}
// ...
public T get(int index){
return (T)data[index];
}
}
By Hack Bulgaria