java中的conf是什么?JAVA 类名.class是什么意思
今天给各位分享java中的conf是什么的知识,其中也会对JAVA 类名.class是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
JAVA 类名.class是什么意思
ConfMgr.class是获取ConfMgr的class对象,类型类指的是代表一个类型的类,因为一切皆是对象,几种获取class对象的方法:
1,所有的引用数据类型(类-类型)的类名、基本数据类型都可以通过.class方式获取其 Class对象。
对于基本数据类型的封装类还可以通过.TYPE的方式获取其 Class对象,但要注意。TYPE实际上获取的封装类对应的基本类型的 Class对象的引用。
那么你可以判断出int.class==Integer.TYPE返回 true,int.class==Integer.class返回 false!通过这种方式不会初始化静态域,使用.class、.TYPE的方式获取 Class对象叫做类的字面常量;
2,Class的 forName(String name)传入一个类的完整类路径也可以获得 Class对象。
由于使用的是字符串,必须强制转换才可以获取泛型的Class<T>的 Class对象,并且必须获取这个方法可能抛出的ClassNotFoundException异常。这种方法可以初始化静态域。
3,还可通过类的对象实例下的getClass()方法来获取Class对象,即实例名getClass()
扩展资料
在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。
每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。
当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类。
通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中。
通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用。
参考资料:Java-百度百科
在java中如何读取properties文件
最常用读取properties文件的方法
InputStream in= getClass().getResourceAsStream("资源Name");这种方式要求properties文件和当前类在同一文件夹下面。如果在不同的包中,必须使用:
InputStream ins= this.getClass().getResourceAsStream("/cn/zhao/properties/testPropertiesPath2.properties");
Java中获取路径方法
获取路径的一个简单实现
反射方式获取properties文件的三种方式
1反射方式获取properties文件最常用方法以及思考:
Java读取properties文件的方法比较多,网上最多的文章是"Java读取properties文件的六种方法",但在Java应用中,最常用还是通过java.lang.Class类的getResourceAsStream(String name)方法来实现,但我见到众多读取properties文件的代码中,都会这么干:
InputStream in= getClass().getResourceAsStream("资源Name");
这里面有个问题,就是getClass()调用的时候默认省略了this!我们都知道,this是不能在static(静态)方法或者static块中使用的,原因是static类型的方法或者代码块是属于类本身的,不属于某个对象,而this本身就代表当前对象,而静态方法或者块调用的时候是不用初始化对象的。
问题是:假如我不想让某个类有对象,那么我会将此类的默认构造方法设为私有,当然也不会写别的共有的构造方法。并且我这个类是工具类,都是静态的方法和变量,我要在静态块或者静态方法中获取properties文件,这个方法就行不通了。
那怎么办呢?其实这个类就不是这么用的,他仅仅是需要获取一个Class对象就可以了,那还不容易啊--
取所有类的父类Object,用Object.class难道不比你的用你正在写类自身方便安全吗?呵呵,下面给出一个例子,以方便交流。
import java.util.Properties;
import java.io.InputStream;
import java.io.IOException;
/**
*读取Properties文件的例子
* File: TestProperties.java
* User: leizhimin
* Date: 2008-2-15 18:38:40
*/
public final class TestProperties{
private static String param1;
private static String param2;
static{
Properties prop= new Properties();
InputStream in= Object. class.getResourceAsStream("/test.properties");
try{
prop.load(in);
param1= prop.getProperty("initYears1").trim();
param2= prop.getProperty("initYears2").trim();
} catch(IOException e){
e.printStackTrace();
}
}
/**
*私有构造方法,不需要创建对象
*/
private TestProperties(){
}
public static String getParam1(){
return param1;
}
public static String getParam2(){
return param2;
}
public static void main(String args[]){
System.out.println(getParam1());
System.out.println(getParam2());
}
}
运行结果:
151
152
当然,把Object.class换成int.class照样行,呵呵,大家可以试试。
另外,如果是static方法或块中读取Properties文件,还有一种最保险的方法,就是这个类的本身名字来直接获取Class对象,比如本例中可写成TestProperties.class,这样做是最保险的方法
2获取路径的方式:
File fileB= new File( this.getClass().getResource("").getPath());
System. out.println("fileB path:"+ fileB);
2.2获取当前类所在的工程名:
System. out.println("user.dir path:"+ System. getProperty("user.dir"))<span style="background-color: white;">3获取路径的一个简单的Java实现</span>
/**
*获取项目的相对路径下文件的绝对路径
*
*@param parentDir
*目标文件的父目录,例如说,工程的目录下,有lib与bin和conf目录,那么程序运行于lib or
* bin,那么需要的配置文件却是conf里面,则需要找到该配置文件的绝对路径
*@param fileName
*文件名
*@return一个绝对路径
*/
public static String getPath(String parentDir, String fileName){
String path= null;
String userdir= System.getProperty("user.dir");
String userdirName= new File(userdir).getName();
if(userdirName.equalsIgnoreCase("lib")
|| userdirName.equalsIgnoreCase("bin")){
File newf= new File(userdir);
File newp= new File(newf.getParent());
if(fileName.trim().equals("")){
path= newp.getPath()+ File.separator+ parentDir;
} else{
path= newp.getPath()+ File.separator+ parentDir
+ File.separator+ fileName;
}
} else{
if(fileName.trim().equals("")){
path= userdir+ File.separator+ parentDir;
} else{
path= userdir+ File.separator+ parentDir+ File.separator
+ fileName;
}
}
return path;
}
4利用反射的方式获取路径:
InputStream ips1= Enumeration. class.getClassLoader().getResourceAsStream("cn/zhao/enumStudy/testPropertiesPath1.properties");
InputStream ips2= Enumeration. class.getResourceAsStream("testPropertiesPath1.properties");
InputStream ips3= Enumeration. class.getResourceAsStream("properties/testPropertiesPath2.properties");
java编程中Properties类的具体作用和使用!
如果不熟悉 java.util.Properties类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的。(如清单 1所示)。最近更新的java.util.Properties类现在提供了一种为程序装载和存储设置的更容易的方法: loadFromXML(InputStreamis)和 storeToXML(OutputStream os, String comment)方法。
一下是详细的说明,希望能给大家带来帮助。
清单 1.一组属性示例
foo=bar
fu=baz
将清单 1装载到 Properties对象中后,您就可以找到两个键( foo和 fu)和两个值( foo的 bar和 fu的baz)了。这个类支持带\u的嵌入 Unicode字符串,但是这里重要的是每一项内容都当作 String。
清单2显示了如何装载属性文件并列出它当前的一组键和值。只需传递这个文件的 InputStream给 load()方法,就会将每一个键-值对添加到 Properties实例中。然后用 list()列出所有属性或者用 getProperty()获取单独的属性。
清单 2.装载属性
import java.util.*;
import java.io.*;
public class LoadSample{
public static void main(String args[]) throws Exception{
Properties prop= new Properties();
FileInputStream fis=
new FileInputStream("sample.properties");
prop.load(fis);
prop.list(System.out);
System.out.println("\nThe foo property:"+
prop.getProperty("foo"));
}
}
运行 LoadSample程序生成如清单 3所示的输出。注意 list()方法的输出中键-值对的顺序与它们在输入文件中的顺序不一样。Properties类在一个散列表(hashtable,事实上是一个 Hashtable子类)中储存一组键-值对,所以不能保证顺序。
清单 3. LoadSample的输出
-- listing properties--
fu=baz
foo=bar
The foo property: bar
XML属性文件
这里没有什么新内容。 Properties类总是这样工作的。不过,新的地方是从一个 XML文件中装载一组属性。它的 DTD如清单 4所示。
清单 4.属性 DTD
<?xml version="1.0" encoding="UTF-8"?>
<!-- DTD for properties-->
<!ELEMENT properties( comment?, entry*)>
<!ATTLIST properties version CDATA#FIXED"1.0">
<!ELEMENT comment(#PCDATA)>
<!ELEMENT entry(#PCDATA)>
<!ATTLIST entry key CDATA#REQUIRED>
如果不想细读 XML DTD,那么可以告诉您它其实就是说在外围<properties>标签中包装的是一个<comment>标签,后面是任意数量的<entry>标签。对每一个<entry>标签,有一个键属性,输入的内容就是它的值。清单 5显示了清单 1中的属性文件的 XML版本是什么样子的。
清单 5. XML版本的属性文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM" http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Hi</comment>
<entry key="foo">bar</entry>
<entry key="fu">baz</entry>
</properties>
如果清单 6所示,读取 XML版本的 Properties文件与读取老格式的文件没什么不同。
清单 6.读取 XML Properties文件
import java.util.*;
import java.io.*;
public class LoadSampleXML{
public static void main(String args[]) throws Exception{
Properties prop= new Properties();
FileInputStream fis=
new FileInputStream("sampleprops.xml");
prop.loadFromXML(fis);
prop.list(System.out);
System.out.println("\nThe foo property:"+
prop.getProperty("foo"));
}
}
关于资源绑定的说明
虽然 java.util.Properties类现在除了支持键-值对,还支持属性文件作为 XML文件,不幸的是,没有内置的选项可以将ResourceBundle作为一个 XML文件处理。是的, PropertyResourceBundle不使用 Properties对象来装载绑定,不过装载方法的使用是硬编码到类中的,而不使用较新的 loadFromXML()方法。
运行清单 6中的程序产生与原来的程序相同的输出,如清单 2所示。
保存 XML属性
新的 Properties还有一个功能是将属性存储到 XML格式的文件中。虽然 store()方法仍然会创建一个类似清单 1所示的文件,但是现在可以用新的 storeToXML()方法创建如清单 5所示的文件。只要传递一个 OutputStream和一个用于注释的 String就可以了。清单 7展示了新的 storeToXML()方法。
清单 7.将 Properties存储为 XML文件
import java.util.*;
import java.io.*;
public class StoreXML{
public static void main(String args[]) throws Exception{
Properties prop= new Properties();
prop.setProperty("one-two","buckle my shoe");
prop.setProperty("three-four","shut the door");
prop.setProperty("five-six","pick up sticks");
prop.setProperty("seven-eight","lay them straight");
prop.setProperty("nine-ten","a big, fat hen");
FileOutputStream fos=
new FileOutputStream("rhyme.xml");
prop.storeToXML(fos,"Rhyme");
fos.close();
}
}
运行清单 7中的程序产生的输出如清单 8所示。
清单 8.存储的 XML文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM" http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Rhyme</comment>
<entry key="seven-eight">lay them straight</entry>
<entry key="five-six">pick up sticks</entry>
<entry key="nine-ten">a big, fat hen</entry>
<entry key="three-four">shut the door</entry>
<entry key="one-two">buckle my shoe</entry>
</properties>
在这里改了一个例子:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
*实现properties文件的读取
*@author haoxuewu
*/
public class Test{
public static void main(String[] args){
try{
long start= System.currentTimeMillis();
InputStream is= new FileInputStream("conf.properties");
Properties p= new Properties();
p.load(is);
is.close();
System.out.println("SIZE:"+ p.size());
System.out.println("homepage:"+ p.getProperty("homepage"));
System.out.println("author:"+ p.getProperty("author"));
System.out.println("school:"+ p.getProperty("school"));
long end= System.currentTimeMillis();
System.out.println("Cost:"+(end- start));
} catch(IOException ioe){
ioe.printStackTrace();
}
}
}
conf.properties
# Configuration file
homepage= http://www.blogjava.net/haoxuewu
author= bbflyerwww
school= jilinjianzhugongchengxueyuan
Result
SIZE:3
homepage: http://www.blogjava.net/haoxuewu
author: bbflyerwww
school: jilinjianzhugongchengxueyuan
好了,文章到此结束,希望可以帮助到大家。