<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FReflection%2FPackage</id>
		<title>Java/Reflection/Package - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FReflection%2FPackage"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Reflection/Package&amp;action=history"/>
		<updated>2026-04-23T07:26:57Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Reflection/Package&amp;diff=6089&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Reflection/Package&amp;diff=6089&amp;oldid=prev"/>
				<updated>2010-06-01T06:02:01Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:02, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Reflection/Package&amp;diff=6088&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Reflection/Package&amp;diff=6088&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Demonstrates how to get declaration information on a Class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
/*&lt;br /&gt;
 *     file: PackageInfoDemo.java&lt;br /&gt;
 *  package: oreilly.hcj.reflection&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
/**  &lt;br /&gt;
 * Demonstrates how to get declaration information on a Class.&lt;br /&gt;
 *&lt;br /&gt;
 * @author &lt;br /&gt;
 * @version $Revision: 1.3 $&lt;br /&gt;
 */&lt;br /&gt;
public class PackageInfoDemo {&lt;br /&gt;
  /** &lt;br /&gt;
   * Demonstration Method.&lt;br /&gt;
   *&lt;br /&gt;
   * @param args Command line arguments.&lt;br /&gt;
   */&lt;br /&gt;
  public static void main(final String[] args) {&lt;br /&gt;
    System.out.println(Object.class.getPackage());&lt;br /&gt;
    System.out.println(Float.class.getPackage());&lt;br /&gt;
    System.out.println(Collection.class.getPackage());&lt;br /&gt;
    System.out.println(int.class.getPackage());&lt;br /&gt;
    System.out.println(String.class.getPackage());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Detect if a package is available ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
public class Main{&lt;br /&gt;
  public static void  main(String args[]) {&lt;br /&gt;
    System.out.println(isAvailable(&amp;quot;javax.swing.JComponent&amp;quot;));&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean isAvailable(String className) {&lt;br /&gt;
    boolean isFound = false;&lt;br /&gt;
    try {&lt;br /&gt;
       Class.forName(className, false, null);&lt;br /&gt;
       isFound = true;&lt;br /&gt;
    }&lt;br /&gt;
    catch (ClassNotFoundException e) {&lt;br /&gt;
       isFound = false;&lt;br /&gt;
    }&lt;br /&gt;
    return isFound;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get all information about a package ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
class PackageInfo {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Package p = Package.getPackage(&amp;quot;java.lang&amp;quot;);&lt;br /&gt;
    System.out.println(&amp;quot;Name = &amp;quot; + p.getName());&lt;br /&gt;
    System.out.println(&amp;quot;Implementation title = &amp;quot; + p.getImplementationTitle());&lt;br /&gt;
    System.out.println(&amp;quot;Implementation vendor = &amp;quot; + p.getImplementationVendor());&lt;br /&gt;
    System.out.println(&amp;quot;Implementation version = &amp;quot; + p.getImplementationVersion());&lt;br /&gt;
    System.out.println(&amp;quot;Specification title = &amp;quot; + p.getSpecificationTitle());&lt;br /&gt;
    System.out.println(&amp;quot;Specification vendor = &amp;quot; + p.getSpecificationVendor());&lt;br /&gt;
    System.out.println(&amp;quot;Specification version = &amp;quot; + p.getSpecificationVersion());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get full package name ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
public class Main {&lt;br /&gt;
  public static String getPackageName(Class c) {&lt;br /&gt;
    String fullyQualifiedName = c.getName();&lt;br /&gt;
    int lastDot = fullyQualifiedName.lastIndexOf(&amp;quot;.&amp;quot;);&lt;br /&gt;
    if (lastDot == -1) {&lt;br /&gt;
      return &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    return fullyQualifiedName.substring(0, lastDot);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    System.out.println(getPackageName(java.awt.Frame.class));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get package by name ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    Package p = Package.getPackage(&amp;quot;java.lang&amp;quot;);&lt;br /&gt;
    System.out.println(&amp;quot;Name = &amp;quot; + p.getName());&lt;br /&gt;
    System.out.println(&amp;quot;Implementation title = &amp;quot; + p.getImplementationTitle());&lt;br /&gt;
    System.out.println(&amp;quot;Implementation vendor = &amp;quot; + p.getImplementationVendor());&lt;br /&gt;
    System.out.println(&amp;quot;Implementation version = &amp;quot; + p.getImplementationVersion());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*Name = java.lang&lt;br /&gt;
Implementation title = Java Runtime Environment&lt;br /&gt;
Implementation vendor = Sun Microsystems, Inc.&lt;br /&gt;
Implementation version = 1.6.0_02&lt;br /&gt;
 */&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get package name of a class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
import java.util.Date;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Date date = new Date();&lt;br /&gt;
    Package pack = date.getClass().getPackage();&lt;br /&gt;
    String packageName = pack.getName();&lt;br /&gt;
    System.out.println(&amp;quot;Package Name = &amp;quot; + packageName);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get Package Names From Dir ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * Licensed to the Apache Software Foundation (ASF) under one&lt;br /&gt;
 * or more contributor license agreements. See the NOTICE file&lt;br /&gt;
 * distributed with this work for additional information&lt;br /&gt;
 * regarding copyright ownership. The ASF licenses this file&lt;br /&gt;
 * to you under the Apache License, Version 2.0 (the&lt;br /&gt;
 * &amp;quot;License&amp;quot;); you may not use this file except in compliance&lt;br /&gt;
 * with the License. You may obtain a copy of the License at&lt;br /&gt;
 *&lt;br /&gt;
 * http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 *&lt;br /&gt;
 * Unless required by applicable law or agreed to in writing,&lt;br /&gt;
 * software distributed under the License is distributed on an&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&lt;br /&gt;
 * KIND, either express or implied. See the License for the&lt;br /&gt;
 * specific language governing permissions and limitations&lt;br /&gt;
 * under the License.&lt;br /&gt;
 */&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
public final class ReflectionUtil {&lt;br /&gt;
  private static void getPackageNamesFromDir(File base, File dir, List&amp;lt;String&amp;gt; pkgs) {&lt;br /&gt;
    boolean foundClass = false;&lt;br /&gt;
    for (File file : dir.listFiles()) {&lt;br /&gt;
      if (file.isDirectory()) {&lt;br /&gt;
        getPackageNamesFromDir(base, file, pkgs);&lt;br /&gt;
      } else if (!foundClass &amp;amp;&amp;amp; file.getName().endsWith(&amp;quot;.class&amp;quot;)) {&lt;br /&gt;
        foundClass = true;&lt;br /&gt;
        String pkg = &amp;quot;&amp;quot;;&lt;br /&gt;
        file = dir;&lt;br /&gt;
        while (!file.equals(base)) {&lt;br /&gt;
          if (!&amp;quot;&amp;quot;.equals(pkg)) {&lt;br /&gt;
            pkg = &amp;quot;.&amp;quot; + pkg;&lt;br /&gt;
          }&lt;br /&gt;
          pkg = file.getName() + pkg;&lt;br /&gt;
          file = file.getParentFile();&lt;br /&gt;
        }&lt;br /&gt;
        if (!pkgs.contains(pkg)) {&lt;br /&gt;
          pkgs.add(pkg);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private static String getPackageName(String clzName) {&lt;br /&gt;
    if (clzName.indexOf(&amp;quot;/&amp;quot;) == -1) {&lt;br /&gt;
      return null;&lt;br /&gt;
    }&lt;br /&gt;
    String packageName = clzName.substring(0, clzName.lastIndexOf(&amp;quot;/&amp;quot;));&lt;br /&gt;
    return packageName.replace(&amp;quot;/&amp;quot;, &amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== getPackage() returns null for a class in the unnamed package ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    Class cls = MyClass.class;&lt;br /&gt;
    Package pkg = cls.getPackage(); // null&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyClass{}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== getPackage() returns null for a primitive type or array ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    Package pkg = int.class.getPackage(); // null&lt;br /&gt;
    pkg = int[].class.getPackage(); // null&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get the class name with or without the package ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
public class Main {&lt;br /&gt;
  public static String getClassName(Class c) {&lt;br /&gt;
    String className = c.getName();&lt;br /&gt;
    int firstChar;&lt;br /&gt;
    firstChar = className.lastIndexOf(&amp;quot;.&amp;quot;) + 1;&lt;br /&gt;
    if (firstChar &amp;gt; 0) {&lt;br /&gt;
      className = className.substring(firstChar);&lt;br /&gt;
    }&lt;br /&gt;
    return className;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    System.out.println(getClassName(java.awt.Frame.class));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting the Package of a Class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    Class cls = java.lang.String.class;&lt;br /&gt;
    Package pkg = cls.getPackage();&lt;br /&gt;
    String name = pkg.getName(); // java.lang&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Utils ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
/**&lt;br /&gt;
 * Licensed to the Apache Software Foundation (ASF) under one&lt;br /&gt;
 * or more contributor license agreements. See the NOTICE file&lt;br /&gt;
 * distributed with this work for additional information&lt;br /&gt;
 * regarding copyright ownership. The ASF licenses this file&lt;br /&gt;
 * to you under the Apache License, Version 2.0 (the&lt;br /&gt;
 * &amp;quot;License&amp;quot;); you may not use this file except in compliance&lt;br /&gt;
 * with the License. You may obtain a copy of the License at&lt;br /&gt;
 *&lt;br /&gt;
 * http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 *&lt;br /&gt;
 * Unless required by applicable law or agreed to in writing,&lt;br /&gt;
 * software distributed under the License is distributed on an&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&lt;br /&gt;
 * KIND, either express or implied. See the License for the&lt;br /&gt;
 * specific language governing permissions and limitations&lt;br /&gt;
 * under the License.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.HashSet;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
import java.util.StringTokenizer;&lt;br /&gt;
&lt;br /&gt;
public final class PackageUtils {&lt;br /&gt;
    &lt;br /&gt;
    private static final Set&amp;lt;String&amp;gt; KEYWORDS = new HashSet&amp;lt;String&amp;gt;(Arrays&lt;br /&gt;
        .asList(new String[] {&amp;quot;abstract&amp;quot;, &amp;quot;boolean&amp;quot;, &amp;quot;break&amp;quot;, &amp;quot;byte&amp;quot;, &amp;quot;case&amp;quot;, &amp;quot;catch&amp;quot;, &amp;quot;char&amp;quot;, &amp;quot;class&amp;quot;,&lt;br /&gt;
                              &amp;quot;const&amp;quot;, &amp;quot;continue&amp;quot;, &amp;quot;default&amp;quot;, &amp;quot;do&amp;quot;, &amp;quot;double&amp;quot;, &amp;quot;else&amp;quot;, &amp;quot;extends&amp;quot;, &amp;quot;final&amp;quot;,&lt;br /&gt;
                              &amp;quot;finally&amp;quot;, &amp;quot;float&amp;quot;, &amp;quot;for&amp;quot;, &amp;quot;goto&amp;quot;, &amp;quot;if&amp;quot;, &amp;quot;implements&amp;quot;, &amp;quot;import&amp;quot;, &amp;quot;instanceof&amp;quot;,&lt;br /&gt;
                              &amp;quot;int&amp;quot;, &amp;quot;interface&amp;quot;, &amp;quot;long&amp;quot;, &amp;quot;native&amp;quot;, &amp;quot;new&amp;quot;, &amp;quot;package&amp;quot;, &amp;quot;private&amp;quot;, &amp;quot;protected&amp;quot;,&lt;br /&gt;
                              &amp;quot;public&amp;quot;, &amp;quot;return&amp;quot;, &amp;quot;short&amp;quot;, &amp;quot;static&amp;quot;, &amp;quot;strictfp&amp;quot;, &amp;quot;super&amp;quot;, &amp;quot;switch&amp;quot;,&lt;br /&gt;
                              &amp;quot;synchronized&amp;quot;, &amp;quot;this&amp;quot;, &amp;quot;throw&amp;quot;, &amp;quot;throws&amp;quot;, &amp;quot;transient&amp;quot;, &amp;quot;try&amp;quot;, &amp;quot;void&amp;quot;,&lt;br /&gt;
                              &amp;quot;volatile&amp;quot;, &amp;quot;while&amp;quot;, &amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;, &amp;quot;null&amp;quot;, &amp;quot;assert&amp;quot;, &amp;quot;enum&amp;quot;}));&lt;br /&gt;
    &lt;br /&gt;
    private PackageUtils() {&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    static String getPackageName(String className) {&lt;br /&gt;
        int pos = className.lastIndexOf(&amp;quot;.&amp;quot;);&lt;br /&gt;
        if (pos != -1) {&lt;br /&gt;
            return className.substring(0, pos);&lt;br /&gt;
        } else {&lt;br /&gt;
            return &amp;quot;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public static String getPackageName(Class&amp;lt;?&amp;gt; clazz) {&lt;br /&gt;
        String className = clazz.getName();&lt;br /&gt;
        if (className.startsWith(&amp;quot;[L&amp;quot;)) {&lt;br /&gt;
            className = className.substring(2);&lt;br /&gt;
        }&lt;br /&gt;
        return getPackageName(className);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public static String parsePackageName(String namespace, String defaultPackageName) {&lt;br /&gt;
        String packageName = (defaultPackageName != null &amp;amp;&amp;amp; defaultPackageName.trim().length() &amp;gt; 0)&lt;br /&gt;
            ? defaultPackageName : null;&lt;br /&gt;
        if (packageName == null) {&lt;br /&gt;
            packageName = getPackageNameByNameSpaceURI(namespace);&lt;br /&gt;
        }&lt;br /&gt;
        return packageName;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public static String getPackageNameByNameSpaceURI(String nameSpaceURI) {&lt;br /&gt;
        int idx = nameSpaceURI.indexOf(&amp;quot;:&amp;quot;);&lt;br /&gt;
        String scheme = &amp;quot;&amp;quot;;&lt;br /&gt;
        if (idx &amp;gt;= 0) {&lt;br /&gt;
            scheme = nameSpaceURI.substring(0, idx);&lt;br /&gt;
            if (&amp;quot;http&amp;quot;.equalsIgnoreCase(scheme) || &amp;quot;urn&amp;quot;.equalsIgnoreCase(scheme)) {&lt;br /&gt;
                nameSpaceURI = nameSpaceURI.substring(idx + 1);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;String&amp;gt; tokens = tokenize(nameSpaceURI, &amp;quot;/: &amp;quot;);&lt;br /&gt;
        if (tokens.size() == 0) {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        if (tokens.size() &amp;gt; 1) {&lt;br /&gt;
            String lastToken = tokens.get(tokens.size() - 1);&lt;br /&gt;
            idx = lastToken.lastIndexOf(&amp;quot;.&amp;quot;);&lt;br /&gt;
            if (idx &amp;gt; 0) {&lt;br /&gt;
                lastToken = lastToken.substring(0, idx);&lt;br /&gt;
                tokens.set(tokens.size() - 1, lastToken);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        String domain = tokens.get(0);&lt;br /&gt;
        idx = domain.indexOf(&amp;quot;:&amp;quot;);&lt;br /&gt;
        if (idx &amp;gt;= 0) {&lt;br /&gt;
            domain = domain.substring(0, idx);&lt;br /&gt;
        }&lt;br /&gt;
        List&amp;lt;String&amp;gt; r = reverse(tokenize(domain, &amp;quot;urn&amp;quot;.equals(scheme) ? &amp;quot;.-&amp;quot; : &amp;quot;.&amp;quot;));&lt;br /&gt;
        if (&amp;quot;www&amp;quot;.equalsIgnoreCase(r.get(r.size() - 1))) {&lt;br /&gt;
            // remove leading www&lt;br /&gt;
            r.remove(r.size() - 1);&lt;br /&gt;
        }&lt;br /&gt;
        // replace the domain name with tokenized items&lt;br /&gt;
        tokens.addAll(1, r);&lt;br /&gt;
        tokens.remove(0);&lt;br /&gt;
        // iterate through the tokens and apply xml-&amp;gt;java name algorithm&lt;br /&gt;
        for (int i = 0; i &amp;lt; tokens.size(); i++) {&lt;br /&gt;
            // get the token and remove illegal chars&lt;br /&gt;
            String token = tokens.get(i);&lt;br /&gt;
            token = removeIllegalIdentifierChars(token);&lt;br /&gt;
            // this will check for reserved keywords&lt;br /&gt;
            if (containsReservedKeywords(token)) {&lt;br /&gt;
                token = &amp;quot;_&amp;quot; + token;&lt;br /&gt;
            }&lt;br /&gt;
            tokens.set(i, token.toLowerCase());&lt;br /&gt;
        }&lt;br /&gt;
        // concat all the pieces and return it&lt;br /&gt;
        return combine(tokens, &amp;quot;.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    private static List&amp;lt;String&amp;gt; tokenize(String str, String sep) {&lt;br /&gt;
        StringTokenizer tokens = new StringTokenizer(str, sep);&lt;br /&gt;
        List&amp;lt;String&amp;gt; r = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
        while (tokens.hasMoreTokens()) {&lt;br /&gt;
            r.add(tokens.nextToken());&lt;br /&gt;
        }&lt;br /&gt;
        return r;&lt;br /&gt;
    }&lt;br /&gt;
    private static &amp;lt;T&amp;gt; List&amp;lt;T&amp;gt; reverse(List&amp;lt;T&amp;gt; a) {&lt;br /&gt;
        List&amp;lt;T&amp;gt; r = new ArrayList&amp;lt;T&amp;gt;();&lt;br /&gt;
        for (int i = a.size() - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
            r.add(a.get(i));&lt;br /&gt;
        }&lt;br /&gt;
        return r;&lt;br /&gt;
    }&lt;br /&gt;
    private static String removeIllegalIdentifierChars(String token) {&lt;br /&gt;
        StringBuffer newToken = new StringBuffer();&lt;br /&gt;
        for (int i = 0; i &amp;lt; token.length(); i++) {&lt;br /&gt;
            char c = token.charAt(i);&lt;br /&gt;
            if (i == 0 &amp;amp;&amp;amp; !Character.isJavaIdentifierStart(c)) {&lt;br /&gt;
                // prefix an &amp;quot;_&amp;quot; if the first char is illegal&lt;br /&gt;
                newToken.append(&amp;quot;_&amp;quot; + c);&lt;br /&gt;
            } else if (!Character.isJavaIdentifierPart(c)) {&lt;br /&gt;
                // replace the char with an &amp;quot;_&amp;quot; if it is illegal&lt;br /&gt;
                newToken.append(&amp;quot;_&amp;quot;);&lt;br /&gt;
            } else {&lt;br /&gt;
                // add the legal char&lt;br /&gt;
                newToken.append(c);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return newToken.toString();&lt;br /&gt;
    }&lt;br /&gt;
    private static String combine(List r, char sep) {&lt;br /&gt;
        StringBuilder buf = new StringBuilder(r.get(0).toString());&lt;br /&gt;
        for (int i = 1; i &amp;lt; r.size(); i++) {&lt;br /&gt;
            buf.append(sep);&lt;br /&gt;
            buf.append(r.get(i));&lt;br /&gt;
        }&lt;br /&gt;
        return buf.toString();&lt;br /&gt;
    }&lt;br /&gt;
    private static boolean containsReservedKeywords(String token) {&lt;br /&gt;
        return KEYWORDS.contains(token);&lt;br /&gt;
    }&lt;br /&gt;
    public static String getNamespace(String packageName) {&lt;br /&gt;
        if (packageName == null || packageName.length() == 0) {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        StringTokenizer tokenizer = new StringTokenizer(packageName, &amp;quot;.&amp;quot;);&lt;br /&gt;
        String[] tokens;&lt;br /&gt;
        if (tokenizer.countTokens() == 0) {&lt;br /&gt;
            tokens = new String[0];&lt;br /&gt;
        } else {&lt;br /&gt;
            tokens = new String[tokenizer.countTokens()];&lt;br /&gt;
            for (int i = tokenizer.countTokens() - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
                tokens[i] = tokenizer.nextToken();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        StringBuffer namespace = new StringBuffer(&amp;quot;http://&amp;quot;);&lt;br /&gt;
        String dot = &amp;quot;&amp;quot;;&lt;br /&gt;
        for (int i = 0; i &amp;lt; tokens.length; i++) {&lt;br /&gt;
            if (i == 1) {&lt;br /&gt;
                dot = &amp;quot;.&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            namespace.append(dot + tokens[i]);&lt;br /&gt;
        }&lt;br /&gt;
        namespace.append(&amp;quot;/&amp;quot;);&lt;br /&gt;
        return namespace.toString();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show the Packages ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.ru/, 1996-2002.&lt;br /&gt;
 * All rights reserved. Software written by Ian F. Darwin and others.&lt;br /&gt;
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 * 1. Redistributions of source code must retain the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 * 2. Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *    documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS&amp;quot;&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED&lt;br /&gt;
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS&lt;br /&gt;
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR&lt;br /&gt;
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF&lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS&lt;br /&gt;
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br /&gt;
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;br /&gt;
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 * &lt;br /&gt;
 * Java, the Duke mascot, and all variants of Sun&amp;quot;s Java &amp;quot;steaming coffee&lt;br /&gt;
 * cup&amp;quot; logo are trademarks of Sun Microsystems. Sun&amp;quot;s, and James Gosling&amp;quot;s,&lt;br /&gt;
 * pioneering role in inventing and promulgating (and standardizing) the Java &lt;br /&gt;
 * language and environment is gratefully acknowledged.&lt;br /&gt;
 * &lt;br /&gt;
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&amp;amp;T, for&lt;br /&gt;
 * inventing predecessor languages C and C++ is also gratefully acknowledged.&lt;br /&gt;
 */&lt;br /&gt;
/**&lt;br /&gt;
 * Show the Packages. Requires JDK1.2.&lt;br /&gt;
 * @author Ian F. Darwin, http://www.darwinsys.ru/&lt;br /&gt;
 * @version $Id: Packages.java,v 1.4 2004/02/09 03:33:51 ian Exp $&lt;br /&gt;
 */&lt;br /&gt;
public class Packages {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    //+&lt;br /&gt;
    java.lang.Package[] all = java.lang.Package.getPackages();&lt;br /&gt;
    for (int i=0; i&amp;lt;all.length; i++)&lt;br /&gt;
      System.out.println(all[i]);&lt;br /&gt;
    //-&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>