Tartalomjegyzék

< Java

Java specialitások

Osztályok mezői, metódusainak kiíratása

A Java nyelven létezik egy Class osztály. Ezzel lekérdezhetők egy osztály metódusai, konstruktorai, mezői stb.

osztaly.java
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.io.*;
 
class  ref
{
 
        public static void main(String[] args)
        {
                try {
                        // Megadjuk melyik osztályra vagyunk kíváncsiak 
                        Class cl = Class.forName("java.lang.Thread");
 
                        // getDeclaredFields() a konstruktorok lekérdezése
                        Constructor cnst[] = cl.getConstructors();
 
                        // getFields() az osztály deklarált mezőit adja vissza
                        Field fld[] = cl.getDeclaredFields();
 
                        // getMethods() az osztály deklarált metódusait adja vissza
                        Method mtd[] = cl.getMethods();
                        System.out.println("Az osztály konstruktorai");
 
                        for (int i = 0; i < cnst.length; i++) {
                                System.out.println(cnst[i].getName());
                        }
 
                        System.out.println("A mezők nevei");
 
                        for (int i = 0; i < fld.length; i++) {
                                System.out.println(fld[i].getName());
                        }
 
                        System.out.println("Metódusok nevei");
 
                        for (int i = 0; i < mtd.length; i++) {
                                System.out.println(mtd[i].getName());
                        }
 
                } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                }
 
                try {
                        System.in.read();
                } catch(Exception e) {}
        }
}
Program.cs
using System;
using System.Reflection;
 
class Program
{
	static void Main()
	{
		Console.WriteLine("Egy objektumon milyen metodusok hasznalhatok");
 
		Object obj = new Object();
		Type t = obj.GetType();		
 
		foreach (MethodInfo mi in t.GetMethods()) 
			Console.WriteLine(mi.Name);		
	}
}

Linkek

Dinamikus adatszerkezetek

A teljesség igénye nélkül:

Statikus importálás

Statikus importálás esetén nem szükséges újból és újból beírni egy osztály nevét. Elég a mező vagy metódus nevét.

Program01.java
import static java.lang.Math.PI;
import static java.lang.Math.pow;
class Program01
{
	public static double gombTerfogat(double sugar){
		return 4*PI*pow(sugar,2);
	}
	public static void main(String args[])
	{
		System.out.println(gombTerfogat(30));
	}
}

Az összes metódus importálható egyszerre:

import static java.lang.Math.*;

A System osztály:

Program01.java
import static java.lang.Math.PI;
import static java.lang.Math.pow;
import static java.lang.System.out;
class Program01
{
	public static double gombTerfogat(double sugar){
		return 4*PI*pow(sugar,2);
	}
	public static void main(String args[])
	{
		out.println(gombTerfogat(30));
	}
}

A math csomag

Olyan számváltozókat hozhatunk létre velük amelyek sosem tudnak túlcsordulni.

Osztályok:

Program.java
import java.math.BigInteger;
 
class Program
{
	public static void main(String args[])
	{
		BigInteger a  = new BigInteger("30");		
		System.out.println(a.intValue() * 2);
	}
}

Faktoriális nagy számokkal

Program01.java
import java.math.BigInteger;
class Program01
{
	private static BigInteger fact(int n){
		BigInteger bd = null;
		if(n==0){			
			bd = new BigInteger("1");
		}else{
			bd = new BigInteger("1");
			for(int i=1;i<=n;i++){
				bd = bd.multiply(BigInteger.valueOf(i));
			}
		}
		return bd;
	}
 
	public static void main(String[] args)
	{		
		System.out.println(fact(1000));
	}
}

A sztringek

A Java nyelvben a String osztály implementálja a következő interfészeket:

Így sokszor String típus helyett az API dokumentációban CharSequence látható.

Linkek